RHEL с двумя интерфейсами - Невозможно пропинговать /ssh во второй интерфейс

У меня есть сервер RHEL 'foo' с двумя интерфейсами:

  • eth0: inet addr: 172.16.15.75 Bcast: 172.16.15.95 Маска: 255.255.255.224
  • eth1: inet addr: 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
    

Gw для eth0 - 172.16.15.94, а gw для eth1 - 172.16.15.246.

Проблема в том, что с другого сервера, 'bar', я не могу пропинговать /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.
    

Я читал о Multi Homed Hosts, но здесь не похоже, что мне нужно, поскольку оба интерфейса имеют одинаковый диапазон IP-адресов - только разные маски и разные шлюзы.

Есть идеи как подойти к этой проблеме?

3 ответа

Соединения через eth0 интерфейсы работают, потому что две машины могут связаться друг с другом, так как оба адреса находятся в пределах /27 подсеть, определенная маской сети (172.16.15.64 - 172.16.15.95).

Диапазон IP-адресов, которые bar можно добраться напрямую через eth1 172.16.15.128 - 172.16.15.143. Это не включает fooадрес eth0 (и ни один не делает eth0ассортимент). Следовательно bar будет использовать маршрут по умолчанию через eth0, Я не знаю, что ваш маршрутизатор будет делать с этим.

Это мое ожидание, основанное на проверке подсетей - я был бы склонен проверить это с помощью tcpdump на исходной машине, чтобы увидеть, какой интерфейс используется.

Проблема, которую я вижу, состоит в том, что на втором сервере 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 той же подсети одному из ваших интерфейсов на втором сервере (например, ip 172.16.15.243 и тот же шлюз 172.16.15.246).
  2. Другой вариант - добавить статический маршрут в шлюзы, если они видны среди них.

Вы можете получить больше информации о CIDR и подсетях здесь. И этот инструмент может быть полезен для расчета доступных хостов в любой подсети.

Проблема в том, что eth1 панели сервера назначен тот же адрес, что и адрес подсети для этой подсети (172.16.15.128/28). Трафик, направленный на адрес подсети, будет преобразован в широковещательную рассылку для подсети. Маршрутизаторы блокируют трафик, идущий на адрес подсети, чтобы остановить широковещательные штормы. Бару следует изменить IP-адрес на .129. Тогда foo сможет достичь своего нового адреса, если у маршрутизаторов есть маршруты для обоих серверов.

Другие вопросы по тегам