如何模拟不同的NAT行为

25

我正在使用UDP和UDT进行打洞技术的研究。为了进行最终测试,我需要在不同类型的NAT(对称型、全锥型、限制锥型、端口限制型)下测试应用程序。

是否有任何方法可以模拟这些类型的NAT?我期望得到一种类似于虚拟机的设置。我能否将PC用作路由器,以便按照我的需求进行配置?

通常情况下,我们如何测试不同网络条件下的应用程序?


嗨,我需要为同样的原因设置完全相同的环境,你最终使用了什么?根据https://forum.pfsense.org/index.php?topic=58860.0所述,不可能模拟所有类型的NAT Cones。 - Ol1v3r
1
当时我找不到完美的解决方案...我们购买了新路由器来测试不同的行为..我已经换了工作,两年没有联系了.. - user739711
2个回答

19
如果有人想要这样做,这个网站解释了如何使用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 -A POSTROUTING -o eth1 -p udp -j SNAT --to-source "public IP"
iptables -t nat -A 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"

Symmetric 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

1
这真的很有用。 - user739711
链接在登录后才能访问,这个内容还有其他地方可以获取吗? - Augusto Hack
1
看起来他们最近添加了登录系统,你可以查看以前的版本,我在下面的链接中发布了一个版本;https://web.archive.org/web/20151029183033/https://wiki.asterisk.org/wiki/display/TOP/NAT+Traversal+Testing - Ol1v3r
1
@OliverCiappara 这个链接似乎也需要登录才能访问。 - shitpoet
1
我不确定我的做法是否正确,但如果有人发现受限锥形NAT规则不正确,我通过将规则3、4从INPUT更改为FORWARD来使其正常工作。不确定为什么,似乎当我将其设置为INPUT而不是只有已建立连接时,它会让所有入站流量通过。 - EricChen1248

11

我认为你已经回答了自己的问题,可以使用VirtualBox(或VMware、Xen等)。

我成功地通过设置虚拟机的mini-lan来完成了这个操作。如果你正在寻找在虚拟机中充当路由器的软件,我建议你先看看http://www.pfsense.org/是否符合你的需求。这是一个专门用于轻松安装路由器/防火墙并具有良好web管理界面等功能的FreeBSD发行版。

如果pfsense不能满足你的需求,还有很多其他的Linux/BSD发行版可供选择,专门针对这种情况并可以在虚拟机中安装:http://en.wikipedia.org/wiki/List_of_router_or_firewall_distributions 这里有一个不错的列表 :) (OpenWRT和ClearOS也都有很好的口碑)。


如何在pfsense中设置它们?我在文档中搜索,但没有找到相关内容。https://docs.netgate.com/ - Hui.Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接