ping이 iptables/postrouting 규칙을 무시하는지 여부

ping이 iptables/postrouting 규칙을 무시하는지 여부

proxmox가 설치되어 있고 아웃바운드 연결(eth0)이 1개만 있는 서버가 있습니다.

머신 간 네트워킹을 활성화하기 위해 인터페이스 구성에 브리지(vmbr0)를 생성하고 Proxmox 네트워크 모델(하위 노드 NAT)에 따라 구성했습니다.

브리지는 IP를 소유하며 10.1.1.1내 이해에 따르면 로컬 네트워크와 외부 네트워크 사이의 게이트웨이 역할을 합니다.

이를 달성하려면 서버에서 다음 iptable 정책을 구현하십시오.

Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  10.1.1.0/24          anywhere
ACCEPT     all  --  anywhere             10.1.1.0/24

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  10.1.1.0/24          anywhere             to:x.x.x.x

서버에 설치되어 있고 브리지를 통해 연결된 가상 머신 중 하나에서 Google DNS 서버를 핑하면 ping 8.8.8.8가상 머신이 Google DNS 서버에서 핑 결과를 얻을 수 있으므로 NAT가 작동하는 것처럼 보입니다.

(nat는 다시 전체 서브넷(10.1.1.0/24)을 나타냅니다.)

이렇게 하면: ping -I vmbr0 8.8.8.8하지만 호스트에서는 ping 명령이 실패합니다. 이 ping 명령은 브리지 인터페이스를 사용하여 Google DNS 서버를 ping합니다. POSTROUTING 정책을 통해 Google DNS 서버와도 통신할 수 있을 것으로 예상됩니다.

즉, 다른 클라이언트가 브리지를 게이트웨이로 사용하면 인터넷에 연결할 수 있지만 인터페이스 자체가 나가는 인터페이스로 선택되면 경로를 찾을 수 없습니다.

따라서 이것은 내 질문을 불러일으킵니다. 인터페이스를 명시적으로 사용하면 포스트 라우팅 규칙을 건너뛰고 실제로 문제의 컴퓨터에서 라우팅을 위한 절대 끝점으로 간주됩니까?- in a sense: vmbr0 stays vmbr0 and never will be masqueraded to eth0 if you choose to ping over it -

답변1

man ping, 굵은 글씨:

-I 인터페이스
인터페이스는 다음과 같습니다.주소, 또는인터페이스 이름. 인터페이스가 다음과 같은 경우주소, 이는 다음을 설정합니다.소스 주소지정된 인터페이스 주소로. 인터페이스가 다음과 같은 경우인터페이스 이름, 이는 다음을 설정합니다.소스 인터페이스지정된 인터페이스에.

ping -I vmbr0문제는 시스템이 궁극적으로 올바른 인터페이스를 선택하도록 하는 것이 아니라 인터페이스를 강제로 사용하도록 하는 데 있습니다 ping -I 10.1.1.1.

또한 별 차이가 없더라도 nat/POSTROUTING(아래 참조), 귀하는아니요호스트에서 명령이 실행될 때 라우팅이 수행되므로 일부 체인(예: filter/FORWARD)이 적용되지 않을 수 있습니다(그러나 nat/POSTROUTING여전히 적용됩니다. 아래 참조). 대신 호스트에서 명령을 실행할 때 다른 결과가 나타날 수 있다는 점을 명심하십시오.라우팅됨VM은 올바른 ping 명령을 사용하는 경우에는 해당되지 않더라도 규칙에 따라 달라집니다.

이것일반 네트워크의 Netfilter 및 패킷 흐름OUTPUT회로도는 다른 체인을 통과한 후에도 로컬 프로세스에서 오는 패킷이 nat/POSTROUTING계속 통과되므로 패킷이 eth0이를 통과하더라도 여전히 SNAT 처리됨을 보여줍니다. 이는 다음을 사용하여 수행됩니다.ping -I 10.1.1.1 8.8.8.8

반면에 강제 인터페이스를 사용할 경우 를 ping -I vmbr0 8.8.8.8실행하면 tcpdump10.1.1.1 vmbr0부터 8.8.8.8까지의 ARP 요청이 응답되지 않는 것을 볼 수 있습니다.

마지막 질문에 대해: 예, 강제 라우팅은 패킷이 올바른 대상에 도달하는 것을 허용하지 않습니다. vmbr0SNAT/MASQUERADE는 절대 변장할 수 없습니다.패킷 IP, 인터페이스보다는 목적지까지의 경로에 따라 적용됩니다.

관련 정보