DNAT에서 핑 응답 관찰

DNAT에서 핑 응답 관찰

다음과 같은 상황에서 DNAT의 메커니즘을 이해하려고 하다가 혼란스럽습니다.

내 이해:

DNAT = 목적지 네트워크 주소 변환(Destination Network Address Translation): 들어오는 패킷의 목적지 주소를 목적지 x로 변환하는 기능.

DNAT 복구 경로를 이해하는 데 문제가 있습니다.

예: IP 주소 x1을 가진 컴퓨터(A)가 있고 이 컴퓨터(대상 y1)에 도착하는 모든 연결/패킷이 IP 주소 z1을 가진 다른 컴퓨터(B)로 다시 라우팅되기를 원합니다.

그래서 다음과 같은 새로운 NAT 규칙을 추가했습니다.

iptables -t nat -A PREROUTING -s x1 -d y1 -j DNAT --to-destination z1.

머신 A에서 테스트:ping -I x1 y1

머신 A에서 실행 하면 tcpdump -i eth6 icmpz1 대신 IP y1에서 응답을 받게 됩니까? 아니면 서브넷 마스크를 기반으로 하는 NAT가 아닌 것인가요?

모니터링할 때 tcpdump -i eth6 host z1들어오는 핑이나 패킷이 없습니다. 누군가 이 상황과 나의 이해를 명확히 할 수 있습니까?

또한 패킷이 로컬로 변환되는 경우 이 tcpdump를 만들 수 있습니까?

답변1

전달을 위해평평한요청할 때 다음과 같이 ICMP 프로토콜을 명시적으로 지정해야 합니다.

iptables -t nat -I PREROUTING -d <ip y1> -p icmp -j DNAT --to-destination <ip z1>

그러나 PREROUTING머신 자체에서는 실행되지 않습니다. 작동하려면 머신 A가 핑하는 머신 B와 사용자 사이에 있어야 합니다.

YOU(ip x1) <---internet---> (ip y1) Machine A(ip z0) <---NATed LAN---> (ip z1)Machine B

이것은 매력처럼 작동합니다.

내 컴퓨터( )에서 y1을 ping할 때 IP 주소 y1( ) 및 z0( )을 사용하는 10.0.0.1컴퓨터 A에서 나타나는 모습은 다음과 같습니다 . 머신 B(z1)의 IP 주소:10.10.0.7310.0.0.3210.10.0.1

16:23:54.181828 IP 10.0.0.32 > 10.0.0.1: ICMP echo request, id 25492, seq 0, length 64
16:23:54.181860 IP 10.10.0.73 > 10.10.0.1: ICMP echo request, id 25492, seq 0, length 64
16:23:54.182788 IP 10.10.0.1 > 10.10.0.73: ICMP echo reply, id 25492, seq 0, length 64
16:23:54.182806 IP 10.0.0.1 > 10.0.0.32: ICMP echo reply, id 25492, seq 0, length 64

답변2

당신의 실수는 그것을 의미있게 만들기 위해 세 가지 시스템이 필요하다는 것입니다.

A -----> B

로 교체해야합니다

A -----> B -----> C

이 경우 패킷이 외부에서 시스템으로 전달되므로 PREROUTING체인을 열어야 합니다 .B

그러나 패킷이 생성된 동일한 시스템에서 사용하는 경우 해당 패킷은 로컬에서 생성된 패킷이므로 iptables전혀 통과되지 않습니다. PREROUTING두 시스템을 모두 사용하여 다음을 수행할 수 있습니다.

A -----> B

로 교체해야합니다

A -----> C

( C테스트 DNAT에 응답이 필요하지 않은 경우에는 존재할 필요가 없습니다.)

이 경우 다음과 같은 규칙이 필요합니다.

 iptables -t nat -A OUTPUT -d y1 -j DNAT --to-destination z1

하지만 목적지 주소를 자신의 주소로 변경하면 패킷이 eth6전혀 도착하지 않습니다. 당신은 그것을 볼 필요가 있습니다 tcpdump -i lo -n.

관련 정보