我正在使用UDP和UDT进行打洞技术的研究。为了进行最终测试,我需要在不同类型的NAT(对称型、全锥型、限制锥型、端口限制型)下测试应用程序。
是否有任何方法可以模拟这些类型的NAT?我期望得到一种类似于虚拟机的设置。我能否将PC用作路由器,以便按照我的需求进行配置?
通常情况下,我们如何测试不同网络条件下的应用程序?
我正在使用UDP和UDT进行打洞技术的研究。为了进行最终测试,我需要在不同类型的NAT(对称型、全锥型、限制锥型、端口限制型)下测试应用程序。
是否有任何方法可以模拟这些类型的NAT?我期望得到一种类似于虚拟机的设置。我能否将PC用作路由器,以便按照我的需求进行配置?
通常情况下,我们如何测试不同网络条件下的应用程序?
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"
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
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source "public IP"
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
我认为你已经回答了自己的问题,可以使用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也都有很好的口碑)。