У меня есть сервер RHEL 'foo' с двумя интерфейсами:
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
Gw для eth0 - 172.16.15.94, а gw для eth1 - 172.16.15.246.
Проблема в том, что с другого сервера, bar, я не могу выполнить ping / ssh в eth1 сервера foo (172.16.15.242).
Панель сервера также имеет два интерфейса:
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-адресов - просто разные маски и разные шлюзы.
Есть идеи, как подойти к этой проблеме?
Проблема, которую я вижу, заключается в том, что на втором сервере 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
Для доступа к этому интерфейсу с другого компьютера вам необходимо иметь один интерфейс в той же подсети или иметь соответствующие правила статической маршрутизации в маршрутизаторах для доступа к нему.
Вы можете попробовать разные решения, в зависимости от остальной части вашей инфраструктуры:
172.16.15.243
и тот же шлюз 172.16.15.246
).Вы можете получить больше информации о CIDR и подсетях Вот. И этот инструмент может быть полезно для расчета доступных хостов в любой подсети.
Подключения через 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
на исходном компьютере, чтобы узнать, какой интерфейс используется.