Networking 如何模拟不同的NAT行为

Networking 如何模拟不同的NAT行为,networking,network-programming,udp,nat,hole-punching,Networking,Network Programming,Udp,Nat,Hole Punching,我正在使用UDP和UDT进行钻孔。对于最终测试,我需要在不同的NAT类型(对称、全锥、受限锥、端口受限NAT)上测试应用程序 有什么方法可以模拟这些吗?我在这里期望的是某种虚拟盒设置。我可以使用PC作为路由器,以便根据需要进行配置吗 一般来说,我们如何针对不同的网络条件测试应用程序?我认为您已经回答了自己的问题,请使用VirtualBox(或VMware、Xen等) 通过设置虚拟机的迷你局域网,我已经成功地完成了这项工作。如果您正在寻找在VM中充当路由器的软件,我会从开始,看看这是否满足您的需要

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

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


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

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

通过设置虚拟机的迷你局域网,我已经成功地完成了这项工作。如果您正在寻找在VM中充当路由器的软件,我会从开始,看看这是否满足您的需要。这是一个FreeBSD发行版,专门为易于安装的路由器/防火墙量身定制,具有良好的web管理UI和所有这些功能


如果pfsense不适合您的需要,那么还有很多其他linux/bsd发行版是为这类东西量身定做的,您可以安装在VM中:为了一个好的列表:)(我也听说了OpenWRT和ClearOS的好消息。)

以防万一其他人想这么做,网站解释了如何使用IPTables设置不同的NAT环境

更新 我这么做已经有几年了,考虑到链接放在登录后面,回放也放在登录后面,我从后面查看了我的笔记,发现如下内容。请注意,这些未经测试

全锥NAT; 受限圆锥NAT; 端口限制的锥形NAT; 对称NAT;
您好,我需要设置完全相同的环境,出于同样的原因,您最终使用了什么?据我所知,在我找不到一个完美的解决方案的时候,不可能模拟所有类型的NAT。。。我们带来了新的路由器来测试不同的行为。。2年前我换了工作,所以不再联系。这真的很有用。链接在登录后面,其他地方有内容吗?看起来他们最近添加了登录系统,你可以看看以前的版本,我发布的关于使用下面链接的版本@奥利维亚:这个链接似乎也在登录后面
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 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
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