我尝试根据这篇文章测试一个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因为我认为这会导致问题。PREROUTING
但是我不明白如何配置,POSTROUTING
因为我不知道 PAT(=NAT) 的公共端口。因此我无法知道哪个数据包属于机器北塔或者NATB仅通过检查目标 IP-d 11.0.0.1
如果我现在想知道哪个公共端口属于北塔和NATB我能够将包发送到正确的本地计算机。
有趣的是,我能够让它仅使用单个 NAT 层(同时根本没有配置 Hairpin)。
可能相关的问题
然而,在这种情况下,所有以公共 IP 为目的地的(本地)流量都会被路由到一台机器。就我而言,我想根据公共端口将包路由到不同的计算机。