Сетевые технологии
Сети, адреса и маршруты
Источники информации о маршрутах

Маршрутная таблица формируется из нескольких источников. Перечислим их в том порядке, в каком они примерно используются по мере старта системы.

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

    • на адрес данного интерфейса с маской /32 — со специфическим атрибутом local; благодаря ему, пакет в конечном счёте перенаправляется в локальный псевдоинтерфейс lo, для передачи прикладным процессам на данном устройстве.
    • на широковещательный адрес и на адрес сети с маской /32 — с атрибутами local и broadcast; эти пакеты направляются и на псевдоинтерфейс lo, и в сеть, причём с широковещательным МАС-адресом назначения.

      Эти три маршрута в ОС Linux хранятся в отдельной, приоритетной, таблице маршрутизации local и не выводятся командой .ip.route.show, но их следует держать в уме. Подробнее об организации таблиц маршрутизации...
    • на адрес сети с маской, указанной для данного интерфейса — в данный интерфейс. Это маршрут на все другие хосты данной сети. Поскольку маска более короткая, этот маршрут имеет низший приоритет по сравнению с предыдущими. Маршрут хранится в основной таблице main, которая используется по умолчанию в случае отсутствия особых настроек. Содержимое данной таблицы выводится командой .ip.route.show.

    Для интерфейсов с длиной маски /32 или /31 вместо второй и третьей записей создаётся маршрут на адрес удалённой стороны (peer address, указанный в конфигурации интерфейса), с маской /32. Если интерфейс ненумерованный, то первая запись не создаётся, потому что она уже имеется для того интерфейса, от которого "одолжен" этот адрес.

    Для маршрутов IPv6 вышесказанные правила остаются в силе, за исключением длины маски.

  2. Статическая таблица маршрутизации. Это список маршрутов, который составляется администратором вручную при конфигурировании устройства. В процессе работы он не изменяется, но из него в текущую таблицу маршрутизации переносятся только действующие маршруты. Если указанный маршрут, например, проходит через неработающий интерфейс, то он удаляется из текущей таблицы маршрутизации.

    В NSG Linux 2.1 статические маршруты могут создаваться двумя способами. При этом их поведение после создания существенно различается:

    • Маршруты, созданные средствами конфигурации NSG (nsgsh или Web) в данном узле, находятся под контролем демона конфигурации nsgconfd. Если такой маршрут удалить средствами ОС Linux, то через короткое время он будет восстановлен. В маршрутной таблице такие маршруты помечаются специальным атрибутом proto nsg. Это позволяет отличать их от маршрутов, созданных другими способами.
    • Маршруты, созданные стандартными средствами ОС Linux (скрипты и команды bash, SNMP). Такие маршруты создаются разово и их дальнейшая судьба никак не контролируется до следующего акта управления теми же средствами.
  3. Механизмы динамической конфигурации интерфейсов и туннелей:

    • Протокол DHCP используется на широковещательных интерфейсах. Клиент DCHP, работающий на интерфейсе, получает от централизованного сервера DHCP ряд настроек, в т.ч. IP-адрес, маску подсети (в соответствии с которыми создаются маршруты согласно п.1) и адрес шлюза по умолчанию. Указанный маршрут включается в таблицу маршрутизации (если не установлен параметр discard-default-gw) с заданной метрикой.
    • Протокол PPP используется для сеансовых соединений "точка-точка", клиентов PPPoE и PPTP. При установлении соединения создаются два маршрута на локальный адрес и адрес удалённой стороны (не важно, были ли они настроены статически или получены динамически). Кроме того, установленное соединение может быть объявлено маршрутом по умолчанию и этому маршруту может быть принудительно назначена метрика.
    • ПРИМЕЧАНИЕ. Интерфейсы PPP, настроенные на соединение по требованию (connection = "on-demand"), формально находятся в состоянии UP постоянно и на них создаются соответствующие маршруты; в противном случае в порт не попадали бы никакие пакеты, и он бы никогда не смог инициировать реальное соединение. Если IP-адреса должны назначаться им динамически, то в отсутствие соединения генерируются случайные адреса для формальных целей, а после установления соединения соответствующие записи в маршрутной таблице удаляются и создаются заново.
    • При создании туннелей IPsec в некоторых реализациях IPsec (включая реализации для Linux) создаётся маршрут в удалённую защищаемую сеть. (В некоторых, в т.ч. Cisco — не создаётся, его нужно создавать вручную.)
    • При создании туннелей Open VPN клиент может получать маршруты от сервера при помощи директив push/pull.
  4. Протоколы динамической маршрутизации обеспечивают обмен информацией между соседними маршрутизаторами. Таким образом, сведения об имеющихся подсетях (изначально полученные каждым маршрутизатором из первых 3 источников) и маршрутах к ним автоматически распространяются по сети и изменяются по мере необходимости.

    ПРИМЕЧАНИЕ. Разные протоколы динамической маршрутизации используют различные определения для метрики или её эквивалентов (distance и т.п.) — хотя бы потому, что они изначально предназначались для сетей различного масштаба, с различным максимально возможным числом промежуточных шагов. Поэтому при использовании динамической маршрутизации метрика, сообщаемая каждым протоколом, имеет смысл только для сравнения с другими маршрутами, построенными с помощью этого же протокола. Для сравнения маршрутов, построенных по разным протоколам, или полученных другими способами, необходимо вводить правила преобразования метрик, или, по крайней мере, устанавливать безусловный приоритет одного протокола перед другим.
  5. Некоторые специфические средства NSG Linux изменяют или позволяют изменять таблицу маршрутизации (при помощи скриптов) в процессе работы устройства. Наиболее часто эта возможность используется в службе netping и в клиенте PPTP.
Обратно в узел .ip.route...

© Network Systems Group 2015–2024 Отдел документации