我有一个带有两个接口的 RHEL 服务器‘foo’:
- eth0:inet 地址:172.16.15.75 Bcast:172.16.15.95 掩码:255.255.255.224
eth1:inet 地址:172.16.15.242 Bcast:172.16.15.247 掩码:255.255.255.248
root@foo # netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 172.16.15.240 0.0.0.0 255.255.255.248 U 0 0 0 eth1 172.16.15.64 0.0.0.0 255.255.255.224 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 172.16.15.94 0.0.0.0 UG 0 0 0 eth0
eth0 的网关是 172.16.15.94,eth1 的网关是 172.16.15.246
问题是,从另一台服务器“bar”,我无法 ping/ssh 到服务器 foo 的 eth1 (172.16.15.242)。
服务器栏也有两个界面:
- eth0:inet 地址:172.16.15.69 Bcast:172.16.15.95 掩码:255.255.255.224
eth1:inet 地址:172.16.15.128 Bcast:172.16.15.143 掩码:255.255.255.240
root@bar # netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 172.16.15.128 0.0.0.0 255.255.255.240 U 0 0 0 eth1 172.16.15.64 0.0.0.0 255.255.255.224 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 172.16.15.94 0.0.0.0 UG 0 0 0 eth0 root@bar # ping 172.16.15.75 PING 172.16.15.75 (172.16.15.75) 56(84) bytes of data. 64 bytes from 172.16.15.75: icmp_seq=1 ttl=64 time=1.30 ms 64 bytes from 172.16.15.75: icmp_seq=2 ttl=64 time=0.087 ms ^C --- 172.16.15.75 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1991ms rtt min/avg/max/mdev = 0.087/0.696/1.306/0.610 ms root@bar # ping 172.16.15.242 PING 172.16.15.242 (172.16.15.242) 56(84) bytes of data.
我正在读多宿主主机但看起来不像我需要的,因为两个接口具有相同的 IP 范围 - 只是不同的掩码和不同的网关。
关于如何解决这个问题有什么想法吗?
答案1
通过接口的连接之所以eth0
有效,是因为两台机器可以互相访问,因为两个地址都在/27
网络掩码定义的子网内(172.16.15.64 - 172.16.15.95)。
bar
可以通过 直接到达的IP 地址范围eth1
是 172.16.15.128 - 172.16.15.143。这不包括 的foo
eth0 地址(也不包括eth0
的范围)。因此bar
将通过 使用默认路由eth0
。我不知道您的路由器会如何处理此问题。
这是我基于检查子网得出的期望——我倾向于通过tcpdump
在源机器上使用来查看正在使用哪个接口来验证这种行为。
答案2
我看到的问题是,在第二台服务器中,eth1 与第一台服务器的任何接口不在同一个子网中。
在第二台服务器的路由表中,其所有流量都通过网关传出172.16.15.94
,并且无法到达不在同一子网中的接口。
看这个:
第一台服务器 -eth1
- IP:172.16.15.242
- Mask:255.255.255.248
- Gateway: 172.16.15.246
此配置使该eth1
接口处于/29 CIDR
子网范围内,具有下一个 IP 范围:
- Minimum IP for Hosts: 172.16.15.241
- Maximum IP for Hosts: 172.16.15.246
- Broadcast: 172.16.15.247
要从其他计算机访问此接口,您需要在同一个子网中有一个接口,或者在路由器中有适当的静态路由规则才能访问它。
您可以尝试不同的解决方案,具体取决于其余的基础设施:
- 如果您将整个网络互连,则可以将同一子网的第二个虚拟 IP 分配给第二台服务器上的其中一个接口(例如 IP
172.16.15.243
和相同的网关172.16.15.246
)。 - 另一个选择是,如果网关之间可见,则在网关中添加静态路由。
答案3
问题是服务器 bar 的 eth1 被分配了与该子网的子网地址相同的地址 (172.16.15.128/28)。指向子网地址的流量将转换为子网的广播。路由器会阻止流向子网地址的流量以阻止广播风暴。Bar 应该重新 IP 为 .129。然后,如果路由器有两台服务器的路由,foo 将能够到达其新地址。