NATヘアピン/ループバックを実装するためにtcpに穴を開ける

NATヘアピン/ループバックを実装するためにtcpに穴を開ける

この記事に基づいてPythonホールパンチングパッケージをテストしようとしています。https://bford.info/pub/net/p2pnat/

ホールパンチングプロセスは複数のネットワーク設定で機能しますが、エンドユースケース(マルチレベルNATの背後にある3.5ピア)でのみ問題が発生しました。

次のネットワークがあるとします。

                  | 
                  | 11.0.0.1
             ___[eth0]___
               **NAT0**
             ___[eth1]___
                  | 192.168.0.1
                  |
               (switch)
                /    \
               /      \
  192.168.0.2 /        \ 192.168.0.3
        __[eth0]__   __[eth0]__
         **NATA**     **NATB**
        __[eth1]__   __[eth1]__
192.168.10.1|            |192.168.11.1
            |            |
192.168.10.2|            |192.168.11.2
        __[eth0]__   __[eth0]__
        **NodeA**    **NodeB**

ヘアピンを追加したいNAT0なぜなら、これが問題を引き起こすと思うからです。しかし、PAT(= NAT)のパブリックポートがわからないので、どのようにPREROUTING設定するのかわかりません。POSTROUTINGしたがって、どのパケットがそのシステムに属しているかはわかりません。ノースタワーまたはNATB-d 11.0.0.1これでどのパブリックポートが属しているかを知りたい場合は、宛先IPを確認してください。ノースタワーそしてNATBパッケージを正しいローカルコンピュータに送信できます。

興味深いことに、単一のNATレイヤーのみを使用することができました(ヘアピンをまったく構成していない状態で)。

おそらく関連質問

NAT反射(NATループバック)はどのように機能しますか?

ただし、この場合、パブリックIPに向かうすべての(ローカル)トラフィックは単一のシステムにルーティングされます。私の場合は、パブリックポートに基づいて別のコンピュータにパケットをルーティングしたいと思います。

ベストアンサー1

おすすめ記事