この記事に基づいて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レイヤーのみを使用することができました(ヘアピンをまったく構成していない状態で)。
おそらく関連質問
ただし、この場合、パブリックIPに向かうすべての(ローカル)トラフィックは単一のシステムにルーティングされます。私の場合は、パブリックポートに基づいて別のコンピュータにパケットをルーティングしたいと思います。