Манипулирование таблицами маршрутизации вручную
route [-f] [-n] [-q] [-v] [-d] [-S] [-s] [-t] команда { [[модификаторы] аргументы] }
- -f
- Удалить все маршруты (в соответствии с flush). При использовании вместе с командами add, change, delete или get утилита route удаляет все маршруты перед выполнением соответствующей команды.
- -n
- Не выводить символические имена хостов и сетей при сообщении о действиях. (Процесс преобразования между символическими именами и их численными эквивалентами может занимать много времени и требовать корректной работы сети; таким образом, рекомендуется воздержаться от использования этой опции, особенно в случае попытки настройки работы сети.)
- -q
- Не выводить информацию: подавить весь поток вывода.
- -v
- Вывести расширенную информацию: отображать дополнительные данные.
- -d
- Запуск только в режиме отладки, т.е. не модифицировать таблицу маршрутизации.
- -t
- Запуск только в тестовом режиме. Вместо сокета используется
/dev/null
.
- -S
- Печатать пробел, когда флаг отсутствует, чтобы флаги были вертикально.
- -s
- Подавляет весь вывод команды get, за исключением фактического шлюза, который будет использоваться. То, как будет выведен шлюз зависит от типа просматриваемого маршрута.
- команда
- [[модификаторы] аргументы] Действительными являются следующие команды: add, change, delete, flush и show. Синтаксис и описание каждой команды приведены в разделе "Описание".
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита route используется для манипулирования таблицами сетевой маршрутизации вручную. Поскольку обычно таблицы маршрутизации обрабатываются сервисом routed, эта утилита используется редко.
Опции для аргумента команда
Утилита route принимает следующие команды:
- [-n] add [-net|-host] место_назначения шлюз
- Добавить маршрут.
- [-n] change [-net|-host] адрес_назначения шлюз
- Изменить параметры маршрута (например, шлюз).
- [-n] delete [-net|-host] адрес_назначения шлюз
- Удалить определенный маршрут.
- [-n] flush [семейство]
- (Только для INET и INET6) Очистить таблицы маршрутизации всех записей шлюза. Если требуется удалить только те маршруты, для которых адреса назначения относятся к определенному семейству, укажите в качестве значения переменной семейство INET или INET6.
- [-n] get [-net|-host] адрес_назначения шлюз
- Выполнить поиск и отобразить маршрут до адреса назначения.
- [-n] monitor
- Регулярно сообщать об изменениях в данных маршрутизации.
- [-n] show
- Показать таблицу маршрутизации (команда, аналогичная netstat -r).
- адрес_назначения
- Хост-получатель или сеть-получатель.
- gateway
- Шлюз в следующем сегменте сети (переходе), на который направляются пакеты.
| Если указано ключевое слово default или сетевой адрес 0.0.0.0, то все пакеты, которые отправляются в удаленную сеть, не определенную в таблицах маршрутизации, направляются на заданный шлюз.
Если выбран поставщик услуг Интернета (Internet Service Provider, ISP), то пакеты, отправляемые хостам в Интернете, направляются на шлюз, предоставляемый этим поставщиком. См. описание опции defaultroute для утилиты pppd. |
Маршруты к определенному хосту отличаются от маршрутов к сети способом интерпретации IP-адреса, соответствующего адресу_назначения. При выборе необязательных ключевых слов -net и -host адрес назначения интерпретируется как сеть или хост соответственно.
Если для аргумента адрес_назначения указан "локальный адрес" INADDR_ANY
или адресом_назначения является символическое имя сети, то адресом назначения маршрута считается сеть; в противном случае адресом назначения маршрута считается хост. Пример:
Адрес_назначения | Интерпретация |
---|
128.32 | -host 128.0.0.32 |
128.32.130 | -host 128.32.0.130 |
-net 128.32 | 128.32.0.0 |
-net 128.32.130 | 128.32.130.0. |
Если маршрут проходит не через шлюз, а через интерфейс, следует выбрать модификатор -interface; заданный шлюз является адресом хоста в общей сети, т.е. предполагается, что для передачи используется интерфейс.
Для определения дополнительного параметра адреса, который интерпретируется как маска сети, можно использовать необязательный модификатор -netmask. Этот модификатор используется аналогично переадресации OSI ESIS с использованием маски сети или для добавления вручную маршрутов по подсети с масками сети, отличающимися от масок сети предполагаемого сетевого интерфейса (что в противном случае выполняется с использованием протоколов маршрутизации OSPF или ISIS). После дополнительного модификатора -netmask укажите адрес параметра, который следует интерпретировать как маску сети.
Чтобы переопределить неявную маску сети, созданную в случае INET, укажите данную опцию после параметра адрес_назначения.
Аналогичным образом можно использовать модификатор -prefixlen для IPv6.
При отправке на адреса назначения, соответствующие маршрутам, для этих маршрутов устанавливаются флаги, влияющие на работу протоколов. Для установки (или в некоторых случаях снятия) этих флагов укажите следующие соответствующие модификаторы:
- -cloning
-
RTF_CLONING
– создание нового маршрута на основе используемого. - -xresolve
-
RTF_XRESOLVE
– распространение сообщения (mesg) (для внешнего поиска). - -iface
-
~RTF_GATEWAY
– адреса назначения можно достичь напрямую. - -static
-
RTF_STATIC
– маршрут, добавленный вручную. - -nostatic
-
~RTF_STATIC
– симуляция добавления маршрута ядром или сервисом - -reject
-
RTF_REJECT
– распространение сообщения о недостижимости ICMP в случае соответствия. - -blackhole
-
RTF_BLACKHOLE
– отбрасывание пакетов (pkts) без оповещения (во время обновления). - -proto1
-
RTF_PROTO1
– установка флага маршрутизации для протокола #1. - -proto2
-
RTF_PROTO2
– установка флага маршрутизации для протокола #2. - -llinfo
-
RTF_LLINFO
– действительное преобразование IP-адресов в физические.
Дополнительные модификаторы:
- -expire
- -hopcount
- -mtu
- -recvpipe
- -rtt
- -rttvar
- -sendpipe
- -ssthresh
Эти модификаторы предоставляют начальные значения показателей, которые ведутся в записи маршрутизации. Для блокирования любых этих модификаторов установите перед соответствующим модификатором метамодификатор -lock; также можно указать метамодификатор -lockrest для блокирования всех последующих показателей.
Поиск всех символических имен, указанных для адреса назначения или шлюза, сначала выполняется как поиск имени хоста с использованием функции gethostname(). Если поиск не дал результатов, используется функция getnetbyname(), интерпретирующая имя как имя сети.
Утилита route использует сокет маршрутизации и новые типы сообщений: RTM_ADD
, RTM_DELETE
и RTM_CHANGE
. Соответственно, изменять таблицы маршрутизации может только суперпользователь.
Диагностика
- add [host | network ] s: gateway s flags x
- Указанный маршрут добавляется в таблицы. Выводятся значения записи таблицы маршрутизации, определенные при вызове ioctl(). Если используемый адрес шлюза не является его первичным адресом (первым адресом, возвращаемым командой gethostname()), то адрес шлюза выводится в числовом и символьном виде.
- delete [ host &| network ] s: gateway s flags x
- Как и в предыдущем случае, но при удалении записи.
- s s done
- Таблица маршрутизации удаляется с помощью команды flush.
- Network is unreachable
- Неудачная попытка добавления маршрута, поскольку указанный шлюз находится в сети, не подключенной напрямую. Необходимо указать шлюз следующем сегменте сети (переходе).
- not in table
- Попытка выполнения операции delete для записи, отсутствующей в таблицах.
- routing table overflow
- Попытка выполнения операции add в случае недостаточности ресурсов системы и невозможности выделения памяти для создания новой записи.
- Permission denied
- Для выполнения данной операции необходимы соответствующие полномочия. Изменять таблицы маршрутизации может только пользователь root. Его полномочия определяются ядром.
Базовые подсистемы ЗОСРВ «Нейтрино»
/etc/autoconnect, netmanager, phlip, pppd, routed
Предыдущий раздел: Утилиты