23

我正在使用 UDP 和 UDT 进行打孔。对于最终测试,我需要在不同的 NAT 类型(对称、全锥、受限锥、端口受限 NAT)上测试应用程序。

有什么方法可以模拟这些吗?我在这里期望的是某种虚拟框设置。我可以将PC用作路由器,以便我可以根据需要进行配置吗?

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

4

2 回答 2

18

以防万一其他人想要这样做,这个网站解释了如何使用 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"

对称 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
于 2015-02-15T10:10:51.273 回答
10

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

通过设置虚拟机的迷你局域网,我已经成功地完成了这件事。如果您正在寻找在 VM 中充当路由器的软件,我会从http://www.pfsense.org/开始,看看是否满足您的需求。它是一个 FreeBSD 发行版,专为易于安装的路由器/防火墙而设计,具有漂亮的 Web 管理 UI 和所有这些。

如果 pfsense 不能满足您的需求,还有很多其他 linux/bsd 发行版专为这类东西量身定制,您可以安装在 VM 中:http ://en.wikipedia.org/wiki/List_of_router_or_firewall_distributions一个好的列表:)(我也听说过关于 OpenWRT 和 ClearOS 的好消息。)

于 2012-10-16T15:18:33.627 回答