DNATにおけるPing応答の観察

DNATにおけるPing応答の観察

次のような状況で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がpingするマシン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

あなたの間違いは、それを意味するようにするために3つのシステムが必要であるということです。

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

関連情報