我读到有许多类型的 NAT 可用,例如对称 NAT、全锥 NAT 等。如果我位于 NAT 后面,有什么方法可以找出我当前正在处理的 NAT 类型吗?
我使用基本的 iptables 规则并添加一张网卡,将自己的 Ubuntu 桌面设置为 NAT 机器。我使用了以下规则:
$ iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
$ iptables -t filter -A FORWARD --in-interface eth1 -j ACCEPT
有什么方法可以查看我的 NAT 表吗?
答案1
您可以使用 pystun 检查 nat 类型。这里https://pypi.python.org/pypi/pystun
$ pystun
NAT Type: Full Cone
External IP: <your-ip-here>
External Port: 54320
答案2
答案3
您可以使用stunclient
来自stuntman
(http://www.stunprotocol.org):
$ stunclient stun.stunprotocol.org --mode behavior
Binding test: success
Local address: 192.168.1.10:51593
Mapped address: 62.24.7.97:11610
Behavior test: success
Nat behavior: Address and Port Dependent Mapping
答案4
您可以运行iptables -S
转储当前加载到内核过滤表中的所有规则的列表。您可以选择添加一个-t
参数来指定要转储的特定表。
从man iptables
:
-S, --list-rules [chain]
Print all rules in the selected chain. If no chain is selected,
all chains are printed like iptables-save.Like every other
iptables command, it applies to the specified table (filter is
the default).
至于了解您作为客户端所使用的 NAT 类型,目前还没有现成的信息。您最多可以通过查看它对流量的影响来推断它的设置方式。