アクセスできないルーター上の Web サーバーのポートをポート転送したいと考えています。UPNP が有効になっているとは思えません。
2 に答える
実際、できます(ちょっと)
少し複雑で、常に機能するわけではありませんが、機能の要点は次のとおりです。
与えられた:
パブリック IP 1.2.3.4 の RouterA
プライベート IP abcd を持つ PC1 (ルーター A の背後)
パブリック IP 5.6.7.8 の RouterB
プライベート IP efgh を持つ PC2 (ルーター B の背後)
さて、理想的な解決策(つまり、PATなし)が与えられました...
ステップ A:
任意のポート (この例では 10000) の PC1 から RouterB のパブリック IP (4.5.6.7) にメッセージを送信します。これにより、routerA の NAT と PAT に abcd:10000 -> 4.5.6.7:10000 が登録されます。RouterB はこのパケットを破棄します (要求されていないため、予想どおり)。
ステップ B: 同時に、PC2 からルーター A のパブリック IP (1.2.3.4) に、同じポート (10000) でパケットを連続して送信します。これにより、ルーター B の NAT および PAT に egfh:10000 -> 1.2.3.4:10000 が登録されます。
ステップ C:
さて、ここで魔法が起こります:
PC2 は常にパケットを RouterA に送信しているため、RouterB に応答が返されるように「穴」が開いたままになっています。PC1 が単一のパケットを RouterB に送信すると、RouterB には応答として表示されるため、PC2 に転送されます。PC2 がこの「応答」を受信したら、もう 1 つのパケットが送信されていることを確認し、連続したパケットの送信を停止します。この最後のパケットは、PC1 への「応答」として機能し、手順 A で作成された「穴」を通過します。これで、NAT トランスバーサルができました。「穴」を開いたままにするために、毎分または双方向に 1 つのパケットを送信するだけで済みます。
注: これはコネクションレスであるため、UDP でのみ機能します (ドロップされたパケットは問題ありません)。
現在、ほとんどすべてのルーターが PAT を使用しているため、ほとんどのルーターに「応答」するポートが +-10 (ieabcd:10000 -> 5.6.7.8:10010) のオフセットを行うことを「推測」する必要があります。
その範囲でいくつか試してみてください(応答が得られるまで-10から+10)
残りのルーターは PAT でランダムです。もしそうなら、あなたはめちゃくちゃです... 他の方向を試してください(つまり、他の方向の接続を開始します)。それが失敗した場合、接続できません...申し訳ありません)