我已经设置了这个服务器:
serverA
ip 200.200.200.100
ip 200.200.200.101
ip 200.200.200.102
ip 200.200.200.103
由于情况所迫,我不得不将 IP 200.200.200.102 和 200.200.200.103 移至服务器 B,这很管用。不幸的是,服务器 A 和服务器 B 无法再通过 200.* IP 范围互相看到对方。我认为这可能与网络掩码有关,目前所有 IP 的网络掩码都设置为 255.255.255.*。
关于如何修复此问题,有什么建议吗?
服务器A eth0
BROADCAST=200.200.200.255
IPADDR=200.200.200.100
NETMASK=255.255.255.0
服务器B eth0:2
BROADCAST=200.200.200.255
IPADDR=200.200.200.102
NETMASK=255.255.255.0
注意serverA和serverB都有200.200.200.*范围内的多个IP地址。
ip ad sh 输出服务器A
2: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0b:cd:fe:b9:98 brd ff:ff:ff:ff:ff:ff
inet 200.200.200.100/24 brd 200.200.200.255 scope global eth0
inet 200.200.200.101/24 brd 200.200.200.255 scope global secondary eth0:cp1
inet6 fe80::20b:cdff:fefe:b998/64 scope link
valid_lft forever preferred_lft forever
1: sit0: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
服务器B:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:14:38:4b:cb:64 brd ff:ff:ff:ff:ff:ff
inet 200.200.300.100/24 brd 200.200.300.255 scope global eth0
inet 200.200.200.102/24 brd 200.200.200.255 scope global eth0:cp1
inet 200.200.200.103/24 brd 200.200.200.255 scope global secondary eth0:cp2
服务器A上的route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
200.200.200.105 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
200.200.200.106 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
200.200.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 200.200.200.1 0.0.0.0 UG 0 0 0 eth0
服务器B上的route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
200.200.300.100 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
200.200.200.102 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
200.200.200.103 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
200.200.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 200.200.300.1 0.0.0.0 UG 0 0 0 eth0
答案1
嗯,这是因为根据您发布的输出,服务器 A 和服务器 B 具有相同的主 IP 200.200.200.100。
抱歉,误读了B的主IP。
问题在于您的网络掩码太窄。将网络掩码更改为 255.255.0.0,这样他们就无需路由器即可进行通信。
答案2
您的意思是子网设置为 255.255.255.0?255.255.255.* 无效。试试看。另外,确保没有 IP 地址冲突。
答案3
据我所知,那里有 2 个网关,现在您有一个不连续的网络。这意味着当服务器 A 向 200.200.200.102 发送数据包时,该数据包被发送到网关 200.200.200.1,网关认为 200.200.200.102 在其本地网络中,并在本地网络 200.200.200.0/24 中寻找该 IP,它不知道其他网关上配置了相同的 IP 范围。
同样,当服务器 B 向 200.200.200.101 发送数据包时,路由表会指示将此数据包发送到 0.0.0.0,然后发送到 200.200.300.1,而这完全来自其他网段。为了解决这个问题,您应该在两台服务器上的路由表中添加一些静态规则,但这不是完美的方法。最好的方法是让两台服务器连接到同一个网关。或者在两个网关上配置不连续网络,但在这里您应该小心使用哪种路由协议,因为有些路由协议不支持不连续网络。
为了帮助您,我应该查看您的网络图,然后我才能告诉您最好实施哪些更改。
答案4
解决了。在服务器 B 上,我将 200.200.200.* 范围内的所有 IP 子网掩码从 255.255.255.255 改为 255.255.255.0,这样一切就都正常了。谢谢大家的帮助。