我们正在尝试为我们的服务器测试设置一个测试台,以模拟多个连接/消息处理,我正在尝试从虚拟 IP 连接到我们的测试服务器。
在客户端计算机(Debian)上通过“/etc/network/interfaces”创建虚拟IP
allow-hotplug eth0
iface eth0 inet dhcp (192.168.10.2)
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
address 192.168.11.1
netmask 255.255.0.0
gateway 192.168.11.1
auto eth0:5
allow-hotplug eth0:5
iface eth0:5 inet static
address 192.168.11.5
netmask 255.255.255.0
gateway 192.168.11.1
auto eth0:6
allow-hotplug eth0:6
iface eth0:6 inet static
address 192.168.11.6
netmask 255.255.255.0
gateway 192.168.11.1
服务器IP:192.168.10.246
通过我们的测试客户端,我们正在使用“eth0.6”将其与服务器连接,但连接失败。
请求指导,我是否缺少任何路由配置?
答案1
eth0:1
等等是将多个 IP 地址分配给单个接口的旧方法。新工具 ( ip addr
) 将仅显示 IP 列表。无论如何,它都不是一个“虚拟接口”。
单个接口上的多个 IPv4 地址会让您非常头疼,除非您可以指示每个应用程序仅绑定到特定的 IP 地址(许多应用程序无法做到这一点)。
您没有说要测试哪种协议,但是在单台机器上模拟更复杂的网络架构的一种更简单的方法是网络命名空间。根据需要创建任意数量的客户端,将它们与虚拟以太网对连接起来,并在每个客户端中运行一个(或多个)客户端来测试您想要测试的任何内容。
谷歌一下如何设置网络命名空间的教程,有很多。我建议在每个名称空间中运行一个(或多个)xterm,这使得启动程序变得简单。
答案2
您缺少激活机器的 IP 转发功能,以便能够在网络之间路由/转发您的 IP 数据包。
编辑您的/etc/sysctl.conf
文件并添加:
net.ipv4.ip_forward=1
然后做:
sudo sysctl -p
根据您的设置,我不完全确定您是否还需要/etc/sysctl.conf
net.ipv4.conf.all.rp_filter=0
也看看这个问题:什么是内核IP转发?