如何模拟不同的NAT行为(How to simulate different NAT behavio

2019-07-30 16:37发布

我使用的UDP和UDT上Holepunching工作。 对于最后的测试,我需要测试不同类型的NAT(对称,全锥形,受限克隆,端口受限NAT)的应用程序。

有没有我可以模拟这些任何方法? 我希望这里是某种虚拟盒设置的。 我可以用PC作为一个路由器,这样我可以根据我的需要配置?

一般来说,我们如何测试不同的网络条件下的应用?

Answer 1:

我想你已经回答了你自己的问题,使用VirtualBox虚拟(或VMware,Xen的,等..)。

我已经通过设置虚拟机的小型局域网成功地做到这事。 如果你正在寻找的软件作为虚拟机内部的路由器,我会在开始http://www.pfsense.org/ ,看看是否能满足您的需求。 这曾是一个易于安装的路由器/防火墙,用一个漂亮的网页管理接口,和所有的定制FreeBSD发行版本。

如果pfsense不适合您的需求,还有很多其他的Linux / BSD发行版,在那里,是专为这样的东西,你可以在虚拟机上安装的: http://en.wikipedia.org/wiki/List_of_router_or_firewall_distributions一个良好的名单:)(我听说过的OpenWRT和ClearOS好东西为好。)



Answer 2:

万一别人是要做到这一点, 该网站介绍了如何使用iptables来设置不同的NAT环境。

更新

因为我这样做,因为该链接被置于登录后面,也放置在登录后倒带它已经几年,我通过我的笔记就从后比,发现以下。 请注意,这些都是未经测试。

完全锥形NAT;

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source "public IP"
iptables -t nat -A PREROUTING -i eth1 -j DNAT --to-destination "private IP"

受限锥形NAT;

iptables -t nat POSTROUTING -o eth1 -p udp -j SNAT --to-source "public IP"
iptables -t nat PREROUTING -i eth1 -p udp -j DNAT --to-destination "private IP"
iptables -A INPUT -i eth1 -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -p udp -m state --state NEW -j DROP

端口受限锥形NAT;

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source "public IP"

对称NAT;

echo "1" >/proc/sys/net/ipv4/ip_forward
iptables --flush
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE --random
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT


文章来源: How to simulate different NAT behaviours