Команда ip route — одна из главных команд для работы с таблицей маршрутизации Linux. Рассказываем, как её использовать: как создавать статические маршруты, изменять их, удалять из таблицы маршрутизации, а также как просмотреть полный список подключённых и статических маршрутов.
ip route — это глобальная команда конфигурации, с помощью которой можно определять статические маршруты до конкретных сетей/хостов назначения, добавлять их, изменять или удалять из таблицы маршрутизации, а также просматривать их полный список.
Из этого руководства вы узнаете, как применять команду ip route для управления записями в таблице маршрутизации и какие аргументы можно ей передавать.
Синтаксис команды ip route
Основной вид команды:
ip route [действие] [селектор] [опции]
Действия:
- add — для добавления нового маршрута;
- del — для удаления существующего маршрута;
- change — для изменения;
- append — добавляет новый путь к указанному маршруту;
- replace — заменяет/перемещает;
- show — отображает таблицу маршрутизации (можно фильтровать);
- flush — выборочное удаление в соответствии с заданными критериями.
Услуги хостинга и аренды VPS/VDS с опцией «Всё включено» у провайдера AdminVPS избавят вас от необходимости администрирования своего сервера — её на себя возьмут наши специалисты.
Селекторы
Это критерии фильтрации, определяющие, какие записи таблицы отображать или изменять. Например, вы можете выбрать все (all) или только определённые на основе типа адреса (например, unicast, local, broadcast и т.д.). Также можно прописать особенности маршрута (пункт назначения, шлюз, устройство, метрику и т.д.).
Часто используемые опции:
- dst [prefix] — префикс. Например, 192.168.1.0/24.
- via [адрес] — следующий переход. Другими словами, это IP-адрес промежуточного устройства, через которое должен быть направлен трафик.
- dev [имя] — сетевое устройство, с которого отправляются пакеты, например, eth0 или wlan0.
- src [адрес] — предпочтительный исходный IP-адрес.
- metric [номер] — устанавливает метрику, или административное расстояние, которое помогает определить приоритет маршрута. Более низкие значения имеют более высокий приоритет.
- table [ID] — указывает на идентификатор таблицы маршрутизации. Нужен для расширенной настройки; если параметр не определён, то команда применяется к главной таблице (main).
- proto [протокол] — идентификатор протокола маршрутизации. Это могут быть такие значения, как boot, static или другие динамические протоколы.
- scope [значение] — область действия (host, link, global и т.д.).
Рассмотрим подробнее самые необходимые команды.
Как использовать команду ip route для создания нового статического маршрута
Чтобы определить новый постоянный маршрут, должен быть известен сетевой адрес точки назначения: либо имя локального интерфейса, подключённого к целевой подсети, либо IP-адрес следующего перехода (промежуточное устройство или шлюз на пути, принимающее трафик и отправляющее его дальше).
Соответственно, команда ip route имеет два варианта. Первый подходит для указания интерфейса во время пересылки пакетов напрямую в нужную сеть, а второй — для IP-адреса следующего перехода (шлюза).
То, какой синтаксис вы используете, влияет на поведение роутера. Если указать локальный интерфейс, то маршрутизатор предполагает, что сеть назначения напрямую подключена к этому интерфейсу. А указанный IP-адрес следующего перехода будет означать, что нужная сеть доступна на шлюзе, а не напрямую. В этом случае трафик будут направлен на шлюз, которому и известен дальнейший маршрут.
Команды имеют вид:
Router(config)# ip route [destination_network] [subnet_mask] [interface_to_exit] [administrative_distance] [permanent]
Или:
Router(config)# ip route [destination_network] [subnet_mask] [ip_address_of_next_hop_neighbor] [administrative_distance] [permanent]
Рассмотрим подробнее оба варианта:
ip route
Это основная часть команды. Ей нужно передать следующие аргументы:
destination_network
Сетевой адрес точки назначения, для которого вы создаёте статический маршрут.
subnet_mask
Маска подсети. Это необязательный параметр, если вы пропустите его, команда будет использовать маску подсети по умолчанию в зависимости от класса сети. Маски подсети по умолчанию для классов A, B и C — 255.0.0.0, 255.255.0.0 и 255.255.255 соответственно. Например, если целевая сеть принадлежит классу B, команда будет использовать маску подсети 255.255.0.0.
interface_to_exit или ip_address_of_next_hop_neighbor
Способ достижения сети назначения. Вы можете указать только один из вариантов: либо имя локального интерфейса, либо IP-адрес маршрутизатора следующего перехода. Если вы укажете interface_to_exit, ваш маршрутизатор будет использовать этот локальный интерфейс для пересылки пакетов данных в сеть назначения, поэтому эту опцию следует использовать, когда она напрямую подключена к интерфейсу. Если указать ip_address_of_next_hop_neighbor, пакеты данных отправятся на маршрутизатор следующего перехода.
Давайте разберёмся, в чем разница между этими двумя типами путей.
К одному и тому же интерфейсу маршрутизатора можно подключить несколько сетей — в этом случае интерфейс работает на множественный доступ. Если интерфейс подключён только к одной сети, то он создаёт канал «точка-точка».
Если один интерфейс обеспечивает множественный доступ, всегда следует использовать IP-адрес следующего перехода. Для соединений типа «точка-точка» можно использовать любой из двух вариантов. Эта же рекомендация может отображаться в консоли роутера, когда с командой ip route используется имя локального интерфейса.
administrative_distance
Административное расстояние (AD), или метрика, — это степень надёжности маршрута, от которой зависит его приоритетность. Учитывая эту опцию, маршрутизатор выбирает оптимальный маршрут. Если доступно два или более различных маршрута к одному и тому же пункту назначения, всегда будет выбран маршрут с наименьшим значением административной дистанции.
Эту опцию используют, если существует нескольких статических маршрутов к одному и тому же пункту назначения. Например, если у вас есть два маршрута, и вы хотите использовать один из них в качестве основного, а второй в качестве резервного, то установите приоритет второго выше, чем первого. С такими настройками маршрутизатор всегда выберет первый путь для пересылки пакетов данных. Если же он не будет работать, произойдёт автоматическое переключение на следующий по приоритету.
Для метрики вы можете выбрать любое число от 0 до 255. Однако эта опция необязательна. Если вы пропустите её, будет установлено значение по умолчанию в зависимости от предыдущего параметра. Если ранее было указано имя локального подключённого интерфейса, то маршрутизатор установит значение administrative_distance равным 0. А если вы указали IP-адрес следующего перехода (статический), то значение административного расстояния будет равным 1. Наибольшее число 255 присваивается пути, который считается бесконечно удалённым.
Permanent
«Перманент» — необязательная опция. Если указать этот параметр, роутер сохранит маршрут в таблице маршрутизации даже в случае сбоя маршрута. Если не прописать эту опцию, при ошибке роутер автоматически удалит его.
Добавление временного маршрута в таблицу с помощью add
Альтернативный способ добавить маршрут — это команда ip route с аргументом add. Один из вариантов её синтаксиса:
ip route add <destination_network> via <шлюз> dev <interface> metric <AD> proto <протокол>
Интерфейс, метрику и протокол при такой записи указывать не обязательно.
Как просмотреть таблицу маршрутизации с командой ip route show
Чтобы вывести в консоль нужную таблицу, введите:
ip route show
Команда ip route show, переданная без аргументов, выведет подробную информацию о всех заданных статических и подключённых (connected) маршрутах. Столбцы вывода:
- точка назначения (локальная сеть или IP-адрес);
- IP-адрес шлюза, через который отправится трафик в том случае, если путь к конечной точке не задан;
- маска подсети;
- интерфейс-источник, через который будут отправлены пакеты (так как маршрутизатор может иметь несколько интерфейсов);
- административная дистанция;
- дополнительные флаги, для статических — S, для connected — С.
Как редактировать маршруты
Чтобы изменить дополнительные параметры, введите команду ip route change, затем целевую подсеть, путь до которой вы редактируете, после этого укажите изменяемый параметр и его новое значение.
Удаление с помощью команды del
Синтаксис:
ip route del <destination_network> <дополнительные параметры>
Дополнительные селекторы необходимы, если в вашей системе несколько путей, ведущих к одной точке, а удалить нужно только некоторые из них.
Читайте в блоге:
- Шпаргалка по утилите tmux в Linux: как установить, как выйти, горячие клавиши
- Как установить PostgreSQL на Linux: пошаговая инструкция
- Как сменить владельца папки и изменить права доступа в Linux
- Как проверить запущенные процессы в Linux с помощью терминала
- Команда nc (netcat) и примеры её использования