Невозможно выполнить эхо-запрос IP интерфейса из-за таблиц маршрутизации

У меня есть экземпляр / виртуальная машина, имеющая 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

С этими изменениями пинг начал работать нормально.

Итак, мой вопрос: , что не так с моей таблицей маршрутизации? Предлагается ли обходной путь - правильный способ решения проблемы? или есть что-то в ОС, о чем я должен знать?

0
задан 27 March 2019 в 11:52
1 ответ

Если у вас есть локальный интерфейс (IP-адрес) в подсети, которую вы пытаетесь выполнить PING, то он используется. Если вы укажете интерфейс в качестве источника для проверки связи шлюза в другой подсети, тогда маршрутизаторы должны иметь возможность связываться друг с другом. Если они этого не делают, они перенаправляют ваш запрос на свой (маршрутизатор) шлюз по умолчанию, пока не будет достигнут и не сброшен TTL PING. Если шлюз / экземпляр маршрутизации находится в системе брандмауэра, политика может блокировать / отбрасывать ICMP (PING). Одна из этих причин может быть причиной того, что вы не можете выполнить эхо-запрос шлюзов.

Также в таблице маршрутизации отсутствуют записи. Каждый интерфейс должен иметь запись с сетевой маской / genmask 255.255.255.255 (эта запись связывает локальный интерфейс с соответствующим IP-адресом). Это затрудняет понимание того, что не так в вашей конфигурации.

0
ответ дан 24 November 2019 в 00:27

Теги

Похожие вопросы