iptables MASQUERADE는 수신 측에서 어떻게 작동합니까?

iptables MASQUERADE는 수신 측에서 어떻게 작동합니까?

나는 아직도 iptables 매뉴얼 페이지와 기타 문서를 읽고 질문과 답변을 파고들고 있습니다.

여기서 문제가 발생합니다. NAT를 설정할 때 다음과 같이 POSTROUTING 규칙을 사용합니다.

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

패킷이 해당 체인에 도달하면 내부 호스트가 인터넷 연결을 초기화해야 하는 것 같습니다. 그렇죠? 들어오는 트래픽이 동일한 경로를 통해 라우팅되고 체인에 도달하지 않습니까? 나 맞아?

답변1

POSTROUTING 체인은 시스템을 떠나는 모든 패킷, 심지어 로컬에서 생성된 패킷까지 검사합니다(PREROUTING을 생략하고 대신 OUTPUT을 사용함).

이 규칙은 나가는 트래픽으로 제한됩니다 eth0. "수신"은 라우팅되는 모든 트래픽을 나타냅니다(이를 POSTROUTING과 연관시키는 경우). 아마도 인터넷( eth0)의 트래픽을 언급하고 있을 것입니다. 일반적으로 들어오는 트래픽은 eth0시스템 외부로 전달되지 않습니다 eth0.

POSTROUTING은 나가는 트래픽에만 영향을 미칩니다(그리고 연결의 첫 번째 패킷에만 영향을 줍니다). 응답이 도착하면 eth0SNAT 연결의 일부로 인식되며 대상 주소(및 포트)는 자동으로 원래 값(대상이 덮어쓴 값 MASQUERADE)으로 변환됩니다.

답변2

iptables에서는 연결의 첫 번째 패킷만 nat 테이블의 체인에 도달합니다(다른 테이블의 체인과 달리). 기존 연결과 관련된 패킷은 첫 번째 패킷을 처리할 때 설정된 매핑을 기반으로 자동으로 변환됩니다.

기존 연결과 일치하지 않고 NAT 테이블의 규칙과 일치하지 않는 수신 패킷이 도착하는 경우 NAT 없이 처리됩니다(여기에는 전달, 프로토콜 스택에 로컬로 전달 또는 폐기가 포함될 수 있음). 다른 테이블의 대상 IP 및 iptables 규칙).

관련 정보