Как посмотреть таблицу маршрутизации в Linux: команды ip route, route и netstat | AdminWiki

Как посмотреть таблицу маршрутизации в Linux: команды ip route, route и netstat

18 сентября 2026 10 мин. чтения

Быстрый ответ: как посмотреть таблицу маршрутизации в Linux

Таблицу маршрутизации в Linux выводят три команды: ip route show, route -n и netstat -rn. Первая входит в пакет iproute2 и работает на современных дистрибутивах. Вторая и третья пришли из net-tools и встречаются на старых хостах, в legacy-скриптах и в контейнерах, собранных на устаревших базовых образах.

Таблица маршрутизации хранит правила, по которым ядро выбирает интерфейс и шлюз для исходящего пакета. Ядро перебирает записи от самой точной к самой общей и отправляет пакет по первому совпадению. Одна строка с неверным шлюзом или приоритетом меняет путь трафика для целой подсети, поэтому просмотр таблицы входит в первые шаги диагностики.

ip route show
route -n
netstat -rn

Что вернёт ip route show на хосте с одним интерфейсом:

default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
10.0.0.0/8 via 192.168.1.254 dev eth0

Та же конфигурация в выводе route -n:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Когда нужны все таблицы, а не только main, выполните ip route show table all: команда выведет main, local, default и любые пользовательские таблицы с их именами.

Команда ip route show: синтаксис и разбор вывода

Синтаксис: ip route show [table TABLE] [dev IFACE] [via IP] [PREFIX]. Без аргументов команда печатает таблицу main. Права root не нужны, чтение таблицы маршрутизации доступно обычному пользователю.

ip route show
ip route show table main
ip route show table local
ip route show table default
ip route show table all

Разбор строки default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100: пакеты к адресам, для которых нет более точного маршрута, уходят через шлюз 192.168.1.1 на интерфейсе eth0, запись добавил DHCP-клиент, исходным адресом выбран 192.168.1.100, приоритет равен 100.

Строка 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 описывает подключённую сеть: адреса из 192.168.1.0/24 доступны напрямую, шлюз не нужен, запись создало ядро при назначении адреса интерфейсу. Строка 10.0.0.0/8 via 192.168.1.254 dev eth0 показывает статический маршрут к удалённой сети через другой шлюз.

Что означают поля default, via, dev, proto, scope, src, metric

ПолеЗначениеПример
defaultмаршрут по умолчанию, применяется, когда нет более специфичного совпаденияdefault via 192.168.1.1
viaIP-адрес шлюза, которому передаётся пакетvia 192.168.1.254
devсетевой интерфейс, через который уйдёт пакетdev eth0
protoисточник записи: kernel (создало ядро), dhcp (добавил DHCP-клиент), static (добавлен вручную), boot (при загрузке)proto kernel
scopeобласть действия: link (адреса только внутри локального сегмента), global (маршрут пригоден для любых адресов), hostscope link
srcпредпочтительный исходный IP для исходящих пакетов по этому маршрутуsrc 192.168.1.100
metricприоритет при нескольких маршрутах к одной сети, меньшее значение выигрываетmetric 100

Практический вывод: если к одной подсети ведут несколько записей, ядро выберет запись с меньшей метрикой, а при равных метриках - с более длинной маской. Разбор конфигураций с несколькими провайдерами приведён в руководстве по настройке маршрутизации в Linux: полное руководство по ip route, таблицам и статическим маршрутам.

Команда route -n: вывод и расшифровка

route входит в пакет net-tools. Флаг -n отключает обратное разрешение имён, поэтому вместо имён хостов и сетей выводятся IP-адреса: результат приходит быстрее и не зависит от доступности DNS.

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.254   0.0.0.0         255.255.255.255 UH    0      0        0 eth0
КолонкаЧто содержит
Destinationцелевая сеть или адрес; 0.0.0.0 в паре с нулевой маской означает маршрут по умолчанию
Gatewayшлюз, которому передаётся пакет; 0.0.0.0 значит, что сеть доступна напрямую
Genmaskмаска подсети для целевой сети
FlagsU - маршрут активен, G - пакет идёт через шлюз, H - маршрут указывает на отдельный хост с маской 255.255.255.255
Metricприоритет маршрута, меньшее значение выигрывает
Refсчётчик ссылок, в Linux не используется и остаётся нулевым
Useсколько раз маршрут был задействован при отправке пакетов
Ifaceсетевой интерфейс

