【发布时间】:2011-03-08 23:36:49
【问题描述】:
是否有任何网络地址转换器模拟器来测试 P2P 软件?
目前我正在为设备开发 P2P 软件,并面临在不同类型的 NAT 中测试我的软件的问题,例如; - 位于相同 NAT(相同专用网络)、不同 NAT(不同专用网络)、不同全局网络、不同 Nat 级别的客户端
-- 我是否需要物理设置测试环境,例如; NAT 后面的节点
或
-- 有没有网络地址转换器模拟器来测试P2P软件?
【问题讨论】:
目前我正在为设备开发 P2P 软件,并面临在不同类型的 NAT 中测试我的软件的问题,例如; - 位于相同 NAT(相同专用网络)、不同 NAT(不同专用网络)、不同全局网络、不同 Nat 级别的客户端
-- 我是否需要物理设置测试环境,例如; NAT 后面的节点
或
-- 有没有网络地址转换器模拟器来测试P2P软件?
【问题讨论】:
VirtualBox 等虚拟化软件将允许您通过 NAT 将多个访客 VM(虚拟机)连接在一起,而不是使用直接连接。
built in NAT provided by Virtualbox 与普通家庭和 ISP 级别的 NATing 路由器相比是不切实际的 'peer-to-peer friendly'。 Virtualbox 的 NAT 似乎是'full cone NAT',这使得 NAT 遍历技术(UDP/TCP 打孔)变得不切实际地简单(参见this Wikipedia article 的解释),而很多路由器 NAT 要么是 基于源端口和/或地址限制的“对称 NAT” 或某种形式的“受限锥形 NAT”。
因此,模拟多台主机通过真实 NAT 通信的一种方法是使用 Virtualbox 等虚拟化工具,并通过基于 Linux 的“路由器”虚拟机将它们连接在一起,这些虚拟机使用 Linux 内核中内置的 netfilter 函数执行路由和 NAT . iptables 命令将允许您设置 netfilter 规则以实现各种 NAT 行为(如上述 Wikipedia 文章中所述),例如full cone NAT using iptables..
有关设置 netfilter/IP 伪装(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 规则以在没有虚拟化的情况下执行此操作。不过,我不确定哪种方法对您更容易,如果您拥有机器资源,那么虚拟化方法可能会更容易跟踪。
【讨论】: