具有两个接口的 RHEL - 无法 ping/ssh 到第二个接口

具有两个接口的 RHEL - 无法 ping/ssh 到第二个接口

我有一个带有两个接口的 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。这不包括 的fooeth0 地址(也不包括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

要从其他计算机访问此接口,您需要在同一个子网中有一个接口,或者在路由器中有适当的静态路由规则才能访问它。

您可以尝试不同的解决方案,具体取决于其余的基础设施:

  1. 如果您将整个网络互连,则可以将同一子网的第二个虚拟 IP 分配给第二台服务器上的其中一个接口(例如 IP172.16.15.243和相同的网关172.16.15.246)。
  2. 另一个选择是,如果网关之间可见,则在网关中添加静态路由。

您可以获取有关 CIDR 和子网划分的更多信息这里。 和此工具可能有助于计算任何子网中的可用主机。

答案3

问题是服务器 bar 的 eth1 被分配了与该子网的子网地址相同的地址 (172.16.15.128/28)。指向子网地址的流量将转换为子网的广播。路由器会阻止流向子网地址的流量以阻止广播风暴。Bar 应该重新 IP 为 .129。然后,如果路由器有两台服务器的路由,foo 将能够到达其新地址。

相关内容