CentOS 6.3에서 pppd를 사용하여 PPPoE를 실행하는 데 문제가 있습니다.
CentOS 시스템은 NAT(양방향) 및 다양한 패킷 필터링을 수행하는 전용 라우터/게이트웨이입니다. LAN 및 인터넷 측 각각 eth0 및 eth1에 대해 별도의 네트워크 카드가 있습니다.
인터넷 측에는 DSL 모뎀이 있습니다. 모뎀은 NAT를 포함한 모든 작업을 자체적으로 수행하는 것을 좋아합니다. 이를 방지하기 위해 잘못된 계정 정보를 제공한 다음 CentOS 시스템에 PPPoE를 구현해야 했습니다.
CentOS 시스템에서 PPPoE를 실행하는 데 문제가 있고 인터넷 연결이 매우 불안정합니다. 클라이언트는 일부 웹사이트에 액세스할 수 있지만 다른 웹사이트에는 액세스할 수 없으며, 일부 웹페이지는 중간에 로드된 다음 항상 같은 위치에 나타나며, TCP 연결은 자주 재설정됩니다.
MTU 문제로 해결했습니다. MTU를 표준 1500에서 1492로 낮추면 LAN 측의 특정 클라이언트 시스템(모든 Windows)이 제대로 작동하도록 할 수 있습니다.
반면에 모뎀이 PPPoE 및 NAT를 수행하도록 허용하고 eth1에서 IP 및 DHCP 클라이언트를 활성화하고 ppp0 대신 eth1로 라우팅하도록 IP 필터링 스크립트를 설정하면 클라이언트는 MTU를 1500으로 설정해도 제대로 작동할 수 있습니다. 정상적인 일. (이 구성의 문제점은 이중 NAT가 성능에 영향을 미치고 인바운드 연결 라우팅을 더욱 까다롭게 만든다는 것입니다.)
DF를 사용한 Ping 테스트에서는 클라이언트를 이러한 방식으로 설정할 필요가 없음에도 불구하고 인터넷 바인딩을 위한 MTU가 실제로 여전히 1492로 제한되어 있음을 보여줍니다.
따라서 클라이언트가 일반적으로 경로 MTU 검색을 수행하는 것처럼 보이지만 pppd(또는 NetFilter)가 어떻게든 이를 방해하고 있는 것 같습니다.
저는 일반적으로 CentOS 시스템에 NetFilter(iptables)를 설정하여 모든 INPUT 및 OUTPUT 트래픽을 삭제합니다(시스템의 유일한 작업은 전달이기 때문입니다). 경로 MTU 검색이 ICMP 오류에 의존하는 경우를 대비하여 일시적으로 이러한 정책을 ACCEPT로 변경하려고 시도했지만 문제가 지속됩니다.
나는 PPPoE에 대한 경험이 전혀 없으며 누군가가 나에게 올바른 방향을 알려줄 수 있기를 바랐습니다. 감사해요!
답변1
첫째, PMTUd에는 ICMP가 필요합니다.전달됨트래픽을 보내는 시스템으로 전송됩니다. 그러나 RELATED,ESTABLISHED를 허용하면 필수 ICMP가 통과됩니다. 연결 추적 기능이 있는 NAT는 이를 올바른 시스템으로 반환합니다.
그러나 다음과 같은 마법의 iptables 라인을 찾고 있을 수도 있습니다.
iptables -t mangle -I FORWARD -p tcp -o ppp0 -j TCPMSS --set-mss 1452 # MTU-40 for IPv4
# use the correct outbound interface in place of ppp0
라우터가 이 작업을 자동으로 수행할 수 있습니다.