Таблица маршрутизации

Содержание материала

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

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

  • Если узел-адресат принадлежит локальной сети, данные доставляются напрямую адресату.
  • Если узел-адресат принадлежит внешней сети, данные передаются на локальный шлюз.

Принятие решений по IP-маршрутизации ограничивается простым поиском в таблицах. Пакеты направляются в сторону получателя согласно данным таблицы маршрутизации (известной такж е ка к таблица ретрансляции). Таблица маршрутизации связывает пункты назначения с маршрутизаторами и сетевыми интерфейсами, которые протокол Internet должен использовать для доставки данных. Взглянем на таблицу маршрутизации Linux-системы.

В случае Linux-системы воспользуйтесь командой route с ключом -n для отображения таблицы маршрутизации. Ключ -n предотвращает преобразование адресов IP в имена узлов, облегчая чтение результата. Таблица маршрутизации для некоторой системы Red Hat:

111

В системе Linux команда route -n отображает таблицу маршрутизации, состоящую из следующих полей:

Destination
Значение, с которым сопоставляется IP-адрес пункта назначения.

Gateway
Маршрутизатор, через который пролегает путь к указанному пункту на- значения.

Genmask
Адресная маска, используемая при сопоставлении адреса IP со значением из поля Destination.

Flags
Определенные характеристики данного маршрута. В Linux существуют следующие значения флагов:

U - Указывает, что маршрут создан и является проходимым.

H - Указывает на маршрут к определенном узлу (большинство маршрутов прокладывается в направлении сетей).

G - Указывает, что маршрут пролегает через внешний шлюз. Сетевой интерфейс системы предоставляет маршруты в сети с прямым подключением. Все прочие маршруты проходят через внешние шлюзы. Флагом G отмечаются все маршруты, кроме маршрутов в сети с прямым подключением.

R - Указывает, что маршрут, скорее всего, был создан динамическим протоколом маршрутизации, работающим на локальной системе, посредством параметра reinstate.

D - Указывает, что маршрут был добавлен в результате получения сообщения перенаправления ICMP (ICMP Redirect Message). Когда система узнает о маршруте из сообщения ICMP Redirect, маршрут включается в таблицу маршрутизации, чтобы исключить перенаправление для последующих пакетов, предназначенных тому же адресату. Такие маршруты отмечены флагом D.

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

А - Указывает на буферизованный маршрут, которому соответствует за- пись в таблице ARP.

С - Указывает, что источником маршрута является буфер маршрутизации ядра. В большинстве систем существует две таблицы маршрутизации: база данных ретрансляции (Forwarding Information Base, FIB), представляющая для нас интерес, поскольку используется для принятия решений по маршрутизации, и буфер маршрутизации ядра, в течение некоторого времени хранящий данные по источникам и адресатам последних использовавшихся маршрутов. Флаг С упоминается в документации, но мне не приходилось встречать его в отображении таблицы маршрутизации, даже при включении в вывод буферизованных данных по маршрутизации.

L - Указывает, что пунктом назначения маршрута является один из адре- сов данного компьютера. Такие «локальные маршруты» существуют только в буфере маршрутизации.

В - Указывает, что конечным пунктом маршрута является широковещательный адрес. Такие «широковещательные маршруты» существуют только в буфере маршрутизации. В системе Solaris данный флаг назначается как широковещательным, так и сетевым адресам; так, адресам 172.16.255.255 и 172.16.0.0 системой Solaris, принадлежащей сети 172.16.0.0/16, назначается флаг В.

 

I - Указывает, что маршрут связан с кольцевым (loopback) интерфейсом с целью иной, нежели обращение к кольцевой сети. Такие «внутренние маршруты» существуют только в буфере маршрутизации.

! - Указывает, что дейтаграммы, направляемые по этому адресу, будут отвергаться системой. Linux позволяет пользователю самостоятельно создавать подобные «отрицательные» маршруты. Такие маршруты явным образом блокируют прохождение данных в определенном направлении. Данное значение флага существует только в Linux и редко применяется, хотя оно вполне допустимо.


Metric
Определяет «стоимость» маршрута. Метрика используется для сортировки дублирующих маршрутов, если таковые присутствуют в таблице. Кроме того, для использования метрики обязательно присутствие протокола динамической маршрутизации.

Ref
Зафиксированное число обращений к маршруту с целью создания соединения. Данное значение не используется в Linux-системах.

