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
Чтобы получить доступ к этому интерфейсу с другого компьютера, вам необходимо иметь один интерфейс в той же подсети или иметь соответствующие правила статической маршрутизации в маршрутизаторах для достижения его.
Вы можете попробовать различные решения, в зависимости от остальной части вашей инфраструктуры:
- Если у вас есть вся сеть, вы можете назначить второй виртуальный ip той же подсети одному из ваших интерфейсов на втором сервере (например, ip
172.16.15.243
и тот же шлюз172.16.15.246
). - Другой вариант - добавить статический маршрут в шлюзы, если они видны среди них.
Вы можете получить больше информации о CIDR и подсетях здесь. И этот инструмент может быть полезен для расчета доступных хостов в любой подсети.
Проблема в том, что eth1 панели сервера назначен тот же адрес, что и адрес подсети для этой подсети (172.16.15.128/28). Трафик, направленный на адрес подсети, будет преобразован в широковещательную рассылку для подсети. Маршрутизаторы блокируют трафик, идущий на адрес подсети, чтобы остановить широковещательные штормы. Бару следует изменить IP-адрес на .129. Тогда foo сможет достичь своего нового адреса, если у маршрутизаторов есть маршруты для обоих серверов.