実際、あなたは(一種の)
それは少し複雑で、常に機能しませんが、ここにそれがどのように機能するかの要点があります:
与えられた:
パブリックIP 1.2.3.4のルータラ
プライベートIP ABCDを備えたPC1(ルーターAの後ろ)
パブリックIP 5.6.7.8を備えたRouterb
プライベートIP EFGHを備えたPC2(ルーターBの後ろ)
今、理想的な解決策を与えられた(つまり、パットなし)...
ステップA:
Routerb(4.5.6.7)の公開IPに、ポート(この例では10000)のPC1からのメッセージを送信します。これにより、ABCD:10000-> 4.5.6.7:10000はNATで、PATはルータを登録します。 Routerbはこのパケットを破棄します(リクエストされていなかったために予想どおり)。
ステップB:同時に、同じポート(10000)で、PC2からルーターA(1.2.3.4)のパブリックIPにパケットを継続的に送信します。これにより、eGFH:10000-> 1.2.3.4:10000がRouterbのNATとPATに登録されます。
ステップC:
さて、ここが魔法が起こる場所です:
PC2は絶えずパケットをルータラに送信しているため、Routerbで「穴」を開いたままにして、応答が戻ってきます。 PC1がRouterbに単一のパケットを送信すると、Routerbに応答として表示されるため、PC2に転送されます。 PC2がこの「応答」を受信したら、もう1つのパケットが消えることを確認し、連続パケットの送信を停止します。この最後のパケットは、PC1への「応答」として機能し、ステップAとVoilaで作成された「ホール」を通過します!これでNATは移動します。 「穴」を開いたままにしておくために、1分ほどの方向に1つのパケットを送信する必要があります。
注:これは、ConnectionLessであるため、UDPでのみ動作します(ドロップされたパケットは問題ありません)。
これで、ほとんどすべてのルーターがPATを使用しているため、ほとんどのルーターに「応答する」ポートを「推測」する必要があります。
その範囲でいくつか試してみてください(応答が得られるまで-10〜 +10)
残りのルーターは、パットでランダムです。もしそうなら、あなたはねじ込まれています...他の方向を試してください(つまり、接続を他の方向に最初に開始します)。それが失敗した場合、接続できません...ごめんなさい)