Use
Число обнаружений маршрута, выполненных протоколом IP.

If асе
Имя сетевого интерфейса, через который пролегает данный маршрут.

Каждая запись таблицы маршрутизации начинается с направления. Направление - это ключ, с которым сопоставляется IP-адрес пункта назначения при выборе маршрута, позволяющего доставить данные адресату. Значение направления обычно называют «целевой сетью», хотя диапазон значений для направления не ограничен адресами сетей. Значение направления может быть представлено адресом узла, групповым адресом, адресным блоком, представляющим объединение многих сетей, либо специальным значением - для маршрута по умолчанию или кольцевого адреса. В любом случае поле Destination содержит значение, с которым сопоставляется адрес получателя из заголовка пакета IP при выборе маршрута доставки для дейтаграммы.

Поле Genmask содержит битовую маску, применяемую протоколом IP к адресу получателя, указанному в пакете, чтобы определить, соответствует ли адрес значению направления из таблицы. Если бит маски включен, соответствующий бит адреса получателя является значимым в процессе сопоставления. Таким образом, адрес 172.16.50.183 соответствует второй записи из приведенной выше таблицы, поскольку выполнение операции логического «И» для данного адреса и маски 255.55.255.0 дает в результате 172.16.50.0.

Когда найдено соответствие адреса записи таблицы, поле Gateway позволяет протоколу IP определить, как достичь указанного направления. Если поле Gateway содержит IP-адрес маршрутизатора, используется этот маршрутизатор. Если поле Gateway содержит только нули (0.0.0.0, при выполнении команды route с ключом -п) или символ звездочки (*, при выполнении route без ключа -п), целевая сеть является подключенной напрямую сетью, а «шлюзом» оказывается сетевой интерфейс данной машины. Последнее из полей, заполняемых во всех записях таблицы, содержит имя сетевого интерфейса, через который пролегает маршрут. В нашем примере это первый интерфейс Ethernet (ethO) либо кольцевой интерфейс (lo). Направление, шлюз, маска и интерфейс полностью определяют маршрут.


Остальные поля (Ref, Use, Flags и Metric) содержат дополнительную информацию по маршруту. Значимость этой информации минимальна. Некоторые системы старательно отслеживают значение счетчика в поле Ref, а прочие, например Linux, вовсе не интересуются этим полем. Linux подсчитывает в поле Use, сколько раз потребовалось искать маршрут по запросу протокола IP из-за того, что он отсутствовал в буфере маршрутизации. Некоторые из прочих систем отображают в поле Use количество переданных по маршруту пакетов. Поле Flags содержит информацию, зачастую очевидную и без флагов: флаг U присутствует в определении каждого маршрута, поскольку - по определению - все маршруты таблицы являются работоспособными, а поле Gateway позволяет определить факт использования внешнего маршрутизатора без помощи флага G. Значение Metric задействовано только при работе с одним из вариантов протокола маршрутной информации (Routing Information Protocol, RIP). Эта информация не должна отвлекать внимание: главное в таблице маршрутизации - маршрут, который состоит из адресата, маски, шлюза и интерфейса.

Протокол IP использует информацию из таблицы маршрутизации (ретрансляции), чтобы строить маршруты для активных соединений. Маршруты, связанные с активными соединениями, хранятся в буфере маршрутизации. В Linux посмотреть на буфер маршрутизации можно при помощи команды route с ключом :

Буфер маршрутизации отличается от таблицы маршрутизации - он отражает установленные маршруты. Таблица маршрутизации используется для принятия решений по маршрутизации, буфер маршрутизации используется после принятия решения. Буфер маршрутизации содержит адреса источника и получателя для сетевого соединения, а также значения для шлюза и интерфейса, через которые было установлено соединение.

Содержимое таблицы маршрутизации удобно изучать на примере Linux, поскольку в данной ОС команда route очень четко выводит эту таблицу. Команда route системы Solaris существенно отличается в части синтаксиса. При работе с Solaris для вывода содержимого таблицы маршрутизации воспользуйтесь командой netstat -nr. Ключ -r предписывает отобразить таблицу маршрутизации, а ключ -n - использовать при этом числовой формат адресов.

111


