目前我正在研究设备的P2P软件,并且面临着在不同类型的NAT中测试我的软件的问题,例如: - 同一NAT(相同专用网络),不同NAT(不同专用网络),不同全球网络,不同Nat级别背后的客户端
- 我是否需要物理设置测试环境,例如; NAT背后的节点
OR
- 是否存在测试P2P软件的网络地址转换器模拟器?
答案 0 :(得分:2)
VirtualBox等虚拟化软件允许您通过NAT将多个来宾VM(虚拟机)连接在一起,而不是使用直接连接。
虽然built in NAT provided by Virtualbox与普通家庭和ISP级NATing路由器相比,但'peer-to-peer friendly'不切实际this Wikipedia article。 Virtualbox的NAT似乎是'full cone NAT',这使得NAT遍历技术(UDP / TCP打孔)变得不切实际(请参阅full cone NAT using iptables
.进行解释),而许多路由器NAT要么< em>'对称NAT'或某种形式的'受限锥NAT'基于源端口和/或地址限制。
因此,模拟通过真实NAT进行通信的多个主机的一种方法是使用Virtualbox等虚拟化工具,并通过基于Linux的“路由器”VM将它们连接在一起,这些VM使用Linux内核中内置的netfilter函数执行路由和NAT 。 iptables
命令允许您设置netfilter规则以实现各种NAT行为(如上述维基百科文章中所详述),例如: http://www.ibiblio.org/pub/linux/docs/howto/other-formats/html_single/IP-Masquerade-HOWTO.html
有关设置netfilter / IP伪装的一般信息(NAT所需),请参阅此方法: {{3}}
您当然可以将P2P软件绑定到各种本地接口(在127.0.0.0/24范围内或使用IPv6子网),并在单个计算机上配置路由表和netfilter规则,以便在不进行虚拟化的情况下执行此操作。我不确定哪种方法对您来说更容易,但如果您拥有机器资源,虚拟化方法可能会更容易跟踪。