У меня есть экземпляр / виртуальная машина с 3 интерфейсами, как показано ниже
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet 10.34.154.3x netmask 255.255.254.0 broadcast 10.34.155.255
inet6 fe80::f816:3eff:feaa:7ced prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:aa:7c:ed txqueuelen 1000 (Ethernet)
RX packets 33670 bytes 22184129 (21.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 30600 bytes 6280478 (5.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet 10.34.148.5x netmask 255.255.254.0 broadcast 10.34.149.255
inet6 fe80::f816:3eff:feb8:83ac prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:b8:83:ac txqueuelen 1000 (Ethernet)
RX packets 1712 bytes 106586 (104.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 86 bytes 6172 (6.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000
inet 10.34.150.1x netmask 255.255.254.0 broadcast 10.34.151.255
inet6 fe80::f816:3eff:fee2:5a68 prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:e2:5a:68 txqueuelen 1000 (Ethernet)
RX packets 131 bytes 9929 (9.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 74 bytes 5432 (5.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Моя таблица маршрутизации создана, как показано ниже
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.34.154.1 0.0.0.0 UG 0 0 0 eth0
10.34.148.0 0.0.0.0 255.255.254.0 U 0 0 0 eth1
10.34.148.59 10.34.148.1 255.255.255.255 UGH 0 0 0 eth1
10.34.150.0 0.0.0.0 255.255.254.0 U 0 0 0 eth2
10.34.154.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 eth2
Моя проблема здесь в том, что я могу проверить связь с IP-адресом шлюза с настроенного интерфейса только следующим образом: 1. Я могу проверить связь с IP-адресом шлюза 10.34.148.1 с eth1, но не с eth0 или eth2 2. Я могу проверить связь с IP-адресом шлюза 10.34.150.1 с eth2 но не из eth0 или eth1
Также я могу получить доступ только к IP-адресу eth0 (10.34.154.3x) из внешней сети, но не могу достичь IP-адресов eth1 и eth2
Отвечая на вопрос к сетевому администратору, он считает, что проблема связана с приведенной выше таблицей маршрутизации. И в таблице маршрутизации не должно быть записи, как показано ниже
10.34.148.59 10.34.148.1 255.255.255.255 UGH 0 0 0 eth1
поскольку мы не должны достигать локального интерфейса с помощью шлюза.
В качестве обходного пути он предложил создать / определить новую запись в таблице маршрутизации, как показано ниже.
cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
200 dnstraf
201 rt1 //creating new definition
Создание нового правила
cat rule-eth1
from 10.34.148.157 table rt1
И добавьте эту строку в /etc/sysctl.conf для arp
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.arp_filter = 1
Итак, новая таблица маршрутизации должна выглядеть так:
ip route show table rt1
default via 10.34.148.1 dev eth1
10.34.148.0/23 dev eth1 scope link
С этими изменениями пинг стал работать нормально.
Итак, мой вопрос: что не так с моей таблицей маршрутизации? Предлагается ли обходной путь - правильный способ решения проблемы? или есть что-то в ОС, о чем я должен знать?
Если у вас есть локальный интерфейс (IP-адрес) в подсети, которую вы пытаетесь выполнить PING, то он используется. Если вы указываете интерфейс в качестве источника для проверки связи шлюза в другой подсети, тогда маршрутизаторы должны иметь возможность связываться друг с другом. Если они этого не делают, они перенаправляют ваш запрос на свой (маршрутизатор) шлюз по умолчанию, пока не будет достигнут и не сброшен TTL PING. Если шлюз / экземпляр маршрутизации находится в системе межсетевого экрана, политика может блокировать / отбрасывать ICMP (PING). Одна из этих причин может быть причиной того, что вы не можете выполнить эхо-запрос на шлюзы.
Также в таблице маршрутизации отсутствуют записи. Каждый интерфейс должен иметь запись с 255.255.255.255
net mask / genmask (эта запись связывает локальный интерфейс с соответствующим IP). Это затрудняет понимание того, что не так в вашей конфигурации.