Первая запись таблицы определяет кольцевой маршрут для локального узла. Это именно тот кольцевой адрес, о котором говорилось выше, как о зарезервированном номере сети. Каждая система использует кольцевой маршрут для отправки дейтаграмм самой себе, так что запись кольцевого маршрута присутствует в таблице маршрутизации любого узла. Флаг Н говорит о том, что система Solaris создает маршрут к определенному узлу (127.0.0.1), а не к целой сети (127.0.0.0). Мы еще вернемся к кольцевому интерфейсу, когда будем говорить о настройке ядра и команде ifconfig. Сейчас же предметом нашего интереса являются внешние маршруты.

В приведенной таблице есть и другая особая запись - та, что содержит слово «default» в поле адресата. Это запись маршрута по умолчанию, а шлюз, указанный в записи, является шлюзом по умолчанию. Маршрут по умолчанию - еще один из ранее упомянутых зарезервированных номеров сетей. Шлюз по умолчанию используется в том случае, если ни один из конкретных маршрутов таблицы не соответствует указанному сетевому адресу получателя. Например, в таблице маршрутизации отсутствует запись для сети 192.168.16.0. Получив дейтаграммы, адресованные получателю в этой сети, протокол IP перешлет их через шлюз по умолчанию 172.16.12.1.

Все шлюзы, упоминаемые в таблице маршрутизации, принадлежат к сетям, напрямую подключенным к локальной системе. Для последнего примера это означает, что все адреса шлюзов начинаются с последовательности 172.16.12, вне зависимости от указанного адреса получателя. Это единственная сеть, с которой напрямую связан узел из примера, а значит - единственная сеть, в которую он может напрямую передавать данные. Шлюзы, используемые узлом для связи с остальным Интернетом, должны принадлежать к подсети этого узла.

На рисуеке уровень IP двух узлов и шлюза нашей воображаемой сети замене- ны небольшими фрагментами таблицы маршрутизации, отражающими целе- вые сети и шлюзы, через которые осуществляется доступ к ним. Предполо- жим, что для сети 172.16.0.0 используется адресная маска 255.255.255.0. Узел-источник (172.16.12.2), отправляя данные узлу-получателю (172.16.1.2), при помощи адресной маски определяет, что в таблице маршрутизации необ- ходимо искать адрес целевой сети 172.16.1.0. Таблица маршрутизации узла- источника показывает, что данные, предназначенные сети 172.16.1.0, переда- ются через шлюз 172.16.12.3. Узел-источник передает пакеты шлюзу. Шлюз повторяет те же шаги и ищет целевой адрес в своей таблице маршрутизации. Шлюз 172.16.12.3 выполняет прямую доставку через собственный интерфейс 172.16.1.5. Обратившись к таблицам маршрутизации на рис. 2.4, можно уви- деть, что на каждом узле упоминаются только шлюзы, принадлежащие к се- тям, доступным с этого узла напрямую. Данное обстоятельство иллюстрирует тот факт, что шлюзом по умолчанию для адресов 172.16.12.2 и 172.16.12.3 является 172.16.12.1, но, поскольку узлу 172.16.1.2 недоступна напрямую сеть 172.16.12.0, он определяет иной маршрут по умолчанию.

Таблица маршрутизации не содержит сквозных маршрутов. Маршрут ука- зывает лишь следующий шлюз, то есть задает ровно один транзитный учас- ток (hop) на пути к целевой сети. Доставку данных узел возлагает на ло- кальный шлюз, а шлюз в доставке данных полагается на другие шлюзы. Дейтаграмма, переходя от одного шлюза к другому, рано или поздно дости- гает узла, который напрямую подключен к целевой сети. Именно этот по- следний шлюз доставляет данные узлу-получателю.

Для маршрутизации дейтаграмм между сетями протокол IP использует се- тевую часть адреса. Полный адрес, включающий информацию об узле, всту- пает в игру в момент окончательной доставки, когда дейтаграмма достигает целевой сети.

111


Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.
yandex-disk
Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.

>> Ubuntu 12.04 + Nginx Скачать сервер
>> Fedora 15 Скачать сервер
>> Простой Debian 6.0.6 Скачать сервер
>> CentOS 6.0 и
+ (5.6) другой
Скачать сервер
>> OpenSUSE 11.4
MAX
Скачать сервер

Вход на сайт

ВНИМАНИЕ!

Регистрация на сайте только по согласованию с администратором ресурса. Обращаться через форму обратной связи.