我使用 Ubuntu 12.04 作为 VirtualMin 安装平台,它将为同一组织托管多个网站。为此,我需要将同一子网中的多个 IP 地址绑定到服务器,但这样做遇到了问题。
我可以通过使用附加虚拟网卡(它是一个虚拟机)或使用一个网卡的虚拟接口来绑定额外的地址。在这两种情况下,附加地址都可以从本地网络上的任何主机 ping 通,但只有主网卡可以从任何远程网络 ping 通。这种行为就像您配置了一个没有网关的单个网卡时会发生的情况一样,所以我想这是路由表的问题,但我就是无法生成有效的配置。有人可以看看我的配置并可能给我指出正确的方向吗?
/etc/网络/接口
# The loopback network interface
auto lo eth0 eth0:0
iface lo inet loopback
# The primary network interface
iface eth0 inet static
address 10.192.3.104
netmask 255.255.224.0
gateway 10.192.0.1
broadcast 10.192.31.255
network 10.192.0.0
dns-nameservers 10.192.0.210 10.192.0.198 127.0.0.1
iface eth0:0 inet static
address 10.192.30.52
netmask 255.255.224.0
路线-n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.192.0.1 0.0.0.0 UG 100 0 0 eth0
10.192.0.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0
答案1
可能有点牵强,但你试过启用 ipv4 转发吗?我不知道 IP 链的细节,但可能是对接口上的 ping 的回复eth0:0
需要通过 进行“转发” eth0
,特别是当它需要路由时。
# echo 1 > /proc/sys/net/ipv4/ip_forward
或者
# sudo sysctl -w net.ipv4.ip_forward=1
如果有效,就把它放进去/etc/sysctl.conf
。
答案2
有几件事让我关注服务器端而不是网络端。
首先,同一网络中的 Windows 服务器可以添加辅助地址并立即以 Ubuntu 服务器无法实现的方式进行通信。
此外,无法 ping 任何辅助地址。使用您的示例,我可以将辅助地址的最后一个八位字节更改为比主地址高一个,但问题仍然存在。例如 10.192.10.138 / 139 仍然有同样的问题。
我运行了 tcpdump,发现主服务器同时显示传入的 icmp 请求和传出的回复。对辅助服务器的 ip 地址的 ping 只显示传入的 icmp 请求。传出的 icmp 请求似乎被丢弃了。例如
16:10:08.149550 In 00:1f:27:40:04:00 ethertype IPv4 (0x0800), length 100: 10.1.0.200 > 10.192.10.138: ICMP echo request, id 64546, seq 6, length 64
16:10:08.149571 Out 00:50:56:be:0a:89 ethertype IPv4 (0x0800), length 100: 10.192.10.138 > 10.1.0.200: ICMP echo reply, id 64546, seq 6, length 64
16:10:09.145736 In 00:1f:27:40:04:00 ethertype IPv4 (0x0800), length 100: 10.1.0.200 > 10.192.10.138: ICMP echo request, id 64546, seq 7, length 64
16:10:09.145759 Out 00:50:56:be:0a:89 ethertype IPv4 (0x0800), length 100: 10.192.10.138 > 10.1.0.200: ICMP echo reply, id 64546, seq 7, length 64
16:10:38.055885 In 00:1f:27:40:04:00 ethertype IPv4 (0x0800), length 100: 10.1.0.200 > 10.192.10.185: ICMP echo request, id 12835, seq 1, length 64
16:10:39.055943 In 00:1f:27:40:04:00 ethertype IPv4 (0x0800), length 100: 10.1.0.200 > 10.192.10.185: ICMP echo request, id 12835, seq 2, length 64
16:10:40.056085 In 00:1f:27:40:04:00 ethertype IPv4 (0x0800), length 100: 10.1.0.200 > 10.192.10.185: ICMP echo request, id 12835, seq 3, length 64
但这会引导我下一步调查什么呢?