두 홉 떨어진 트래픽에 대한 iptables MASQUERADE 및 SNAT

두 홉 떨어진 트래픽에 대한 iptables MASQUERADE 및 SNAT

나는 이 규칙을 성공적으로 사용했습니다.

iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

로컬 10.0.2.0 서브넷의 NAT 트래픽을 인터넷(eno1의 원격 측)으로 전달합니다.

더 멀리 떨어져 있는 192.168.3.0 서브넷의 트래픽(192.168.3 네트워크의 라우터를 통해 전송됨)은 이 Linux 라우터를 통해 인터넷으로 가는 도중 NAT를 통과하지 않습니다. 대신 나가는 패킷은 192.168.3.x 주소를 유지하므로 인터넷 서버로부터 응답을 받지 못합니다.

MASQUERADE 규칙을 다음으로 바꾸십시오.

iptables -t nat -A POSTROUTING -o eno1 -j SNAT --to 1.2.3.4

(여기서 1.2.3.4는 eno1에 있는 Linux 라우터의 인터넷 주소입니다.) 문제가 해결되었습니다.

iptables MASQUERADE는 여기의 경우처럼 Linux 라우터의 로컬 네트워크에서 들어오는 패킷만 다시 작성해야 합니까? 아니면 다른 설명이 있나요?

답변1

흥미롭다니까 man iptables-extensions.

매스커레이딩은 패킷이 시작된 인터페이스의 IP 주소에 대한 매핑을 지정하는 것과 동일하지만 인터페이스가 다운되면 연결을 잊어버릴 수도 있습니다.

따라서 인터페이스에서 를 가져온 경우 MASQUERADE이 두 wrt의 차이점을 알 수 있다는 사실에 놀랐습니다. 전달된 패킷.SNAT--to

또한 내 컴퓨터의 네트워크 네임스페이스에서 패킷을 전달하는 데 사용했는데 MASQUERADE제대로 작동합니다.

그래서 내 첫 번째 생각은 당신이 다른 효과를 보고 있다는 것입니다. 실제로 차이를 일으키는 것이 다른 것이 아니라 다른 규칙인지 다시 확인하겠습니다.

관련 정보