网络地址转换仿真器用于测试P2P软件。

4

是否有网络地址转换模拟器可用于测试P2P软件?

目前我正在开发一款针对设备的P2P软件,并面临如何在不同类型的NAT中测试我的软件的问题,例如: - 相同NAT(相同私有网络)下的客户端,不同NAT(不同私有网络)下的客户端,在不同全球网络,不同NAT级别下的客户端。

-- 我需要物理设置测试环境,例如:节点位于NAT后面吗?

OR

-- 是否有网络地址转换模拟器可用于测试P2P软件?


http://stackoverflow.com/questions/35852876/is-there-a-framework-app-for-testing-distributed-systems-or-just-network-apps/35854113#35854113 - DualCore
1个回答

2
虚拟化软件,例如VirtualBox,可以让您通过NAT连接多个客户VM(虚拟机),而不是使用直接连接。
与常见的家庭和ISP级别的NAT路由器相比,Virtualbox提供的内置NAT不太适合点对点连接。Virtualbox的NAT似乎是'full cone NAT',这使得NAT遍历技术(UDP / TCP打洞)变得不切实际容易(请参见本维基百科文章进行解释),而许多路由器NAT则基于源端口和/或地址限制的'对称NAT'或某种形式的'受限锥体NAT'
一种模拟多个主机通过真实NAT通信的方法是使用虚拟化工具,例如Virtualbox,并通过基于Linux的“路由器”VM将它们连接在一起,使用Linux内核中的内置netfilter功能执行路由和NAT。 iptables命令允许您设置netfilter规则以实现各种NAT行为(如上述维基百科文章所述),例如使用iptables进行全锥形NAT。 请参阅此操作指南,了解有关设置netfilter / IP-masquerading(NAT所需)的一般信息: http://www.ibiblio.org/pub/linux/docs/howto/other-formats/html_single/IP-Masquerade-HOWTO.html 当然,您可以将P2P软件绑定到各种本地接口(在127.0.0.0/24范围内或使用IPv6子网),并在单台计算机上配置路由表和netfilter规则,以实现此目的而无需虚拟化。不过我不确定哪种方法对您来说更容易,如果您有机器资源,虚拟化方法可能更容易跟踪。

我的Linux服务器只有一个以太网接口。 - Sumit Arora
已设置以下配置:[Loopback(127.0.0.1:2000 / STUN客户端) - > [IPTABLES规则TO / FROM] - > Ethernet(VM - 192.168.56.102:2000) - > HOST(VM-Gateway - 192.168.56.1:3478 - STUN服务器)] :: 示例规则 :: sudo iptables -t nat -A POSTROUTING -o eth0 -p udp --source 127.0.0.1 --sport 2000 -j SNAT --to-source 192.168.56.102 sudo iptables -t nat -A PREROUTING -i eth0 -p udp --destination 192.168.56.102 --dport 2000 -j DNAT --to-destination 127.0.0.1 // 看起来iptables无法从loopback iface中获取数据包 - Sumit Arora

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