問題のNATデバイスがアウトバウンドICMPパケットを書き換える場合、ICMP NATトラバーサルはどのように動作すると考えられますか?ICMPホールパンチの欠陥?
ダイアグラム
=========================================================================================
| CLIENT | <---> | NAT-C | <---> { internet } <---> | NAT-S | <---> | SERVER |
=========================================================================================
19.19.19.19 (external addresses) 72.72.72.72
192.168.0.2 192.168.0.1 (internal addresses) 172.16.0.1 172.16.0.2
力学
ICMPのholepunchingの概要pwnat
で説明したように:
SERVER
にいくつかの他のホスト(例えば3.3.3.3
)にICMPエコー要求パケット(pingを)送りますNAT-S
に穴を開けてください。 CLIENT
が接続したい場合、SERVER
にルーティングされるはずのNAT-S
にICMP Time Exceededパケットを送信します。前記ルーティングが動作するためには、が最初に送信されることを期待する同じパケット(ICMPエコー3.3.3.3
)をその中に埋め込むことにより、CLIENT
はICMP時間超過パケットを構築する。
問題
それはそのICMPタイムにNAT-S
を残したのと同じ(ICMPエコー要求)パケットを埋め込むCLIENT
ニーズが回答を超過した場合、それはパケットのクエリIDを知っている必要があります。 しかし、このクエリIDはどのように知っていますか? RFC 3022 Section 2.2によると
、NAT-S
は、アウトバウンドICMPエコー要求に遭遇したとき、それはルート将来ICMPエコーSERVER
に同じクエリIDを返信することができるように、それはユニーク外部クエリIDにパケットのクエリIDフィールドを書き換えます。
上記の問題を考えると、pwnat
とICMPホールパンチの前提は無効で、動作するとは思われません。私はここに何かを逃していますか
ありがとうございます。