Комбинация UG в колонке Flags означает активный маршрут по умолчанию через шлюз. Запись с маской 255.255.255.255 ведёт к единственному адресу, такие строки часто добавляют для VPN-пира или отдельного сервера.

Учтите ограничение: route меняет формат вывода между версиями net-tools и не умеет показывать таблицу по имени. Просмотреть local или пользовательскую таблицу этой командой не получится.

Команда netstat -rn: таблица маршрутизации в старом стиле

В netstat -rn флаг -r отвечает за таблицу маршрутизации, а -n отключает DNS-разрешение. Команда тоже относится к net-tools.

netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

Отличия от route -n: добавлены колонки MSS, Window и irtt. Исторически они описывали параметры кэша маршрутов и TCP: максимальный размер сегмента, размер окна и начальное время круговой задержки. В современных ядрах эти значения обычно нулевые, поэтому при диагностике опирайтесь на Destination, Gateway, Genmask, Flags и Iface.

Если net-tools на хосте нет, используйте замену из iproute2: ss -rn выводит таблицу маршрутов. Флаги ss позволяют посмотреть сокеты, соединения и таймеры, а -r ограничивает вывод маршрутами.

Как отфильтровать маршруты по интерфейсу, шлюзу или подсети

ip route show фильтрует вывод без внешних утилит:

ip route show dev eth0
ip route show via 192.168.1.1
ip route show 192.168.1.0/24
ip route show table all | grep -w default

Фильтр по интерфейсу нужен, когда на сервере несколько сетевых карт и надо понять, куда уходит трафик через конкретный порт. Фильтр по шлюзу показывает все сети, достижимые через этот адрес. Фильтр по префиксу отвечает на вопрос, есть ли вообще маршрут к нужной подсети.

Самый точный способ узнать, какой маршрут ядро выберет для конкретного адреса:

ip route get 8.8.8.8
ip route get 192.168.1.50

Команда выводит интерфейс, шлюз и исходный адрес для одного адреса назначения и ничего не меняет в таблице. Для route и netstat фильтрация возможна только через grep или awk:

route -n | grep -w eth0
netstat -rn | awk '$8 == "eth0"'

grep ищет подстроку по всей строке, поэтому шаблон eth0 сработает и там, где этот текст попал в другое поле, например в Gateway при нестандартных именах. awk сравнивает конкретную колонку, в обоих случаях восьмую, и даёт точный результат. Если разбор вывода вызывает сомнения, сверьтесь с чеклистом по диагностике проблем маршрутизации на сервере.

Различия таблиц main, local и default

Ядро Linux работает с несколькими таблицами маршрутизации, их номера и имена перечислены в /etc/iproute2/rt_tables. По умолчанию ip route show печатает таблицу main.

ТаблицаНомерСодержимоеКоманда просмотра
main254маршруты по умолчанию для всей системы: подключённые сети, шлюзы, статические записиip route show table main
local255маршруты к локальным адресам хоста и broadcast, их создаёт ядроip route show table local
default253пустая таблица, применяется в policy routing вместе с правилами ip ruleip route show table default

Таблица local объясняет поведение, которое часто принимают за ошибку маршрутизации: пакет к собственному IP не уходит через шлюз, а обрабатывается на месте. Адрес закреплён за интерфейсом, значит ядро добавляет запись в local автоматически.

Понять, какая таблица задействована для конкретного трафика, помогает ip rule: правила показывают, по какому признаку ядро выбирает таблицу, будь то адрес источника, метка fwmark или интерфейс.

ip rule show
ip route show table all

Просмотр безопасен для рабочего сервера, изменение таблиц способно разорвать сетевую доступность. Правки на продакшн-хосте планируйте только с доступом через консоль, а не исключительно по SSH.

Какие утилиты актуальны в 2026 году, а какие устарели

Штатный инструмент современных дистрибутивов - пакет iproute2 с командами ip и ss. Он закрывает задачи, которые раньше решали route, netstat, ifconfig и arp из net-tools. Проверить состав пакетов на конкретном хосте можно без догадок:

command -v ip route netstat ss
rpm -q net-tools
apt list --installed | grep net-tools

