SNAT와 Masquerade의 실제 차이점이 무엇인지 궁금합니다.
로컬 네트워크에서 인터넷 연결을 공유하려면 SNAT 또는 Masquerade를 선택해야 합니까?
답변1
대상에는 SNAT
나가는 모든 패킷에 적용할 IP 주소를 제공해야 합니다. 대상을 MASQUERADE
사용하면 인터페이스를 제공할 수 있으며 해당 인터페이스의 모든 주소는 나가는 모든 패킷에 적용되는 주소입니다. 또한 SNAT
커널의 연결 추적을 사용하면 인터페이스가 닫히고 복원될 때 모든 연결을 추적합니다. 이는 대상의 경우에는 해당되지 않습니다 MASQUERADE
.
좋은 문서에는 다음이 포함됩니다.Netfilter 웹사이트의 HOWTO그리고iptables
매뉴얼 페이지.
답변2
SNAT
그리고 체인 내의 테이블 MASQUERADE
에 대해 동일한 소스 NAT 작업을 수행합니다 .nat
POSTROUTING
차이점
MASQUERADE
하다아니요--to-source
동적으로 할당된 IP와 함께 사용하도록 설계되었기 때문에 필수입니다 .SNAT
일하다오직고정 IP를 사용하세요. 그래서 필요합니다.--to-source
MASQUERADE
추가 오버헤드가 있고 대상이 패킷에 부딪힐 때마다 사용할 IP 주소를 확인해야 하기SNAT
때문에 속도가 느려집니다.MASQUERADE
노트MASQUERADE
: VPC CIDR 내에 프라이빗 IP가 있는 VPC의 AWS EC2 인스턴스에 대한 일반적인 사용 사례(예: 퍼블릭 서브넷에 있다고 가정 10.10.1.0/24
) - 10.10.1.100
인터넷과 통신하기 위해 연결된 퍼블릭 IP도 있습니다. ), 프라이빗 IP는 이를 통해 1:1 NAT(AWS 네트워크 인프라 매직)를 수행합니다. 퍼블릭 IP는 인스턴스 전원을 껐다 켠 후 변경될 수 있습니다. 이 사용 사례에서는 EIP가 아닌 경우 중지한 후 시작하는 것이 MASQUERADE
더 나은 선택입니다.
중요: 고정 IP가 있는 대상을 사용할 수 있지만 MASQUERADE
추가 오버헤드에 유의하세요.
인용하다
답변3
짧은 답변: SNAT 사용
설명: 방금 내 Raspbian 라우터에서 가장 규칙을 제거하려고 시도했지만(인터페이스 IP 주소가 192.168.8.2이고 고정된 eth0을 통해 다른 라우터와 통신함) 인터넷 공유가 계속 작동합니다. 내가 시도한 명령은 다음과 같습니다.
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.8.2