経路途中にNAT機器があり、異なるアドレスから応答が返ってきた場合、Pingの結果がどうなるのかを検証します。
ネットワーク構成
CMLで下記のネットワークを構築し検証します。
各機器の設定
検証
Router1(192.168.1.1)→Router2(172.16.1.1)へのPing
Router1からRouter2へPingを実施します。
問題なくPingが通ります。
Router2(172.16.1.1)→Router1(1.1.1.1)へのPing
Router2からRouter1のNATアドレス(1.1.1.1)にPingを実施します。
問題なくPingが通ります。
Router2(172.16.1.1)→Router1(192.168.1.1)へのPing ※※異なるアドレスから応答が返ってくるパターン※※
Router2からRouter1の実アドレス(192.168.1.1)にPingを実施します。この場合、戻り通信のみ192.168.1.1が1.1.1.1にNATされるため、異なるアドレスから応答が返ってきたように見えるはずです。Ping結果はどうなるのでしょうか?
問題なくPingが通りました。
Router2とNAT-Routerの間でパケットキャプチャを取得して確認してみます。
ICMP echo requestの中身は下記の通りです。
ICMP echo request
送信元IP:172.16.1.1
送信先IP:192.168.1.1
Type:8
Identifier:8
Sequence number:0
ICMP echo replyの中身は下記の通りです。
ICMP echo reply
送信元IP:192.168.1.1
送信先IP:1.1.1.1
Type:0
Identifier:8
Sequence number:0
異なるアドレスから応答が返ってきていますが、”Identifier”と”Sequence number”の値が合致しているため、Ciscoルーターで実装されているPingの仕様としては問題なしと判断されるようです。
※Wireshark上では、IPアドレスもPing応答OKの判断材料としており、”no response found!”と表示されています。
ICMPのRFCを確認すると下記の記述があります。
The identifier and sequence number may be used by the echo sender to aid in matching the replies with the requests.
rfc792 – IETF Tools
The destination returns these same values in the reply.
識別子とシーケンス番号は、エコー送信者が応答と要求の照合を支援するために使用できます。
宛先は、これらの同じ値を応答で返します。
これで、PingがOKとなる条件(異なるアドレスから応答が返ってきた場合)の説明は完了です!