Если команда command -v route не выводит путь, пакет net-tools не установлен, и для свежих сборок это ожидаемо. Набор утилит отличается между дистрибутивами и версиями, поэтому ориентируйтесь на результат проверки на своём сервере, а не на память.

Задачаnet-toolsiproute2
показать маршрутыroute -nip route show
таблица маршрутов в старом стилеnetstat -rnss -rn
адреса интерфейсовifconfigip addr show
ARP-таблицаarp -nip neigh show
слушающие портыnetstat -tulpnss -tulpn

Когда утилита нужна для совместимости со старым скриптом или runbook-ом, net-tools ставят отдельно: apt install net-tools или dnf install net-tools. Это изменение системы, на рабочем хосте согласуйте его с владельцем сервиса. Для новых задач берите ip и ss: iproute2 развивается, net-tools получает правки совместимости. Обзор практик маршрутизации в корпоративных сетях собран в материале IP-маршрутизация в 2026 году: настройка и диагностика.

Как использовать таблицу маршрутизации для диагностики сетевых проблем

Порядок проверки, который не меняет конфигурацию сервера:

  1. Маршрут по умолчанию. Выполните ip route show | grep -w default. Пустой результат означает, что внешние соединения не работают: ядру неизвестно, куда отправлять пакеты к адресам вне подключённых сетей. Причина обычно в настройках DHCP или в отключённом интерфейсе.
  2. Путь к конкретному адресу. ip route get 8.8.8.8 показывает интерфейс, шлюз и исходный адрес. Если интерфейс не тот, который вы ожидали, ищите лишний маршрут с меньшей метрикой или правило ip rule.
  3. Таблица local. ip route show table local выведет локальные адреса и broadcast. Так отсекаются ситуации, когда трафик к собственному IP обрабатывается на месте, а не уходит наружу.
  4. Метрики. При нескольких маршрутах к одной сети сравните metric: ядро выберет запись с меньшим значением.
  5. Доступность шлюза. ping шлюза из таблицы отличает недоступный шлюз от неверного маршрута. Если шлюз отвечает, а внешние адреса нет, проверьте NAT и firewall на стороне шлюза.

Команды просмотра не вносят изменений: ip route show, ip route get, ip rule show и ip -6 route show для IPv6 безопасны на любом сервере. Дальнейшие шаги проверки, включая разбор проблем с DNS, firewall, VPN и MTU, приведены в чеклисте по диагностике Linux-маршрутизатора.

Частые вопросы и типичные ошибки

Команда route не найдена, что делать?

Сообщение command not found означает, что пакет net-tools не установлен. Ставьте его только при реальной необходимости, а для просмотра маршрутов используйте ip route show из iproute2.

Как посмотреть маршруты для IPv6?

Добавьте флаг -6: ip -6 route show. Поля те же, что и в IPv4, а адреса сетей и шлюзов записаны в шестнадцатеричном виде.

Что делать, если маршрут по умолчанию отсутствует?

Проверьте, получил ли интерфейс адрес по DHCP (ip addr show), и посмотрите логи DHCP-клиента. Добавление маршрута вручную - это изменение конфигурации, его делают осознанно и не на единственном канале доступа к серверу.

Почему в таблице local так много записей?

Ядро добавляет маршруты для каждого адреса на интерфейсах, для broadcast-адресов и для служебных диапазонов. Количество строк растёт вместе с числом адресов на сервере.

Типичные ошибки при чтении таблицы:

  • Разбор вывода через grep без учёта колонки: подстрока совпадает, а поле не то. Для точного сравнения используйте awk с номером поля.
  • Правка маршрутов на рабочем сервере без резервного доступа. Смотрите таблицы командами чтения, а изменения согласуйте и проверяйте в окно обслуживания.
  • Оценка метрики без учёта длины маски. Ядро сначала выбирает самый точный маршрут, и лишь при равных префиксах решает метрика.
  • Ожидание, что route -n покажет таблицу local. Утилита из net-tools не умеет выводить таблицы по имени.

Проверка таблицы маршрутизации занимает минуту и отвечает на главный вопрос диагностики: куда сервер отправит пакет. Начните с ip route show, уточните путь через ip route get, сверьте правила ip rule show и только после этого планируйте изменения конфигурации.

Поделиться:
Сохранить гайд? В закладки браузера