Когда на сервере несколько интерфейсов, VPN, policy routing или просто странное сетевое поведение, читать таблицы маршрутов бывает недостаточно. В таких случаях проще напрямую спросить у ядра, какой маршрут оно выберет для пакета до конкретного адреса.
Для этого есть
ip route get. Команда показывает, какой маршрут будет выбран при поиске маршрута (route lookup), а также исходный адрес и интерфейс, через который пакет будет отправлен.Проверить маршрут до конкретного IP:
ip route get 8.8.8.8
В выводе обычно видно
via, dev и src — через какой следующий узел пойдёт трафик, через какой интерфейс и с какого исходного адреса он будет отправлен.Пример:
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.10
Здесь видно, что пакет будет отправлен через
eth0, следующий узел — 192.168.1.1, а исходным адресом будет 192.168.1.10.Понять, какой маршрут выберется для конкретного исходного IP:
ip route get 8.8.8.8 from 192.168.1.10
Это полезно на серверах с несколькими IP-адресами, когда нужно проверить выбор маршрута для конкретного исходного адреса.
Проверить поиск маршрута с указанием интерфейса:
ip route get 8.8.8.8 oif eth0
Опция
oif позволяет выполнить поиск маршрута с учётом указанного выходного интерфейса.Можно также выполнить lookup так, как если бы пакет пришёл на определённый интерфейс:
ip route get 1.1.1.1 iif eth1
Опция
iif указывает входной интерфейс и позволяет посмотреть, какой маршрут выберет ядро для форвардинга такого пакета. Это полезно при разборе асимметричной маршрутизации (asymmetric routing), policy-маршрутизации (policy routing) и правил, завязанных на интерфейсы.Если нужно посмотреть таблицы маршрутизации:
ip route
Если используется policy-маршрутизация, полезно также проверить правила:
ip rule
А чтобы увидеть маршруты во всех таблицах:
ip route show table all
ip route показывает записи в таблицах маршрутизации, а ip route get — какой маршрут ядро реально выберет для конкретного пакета при route lookup.🔥 Особенно полезно на серверах с несколькими интерфейсами, VPN-узлах и в сложных сетевых конфигурациях.
➡️ DevOps Ready | #практика