Что входит в таблицу маршрутизации. Что такое маршрутизация

Описание команды route : выводит на экран и изменяет записи в локальной таблице IP-маршрутизации. Запущенная без параметров, команда route выводит справку.

route [-f ] [-p ] [ команда [ конечная_точка ] [mask маска_сети ] [ шлюз ] [metric метрика ]] [if интерфейс ]]

-f Очищает таблицу маршрутизации от всех записей, которые не являются узловыми маршрутами (маршруты с маской подсети 255.255.255.255), сетевым маршрутом замыкания на себя (маршруты с конечной точкой 127.0.0.0 и маской подсети 255.0.0.0) или маршрутом многоадресной рассылки (маршруты с конечной точкой 224.0.0.0 и маской подсети 240.0.0.0). При использовании данного параметра совместно с одной из команд (таких, как add , change или delete ) таблица очищается перед выполнением команды. -p При использовании данного параметра с командой add указанный маршрут добавляется в реестр и используется для инициализации таблицы IP-маршрутизации каждый раз при запуске протокола TCP/IP. По умолчанию добавленные маршруты не сохраняются при запуске протокола TCP/IP. При использовании параметра с командой print выводит на экран список постоянных маршрутов. Все другие команды игнорируют этот параметр. Постоянные маршруты хранятся в реестре по адресуHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes команда Указывает команду, которая будет запущена на удаленной системе. В следующей таблице представлен список допустимых параметров. конечная_точка Определяет конечную точку маршрута. Конечной точкой может быть сетевой IP-адрес (где разряды узла в сетевом адресе имеют значение 0), IP-адрес маршрута к узлу, или значение 0.0.0.0 для маршрута по умолчанию. mask маска_сети Указывает маску сети (также известной как маска подсети) в соответствии с точкой назначения. Маска сети может быть маской подсети соответствующей сетевому IP-адресу, например 255.255.255.255 для маршрута к узлу или 0.0.0.0. для маршрута по умолчанию. Если данный параметр пропущен, используется маска подсети 255.255.255.255. Конечная точка не может быть более точной, чем соответствующая маска подсети. Другими словами, значение разряда 1 в адресе конечной точки невозможно, если значение соответствующего разряда в маске подсети равно 0. шлюз Указывает IP-адрес пересылки или следующего перехода, по которому доступен набор адресов, определенный конечной точкой и маской подсети. Для локально подключенных маршрутов подсети, адрес шлюза - это IP-адрес, назначенный интерфейсу, который подключен к подсети. Для удаленных маршрутов, которые доступны через один или несколько маршрутизаторов, адрес шлюза - непосредственно доступный IP-адрес ближайшего маршрутизатора. metric метрика Задает целочисленную метрику стоимости маршрута (в пределах от 1 до 9999) для маршрута, которая используется при выборе в таблице маршрутизации одного из нескольких маршрутов, наиболее близко соответствующего адресу назначения пересылаемого пакета. Выбирается маршрут с наименьшей метрикой. Метрика отражает количество переходов, скорость прохождения пути, надежность пути, пропускную способность пути и средства администрирования. if интерфейс Указывает индекс интерфейса, через который доступна точка назначения. Для вывода списка интерфейсов и их соответствующих индексов используйте командуroute print . Значения индексов интерфейсов могут быть как десятичные, так и шестнадцатеричные. Перед шестнадцатеричными номерами вводится . В случае, когда параметр if пропущен, интерфейс определяется из адреса шлюза. /? Отображает справку в командной строке.

Примеры команды route

Чтобы вывести на экран все содержимое таблицы IP-маршрутизации, введите команду:

route print

Чтобы вывести на экран маршруты из таблицы IP-маршрутизации, которые начинаются с 10. , введите команду.

Структура таблицы маршрутизации стека TCP/IP, соответствуя общим принципам построения таблиц маршрутизации (см. предыдущий выпуск рубрики), зависит от конкретной реализации стека TCP/IP. В качестве примера рассмотрим несколько вариантов таблицы маршрутизации, с которыми мог бы работать маршрутизатор М1 в сети, представленной на Рисунке 1.

Рисунок 1. Пример маршрутизируемой сети.

Если в качестве маршрутизатора М1 в данной сети применяется программный маршрутизатор MPR операционной системы Microsoft Windows NT, то его таблица маршрутизации могла бы иметь такой же вид, как в Таблице 1. Если на месте маршрутизатора М1 установить аппаратный маршрутизатор NetBuil-der II компании 3Com, то его таблица маршрутизации для этой же сети может выглядеть так, как показано в Таблице 2. В Таблице 3 помещена таблица маршрутизации для маршрутизатора М1, реализованного в виде программного маршрутизатора одной из версий операционной системы UNIX.

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

ОСНОВНЫЕ ПАРАМЕТРЫ ТАБЛИЦ МАРШРУТИЗАЦИИ

Несмотря на достаточно заметные внешние различия, во всех трех таблицах присутствуют все ключевые параметры, необходимые для работы маршрутизатора, которые мы рассмотрели ранее при обсуждении концепции маршрутизации. К таким параметрам, безусловно, относятся адрес сети назначения (столбцы Destination в маршрутизаторах NetBuilder и UNIX или Network Address в маршрутизаторе MPR) и адрес следующего маршрутизатора (столбцы Gateway в маршрутизаторах NetBuilder и UNIX или Gateway Address в маршрутизаторе MPR). Третий ключевой параметр - адрес порта, на который нужно направить пакет, в одних таблицах указывается прямо (поле Interface в таблице Windows NT), а в других - косвенно. Так, в таблице UNIX-маршрутизатора вместо адреса порта задается его условное наименование - le0 для порта с адресом 198.21.17.5, le1 для порта с адресом 213.34.12.3 и lo0 для внутреннего порта с адресом 127.0.0.1.

В маршрутизаторе NetBuilder II поле, указывающее выходной порт в какой-либо форме, вообще отсутствует. Это объясняется тем, что адрес выходного порта всегда можно косвенно определить по адресу следующего маршрутизатора. Например, попробуем определить по Таблице 2 адрес выходного порта для сети 56.0.0.0. Из таблицы видно, что следующим маршрутизатором для этой сети будет маршрутизатор с адресом 213.34.12.4. Адрес следующего маршрутизатора должен принадлежать одной из непосредственно присоединенных к маршрутизатору сетей, и в данном случае это сеть 213.34.12.0. Один из портов маршрутизатора подключен к этой сети, а его адрес 213.34.12.3 мы находим в поле Gateway второй строки таблицы маршрутизации, где указывается непосредственно присоединенная сеть 213.34.12.0. Для таких сетей адресом следующего маршрутизатора всегда будет адрес собственного порта маршрутизатора. Таким образом, адрес выходного порта для сети 56.0.0 - это 213.34.12.3.

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

Наличие или отсутствие поля маски в таблице говорит о том, насколько современен данный маршрутизатор. Стандартным решением сегодня является использование поля маски в каждой записи таблицы, как это сделано в таблицах маршрутизаторов MPR Windows NT (поле Netmask) и NetBuilder (поле Mask). Отсутствие поля маски говорит о том, что либо маршрутизатор рассчитан на работу только с тремя стандартными классами адресов, либо он использует для всех записей одну и ту же маску, а это снижает гибкость маршрутизации.

Как видно из примера таблицы Unix-маршрутизатора, метрика относится к необязательным параметрам. В остальных двух таблицах это поле имеется, однако оно используется только в качестве признака непосредственно подключенной сети. Действительно, если в таблице маршрутизации каждая сеть назначения упомянута только один раз, то поле метрики не будет приниматься во внимание при выборе маршрута, так как выбор отсутствует. А вот признак непосредственно подключенной сети маршрутизатору нужен, потому что пакет для этой сети обрабатывается особым способом - он не передается следующему маршрутизатору, а отправляется узлу назначения. Поэтому метрика 0 для маршрутизатора NetBuilder или 1 для маршрутизатора MPR сообщает, что эта сеть непосредственно подключена к конкретному порту. Другое значение метрики соответствует удаленной сети. Выбор значения метрики для непосредственно подключенной сети является достаточно произвольным, главное, чтобы метрика удаленной сети отсчитывалась с учетом этого выбранного начального значения. В UNIX-маршрутизаторе используется поле признаков, где флаг G отмечает удаленную сеть, а его отсутствие - непосредственно подключенную.

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

Флаги записей присутствуют только в таблице UNIX-маршрутизатора. Они описывают характеристики записи:

U показывает, что маршрут активен и работоспособен. Аналогичный смысл имеет поле Status в маршрутизаторе NetBuilder;

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

G означает, что маршрут пакета проходит через промежуточный маршрутизатор (gateway). Отсутствие этого флага указывает на непосредственно подключенную сеть;

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

В таблице UNIX-маршрутизатора используется еще два поля, имеющих справочное значение. Поле Refcnt показывает, сколько раз на данный маршрут ссылались при продвижении пакетов. Поле Use отражает количество пакетов, переданных по данному маршруту.

В таблице маршрутизатора NetBuil-der также имеются два справочных поля. Поле времени жизни TTL (Time To Live) имеет смысл для динамических записей, с ограниченным сроком жизни. Текущее значение поля показывает оставшийся срок жизни записи в секундах. Поле Source отражает источник появления записи в таблице маршрутизации. Хотя это поле присутствует не во всех таблицах маршрутизаторов, но практически для всех маршрутизаторов существует три основных источника появления записи в таблице.

ИСТОЧНИКИ И ТИПЫ ЗАПИСЕЙ В ТАБЛИЦЕ МАРШРУТИЗАЦИИ

Первым источником является программное обеспечение стека TCP/IP. При инициализации маршрутизатора это программное обеспечение автоматически заносит в таблицу несколько записей, в результате чего создается так называемая минимальная таблица маршрутизации.

Во-первых, это записи о непосредственно подключенных сетях и маршрутизаторах по умолчанию, информация о которых появляется в стеке при ручном конфигурировании интерфейсов компьютера или маршрутизатора. В приведенных примерах к ним относятся записи о сетях 213.34.12.0 и 198.21.17.0, а также о маршрутизаторе по умолчанию - default в UNIX-маршрутизаторе и 0.0.0.0 в маршрутизаторе MPR Windows NT. В рассматриваемой таблице для маршрутизатора NetBuilder маршрутизатор по умолчанию не используется, следовательно, при поступлении пакета с адресом назначения, отсутствующим в таблице, этот пакет будет отброшен.

Во-вторых, программное обеспечение автоматически заносит в таблицу маршрутизации записи об адресах особого назначения. В таблице маршрутизатора MPR Windows NT содержится наиболее полный набор записей такого рода. Несколько записей связаны с особым адресом 127.0.0.0 (loopback), который используется для локального тестирования стека TCP/IP. Пакеты, направленные в сеть с номером 127.0.0.0, не передаются протоколом IP на канальный уровень для последующего направления в сеть, а возвращаются в источник - локальный модуль IP. Записи с адресом 224.0.0.0 предназначены для обработки групповых адресов (multicast address). Кроме того, в таблицу могут быть занесены адреса для широковещательных рассылок (например, записи 8 и 11 содержат адрес отправки широковещательного сообщения в соответствующих подсетях, а последняя запись в таблице - адрес ограниченной широковещательной рассылки сообщения). Заметим, что в некоторых таблицах записи об особых адресах вообще отсутствуют.

Вторым источником появления записи в таблице является администратор, непосредственно формирующий ее с помощью некоторой системной утилиты, например программы route, имеющейся в операционных системах UNIX и Windows NT. В аппаратных маршрутизаторах также всегда поддерживается команда для ручного задания записей таблицы маршрутизации. Заданные вручную записи всегда являются статическими, т. е. не имеют срока истечения жизни. Они могут быть как постоянными, т. е. сохраняющимися при перезагрузке маршрутизатора, так и временными, хранящимися в таблице только до выключения устройства. Часто администратор вручную заносит запись default о маршрутизаторе по умолчанию. Таким же образом в таблицу маршрутизации может быть внесена запись о специфичном для узла маршруте, где вместо номера сети содержится полный IP-адрес, т. е. адрес, имеющий ненулевую информацию не только в поле номера сети, но и в поле номера узла. Для такого конечного узла маршрут должен выбираться не так, как для всех остальных узлов сети, к которой он относится. В случае, когда в таблице есть разные записи о продвижении пакетов для всей сети и ее отдельного узла, при поступлении пакета, адресованного узлу, маршрутизатор отдаст предпочтение записи с полным адресом узла.

И, наконец, третьим источником записей могут быть протоколы маршрутизации, такие, как RIP или OSPF. Данные записи всегда являются динамическими, т. е. имеют ограниченный срок жизни. Программные маршрутизаторы Windows NT и UNIX не показывают источник появления той или иной записи в таблице, а маршрутизатор NetBuilder использует для этой цели поле Source. В приведенном в Таблице 2 примере первые две записи созданы программным обеспечением стека на основании данных о конфигурации портов маршрутизатора - это показывает признак Connected. Следующие две записи обозначены как Static, что указывает на то, что их ввел вручную администратор. Последняя запись появилась в результате работы протокола RIP, поэтому в ее поле TTL имеется значение 160.

Наталья Олифер - ответственный редактор LAN. С ней можно связаться по адресу:

Формат командной строки:

ROUTE [-f] [-p] [-4|-6] command

Подсказку по параметрам командной строки можно получить используя встроенную справку (route /?):

-f - Очистка таблиц маршрутов от записей всех шлюзов. При указании одной из команд таблицы очищаются до выполнения команды.

-p - При использовании с командой ADD задает сохранение маршрута при перезагрузке системы. По умолчанию маршруты не сохраняются при перезагрузке. Пропускается для остальных команд, изменяющих соответствующие постоянные маршруты. Этот параметр не поддерживается в Windows 95.

-4 - Обязательное использование протокола IPv4.

-6 - Обязательное использование протокола IPv6.

command - Одна из следующих команд:

- PRINT - Печать маршрута
- ADD - Добавление маршрута
- DELETE - Удаление маршрута
- CHANGE - Изменение существующего маршрута

destination - Адресуемый узел.

MASK - Указывает, что следующий параметр интерпретируется как маска сети.

netmask - Значение маски подсети для записи данного маршрута. Если этот параметр не задан, по умолчанию используется значение 255.255.255.255.

gateway - Шлюз.

interface - Номер интерфейса для указанного маршрута.

METRIC - Определение метрики, т.е. цены для адресуемого узла. Чем ниже значение метрики, тем выше приоритет узла при построении маршрута.

Поиск всех символических имен узлов проводится в файле сетевой базы данных NETWORKS. Поиск символических имен шлюзов проводится в файле базы данных имен узлов HOSTS.

Для команд PRINT и DELETE можно указать узел и шлюз с помощью подстановочных знаков или опустить параметр "шлюз".

Если адресуемый узел содержит подстановочные знаки * или?, он используется в качестве шаблона, и печатаются только соответствующие ему маршруты. Знак "*" соответствует любой строке, а "?" - одному знаку.

Примеры: 157.*.1, 157.*, 127.*, *224*.

Соответствие шаблону поддерживает только команда PRINT.

Диагностические сообщения:

Недопустимое значение MASK вызывает ошибку, если (УЗЕЛ & МАСКА) != УЗЕЛ.

Например:
route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1 - Добавление маршрута завершится ошибкой, поскольку указан недопустимый параметр маски. (Узел & Маска) != Узел.

Примеры:

route PRINT - отобразить таблицу маршрутов
route PRINT -4 - отобразить таблицу маршрутов только для IPv4
route PRINT -6 - отобразить таблицу маршрутов только для IPv6
route PRINT 157* - отобразить таблицу маршрутов только для узлов, начинающихся со 157

Если сетевой интерфейс (IF) не задан, то производится попытка найти лучший интерфейс для указанного шлюза.

route ADD 3ffe::/32 3ffe::1 - добавить новый маршрут для узла с IPv6

route CHANGE 157.0.0.0 MASK 255.0.0.0 157.55.80.5 METRIC 2 IF 2 - изменить существующий маршрут для узла IPv4

Параметр CHANGE используется только для изменения шлюза или метрики.

route DELETE 157.0.0.0 - удалить маршрут для IPv4.

route DELETE 3ffe::/32 - удалить маршрут для IPV6

Примеры использования команды ROUTE

route print - отобразить текущую таблицу маршрутов.

Пример отображаемой таблицы:


Список интерфейсов
24...00 50 ba 5d 0c c4 ......D-Link DFE-538TX 10/100 адаптер
13...00 19 db ce 97 9c ......Сетевая карта Realtek RTL8169/8110 Family NIC
1...........................Software Loopback Interface 1
17...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP
12...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
===========================================================================

IPv4 таблица маршрута

===========================================================================
Активные маршруты:
===========================================================================

Постоянные маршруты:
===========================================================================

IPv6 таблица маршрута
===========================================================================
Активные маршруты:
===========================================================================

Постоянные маршруты:
Отсутствует

Список интерфейсов - отображаются идентификаторы (ID), физические (MAC) адреса и названия сетевых адаптеров. В примере:
24 - идентификатор интерфейса
00 50 ba 5d 0c c4 - MAC-адрес сетевого адаптера
D-Link DFE-538TX 10/100 адаптер - название сетевого адаптера.

Сетевой адрес (Network Destination) - IP-адрес, адрес сети, или адрес 0.0.0.0 используемый для шлюза по умолчанию (Default Gateway). Это конечная точка маршрута

Маска сети (Netmask) - маска сети.

Адрес шлюза (Gateway) - IP-адрес шлюза, через который будет выполняться отправка пакета для достижения конечной точки.

В Windows Vista / Windows 7 / 8 и более поздних версиях, для адресов, достижимых локально, в данной колонке отображается On-link . Другими словами, значение On-link в колонке "Шлюз" означает, что шлюз не используется, адрес назначения достижим напрямую, без маршрутизации.

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

Метрика (metric) - значение метрики (1-9999). Метрика представляет собой числовое значение, позволяющее оптимизировать доставку пакета получателю, если конечная точка маршрута может быть достижима по нескольким разным маршрутам. Чем меньше значение метрики, тем выше приоритет маршрута.

route print 192.* - отобразить таблицу маршрутов только для адресов, начинающихся с 192.

route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 - установить в качестве шлюза по умолчанию (основного шлюза) адрес 192.168.1.1

route -p add 10.0.0.0 mask 255.0.0.0 10.0.0.1 - добавить маршрут для подсети 10.0.0.0/255.0.0.0 и запомнить его в реестре. Это постоянный статический маршрут. Если маршрут добавлен без использования параметра -p то он сохраняется только до перезагрузки системы (до перезапуска сетевого системного программного обеспечения). Если же, при добавлении маршрута искользовался данный параметр, то информация о маршруте записывается в реестр Windows (раздел HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes) и будет использоваться постоянно при активации сетевых интерфейсов.

route delete 10.0.0.0 mask 255.0.0.0 - удалить маршрут для подсети 10.0.0.0/255.0.0.0 .

route add 10.10.10.10 192.168.1.158 - добавить маршрут для узла с IP-адресом 10.10.10.10 . Если маска в команде не задана, то подразумевается ее значение равное 255.255.255.255 , т.е конечная точка назначения является одиночным IP-адресом узла.

route delete 10.10.10.10 - удалить маршрут созданный предыдущей командой

route change 10.0.0.0 mask 255.0.0.0 10.10.10.1 - изменить адрес шлюза для существующего маршрута к сети 10.0.0.0/255.0.0.0 на значение 10.10.10.1 Допускается использование данной команды только для изменения адреса шлюза и метрики.

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

Не относятся к петлевому интерфейсу (интерфейсу с IP 127.0.0.1 и маской -255.0.0.0)
- не являются маршрутами для многоадресной (multicast) рассылки (IP 224.0.0.1 маска 255.0.0.0)
- не являются узловыми маршрутами (когда маска равна 255.255.255.255) .

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

В этой книге описаны принципы действия и область применения многих серверов, выполняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забыты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В данной книге нашли отражения также средства удаленного администрирования - инструменты Linuxconf, Webmin и SWAT.

Данная книга несомненно окажется полезной как начинающим, так и опытным системным администраторам.

Отзывы о книге

Сетевые средства Linux

Появилась прекрасная книга по Linux, осталось воспользоваться ею. Не упустите свой шанс.

Александр Стенцин, Help Net Security,

www.net-security.org

Если вы стремитесь в полной мере использовать сетевые возможности Linux - эта книга для вас. Я настоятельно рекомендую прочитать ее.

Майкл Дж. Джордан, Linux Online

Выхода подобной книги давно ожидали читатели. Менее чем на 700 страницах автор смог изложить суть самых различных вопросов, связанных с работой Linux. Автор является высококвалифицированным специалистом в своей области и щедро делится своими знаниями с читателями.

Роджер Бертон, West, DiverseBooks.com

Книга:

Разделы на этой странице:

Таблица маршрутизации выполняет две задачи. Во-первых, она сообщает системе, на какой из интерфейсов следует передавать информационные пакеты. На первый взгляд может показаться, что если на компьютере установлен лишь один сетевой интерфейс, то ответ на этот вопрос очевиден. На самом деле это не так. Дело в том, что на каждом из компьютеров, работающих под управлением системы Linux, поддерживается интерфейс обратной петли. Этот интерфейс соответствует сети 127.0.0.0/8, но реально при работе с ним используется лишь один IP-адрес 127.0.0.1. Поскольку этот интерфейс присутствует на всех компьютерах, многие программы используют его для взаимодействия с другими локальными программами. При этом обеспечивается более высокая скорость обмена, чем при использовании традиционных сетевых интерфейсов. Для того чтобы распределять трафик между интерфейсом локальной петли и обычными сетевыми интерфейсами, существуют специальные правила. Вторая задача, которую выполняет таблица маршрутизации, состоит в управлении трафиком, предназначенным для компьютеров в локальной сети. Для маршрутизации в локальной сети используется протокол ARP (Address Resolution Protocol - протокол преобразования адресов). Пакеты, предназначенные узлам локальной сети, непосредственно передаются соответствующим компьютерам, а пакеты, адресованные удаленным узлам, передаются посредством маршрутизатора, или шлюза. В большинстве случаев в таблице маршрутизации Linux указывается лишь один шлюз, но встречаются также более сложные конфигурации с несколькими шлюзами. Для заполнения таблицы маршрутизации используется команда route.

На заметку

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

Структура таблицы маршрутизации

Таблица маршрутизации содержит набор записей, которые определяют, как должны обрабатываться пакеты, в зависимости от адреса их назначения. Когда программа передает пакет, предназначенный для передачи ядру, последнее сравнивает адрес назначения с адресами или диапазонами адресов, указанными в записях таблицы, начиная с наиболее конкретных адресов, т.е. с диапазона, определяющего сеть наименьшего размера. Если адрес назначения пакета соответствует очередному адресу или диапазону, для передачи пакета используется правило, указанное в таблице маршрутизации, в противном случае сравнение продолжается. Самое универсальное из правил носит название маршрута по умолчанию, оно определяет любой адрес Internet. Маршрут по умолчанию обычно направляет пакет через шлюз локальной сети.

Для чтобы лучше понять, как используется таблица маршрутизации, рассмотрим пример такой таблицы. На рис. 2.2 показана таблица маршрутизации, которая отображается в результате выполнения команды route -n (более подробно команда route будет рассмотрена в следующем разделе). Записи таблицы, изображенной на рисунке, упорядочены так, что в начале расположены записи, определяющие наиболее конкретные правила обработки, а в конце таблицы находятся наиболее универсальные правила. В первой записи указан адрес назначения 255.255.255.255, т. е. широковещательный адрес. Широковещательные пакеты передаются через интерфейс eth0 , при этом шлюз не используется. В последующих двух записях содержатся адреса назначения 10.92.68.0 и 192.168.1.0, которые представляют собой адреса локальных сетей; им соответствует маска подсети 255.255.255.0, которая указана в столбце Genmask . Эти две записи направляют трафик соответственно через интерфейсы eth1 и eth0 . Если компьютер содержит только один сетевой интерфейс, в таблице маршрутизации будет указана лишь одна подобная запись. Четвертая запись соответствует интерфейсу обратной петли (в некоторых разновидностях Linux, например в системе Debian, при выводе таблицы маршрутизации этот маршрут не отображается, но он учитывается при обработке пакетов). Обратите внимание, что этот интерфейс имеет имя lo (оно содержится в столбце Ifасе таблицы). Последняя запись, в которой указан адрес назначения 0.0.0.0, определяет маршрут по умолчанию. Этот адрес вместе с маской подсети 0.0.0.0 соответствует любому адресу, при сравнении которого с адресами, указанными в предыдущих правилах, был получен отрицательный результат. В этом случае трафик направляется через интерфейс eth1 . Маршрут по умолчанию - единственный маршрут в таблице, для которого был указан шлюз (в данном случае 10.92.68.1).


Рис. 2.2 . Для того чтобы определить маршрут пакета, надо сравнить его адрес назначения с адресом, указанным в столбце Destination , и учесть при этом маску подсети, значение которой отображается в столбце Genmask

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

Использование route

Если утилита route вызывается без параметров, она отображает текущее содержимое таблицы маршрутизации. Такой же результат будет получен при указании некоторых опций (например, опции -n , которая указывает на то, что при выводе содержимого таблицы вместо доменных имен должны отображаться числовые IP-адреса). Однако в основном route предназначена для добавления, удаления и изменения записей о маршрутах. Синтаксис route имеет следующий вид:

route add|del [-net|-host] target [ interface ]

Ниже перечислены опции данной утилиты и описано их назначение.

Add|del . Опция add задается тогда, когда необходимо добавить в таблицу запись о новом маршруте, а опция del позволяет удалить существующую запись. При добавлении нового маршрута необходимо задать дополнительную информацию. При удалении можно ограничиться указанием адреса назначения.

[-net|-host] . В качестве адреса назначения вы можете задать либо адрес сети (-net), либо адрес конкретного компьютера (-host). В большинстве случаев route способна самостоятельно отличить адрес сети от адреса узла, но иногда необходимо явно указать тип адреса. Чаще всего данную опцию приходится задавать, определяя маршрут к небольшой сети, подключенной с помощью отдельного шлюза.

адрес_назначения . Адрес назначения принадлежит сети или отдельному компьютеру, которому маршрутизатор должен передать пакет. Для маршрута по умолчанию используется адрес 0.0.0.0 либо эквивалентное ему ключевое слово default . Этот параметр необходимо указывать при добавлении или удалении маршрута.

Если адреса сети, которой должны быть переданы пакеты, соответствуют традиционной схеме распределения адресов, утилита route , пользуясь сетевыми средствами Linux, сама определит значение маски подсети. В противном случае вам необходимо явно задать маску подсети, указав при вызове route параметр netmask nm . (Вместо использования данного параметра вы можете указать число бит, выделяемых для представления адреса сети, в составе адреса назначения.)

Если вы определяете маршрут, который не проходит через шлюз, можете не указывать этот параметр. Если же целевой узел подключен через шлюз, необходимо задать адрес этого шлюза, указав при вызове route gateway gw . В частности, данный параметр используется при определении маршрута по умолчанию.

На рис. 2.2 среди прочих изображен столбец Metric . В нем отображается метрика маршрута, т.е. "стоимость" передачи пакета. Чаще всего за "стоимость" принимается время передачи пакета. Таким образом, маршрутам, на которых встречаются линии с низким быстродействием, соответствуют высокие значения метрики, а "быстрым" маршрутам - низкие значения метрики. Параметр metric m используется только в том случае, если компьютер выполняет роль маршрутизатора. Подробно вопросы настройки маршрутизаторов будут рассмотрены в главе 24.

Параметр mss m задает максимальный размер сегмента (MSS - Maximum Segment Size). Подобно metric m , данный параметр используется в основном в маршрутизаторах.

Размер окна (TCP Window Size) - это объем данных, которые могут быть переданы передающим узлом, не дожидаясь получения подтверждения с принимающего узла. Если задано небольшое значение данного параметра, скорость обмена данными уменьшится, так как передающий компьютер будет простаивать, ожидая подтверждения приема пакета. Если указать слишком большой размер окна, повышается вероятность того, что вследствие возникновения ошибки передающему узлу придется повторять передачу большого объема информации. Поэтому наилучшее решение - использовать размер окна по умолчанию (в системе Linux он составляет 64 Кбайт). Если данные по линии передаются быстро, но с большой задержкой (например, если используется спутниковая связь), то целесообразно увеличить размер окна до 128 Кбайт.

[ имя_интерфейса ] . Как правило, система Linux по IP-адресу самостоятельно определяет используемый интерфейс. Однако в некоторых случаях необходимо указать интерфейс явно, задавая при вызове route параметр имя_интерфейса . (Ключевое слово dev указывать не обязательно, достаточно задать имя интерфейса, например eth0 или tr1 .)

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

# route add 0.0.0.0 gw 10.92.68.1

Адрес 0.0.0.0 можно заменить ключевым словом default ; результат выполнения команды от этого не изменится. Несколько реже при вызове route приходится указывать имя устройства, опцию -net и некоторые другие опции.

Использование нескольких интерфейсов и одного шлюза

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

Вызов ifconfig для каждого из интерфейсов компьютера.

Одиночный вызов route для добавления в таблицу маршрутизации маршрута по умолчанию.

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

# echo "1" > /proc/sys/net/ipv4/ip_forward

На заметку

Если компьютер содержит два сетевых интерфейса (т.е. одновременно принадлежит двум сетям), но не должен выполнять функции маршрутизатора, не следует разрешать перенаправление IP-пакетов.

На заметку

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

Если провайдер выделил для вашего компьютера лишь один IP-адрес, но вы хотите организовать доступ к Internet с нескольких компьютеров, подключенных к локальной сети, вам необходимо использовать специальный тип маршрутизатора, в котором используется технология NAT (Network Address Translation - преобразование сетевых адресов). Эта технология подробно описана в главе 25. Настройка системы NAT выполняется подобно настройке обычного маршрутизатора, кроме того, в этом случае приходится выполнять дополнительные команды, разрешающие преобразование адресов. В результате такого преобразования вся локальная сеть выглядит извне как один компьютер.

Использование нескольких интерфейсов и шлюзов

Если компьютер с несколькими интерфейсами должен передавать пакеты на различные шлюзы, его настройка несколько усложняется. Большинство систем работает с одним шлюзом, через который проходит маршрут по умолчанию. Такой шлюз соединяет локальную сеть с другой сетью, и в большинстве случаев посредством этого же шлюза осуществляется взаимодействие с Internet. Однако возможны и другие варианты конфигурации сети. Рассмотрим локальные сети, представленные на рис. 2.3. Как видно на рисунке, две локальные сети, принадлежащие различным подразделениям одной организации, соединены с помощью маршрутизаторов. Конфигурация обычных компьютеров, принадлежащих этим сетям, очень проста; в маршруте по умолчанию в качестве адреса шлюза указан адрес маршрутизатора, через который локальная сеть подключена к другой сети. Несмотря на то что маршрутизатор сети Office 2 имеет два интерфейса, в маршруте по умолчанию, заданном в его таблице маршрутизации, роль шлюза играет маршрутизатор сети Office Маршрутизатор сети Office 1 имеет более сложную конфигурацию. Его маршрут по умолчанию обеспечивает обмен пакетами с Internet, кроме того, трафик, предназначенный для сети 172.20.0.0/16, должен передаваться на маршрутизатор Office 2. Чтобы такая передача пакетов могла выполняться, необходимо вызвать следующую команду:

# route add -net 172.20.0.0 netmask 255.255.0.0 gw 172.21.1.1


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

На заметку

Структура, показанная на рис. 2.3, имеет смысл только в том случае, если сети Office 1 и Office 2 расположены далеко друг от друга и для их взаимодействия используется один из протоколов поддержки удаленного соединения. Если же подразделения находятся рядом, например в одном здании, целесообразно подключить обе сети к одному концентратору или коммутатору. При этом обе сети могут обслуживаться одним маршрутизатором.

В данном случае предполагается, что маршрутизатор Office 2 использует для соединения с маршрутизатором Office 1 сетевой интерфейс с адресом 172.21.1.1. Заметьте, что этот адрес не принадлежит сети Office 2 (все компьютеры сети Office 2 соединены с маршрутизатором Office 2 через один интерфейс, а маршрутизатор Office 1 подключен к нему через другой интерфейс). Если кроме приведенной выше команды для маршрутизатора Office 1 также задать с помощью утилиты route маршрут по умолчанию, то в результате в таблице маршрутизации будут определены два шлюза: один в качестве маршрута по умолчанию, а другой - для управления трафиком, предназначенным для сети Office 2. Заметьте, что остальные компьютеры в сети Office 1 не обязаны знать об особенностях настройки маршрутизатора, в них должна содержаться лишь информация о маршруте по умолчанию, в котором роль шлюза выполняет маршрутизатор этой сети.

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

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

  • тип протокола - информацию о протоколе маршрутизации, создавшем запись в таблице маршрутизации;
  • связка получатель/следующий узел сообщает маршрутизатору о том, что определенный получатель либо подключен непосредственно, либо может быть достигнут через другой маршрутизатор, называемый следующим транзитным узлом (next hop), находящийся на пути к пункту назначения. Маршрутизатор анализирует адрес получателя во входящих пакетах и сравнивает его на соответствие с записями в таблице маршрутизации;
  • метрики маршрутизации. Различные протоколы маршрутизации используют разные метрики, которые помогают определить предпочтительность маршрута. Например, протокол RIP использует счетчик транзитных узлов (hop count) в качестве метрики маршрутизации. Протокол IGRP использует пропускную способность, загрузку канала, суммарную задержку передачи и надежность для формирования комплексного значения метрики;
  • выходной интерфейс - интерфейс, через который должны быть отправлены данные, чтобы достичь пункта назначения.

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

Таблица маршрутизации представляет собой ряд записей, каждая из которых задает адрес назначения и следующий участок маршрута для его достижения. Ниже показано содержимое таблицы маршрутизации одного из трех маршрутизаторов, которые служат для создания одной небольшой объединенной сети на основе четырех сетей. Первые две сети имеют префикс класса А, третья сеть имеет префикс класса В, а четвертая сеть имеет префикс класса С. Каждому маршрутизатору присвоено два IP- адреса, по одному для каждого интерфейса.

Упрощенная таблица маршрутизации

  1. адрес получателя берется непосредственно из заголовка пакета;
  2. сетевая маска первой записи в таблице маршрутизации применяется к адресу получателя в пакете;
  3. после того как маска умножается на адрес получателя (логическая операция ‘‘И’’), полученная величина сравнивается с записью в таблице маршрутизации;
  4. если оба значения совпали, пакет пересылается на интерфейс (порт) маршрутизатора, с которым связана данная запись в таблице маршрутизации;
  5. если же совпадений значений нет, описанным выше образом проверяется следующая запись в таблице маршрутизации;
  6. если адрес пакета не соответствует ни одной из записей в таблице маршрутизации, маршрутизатор проверяет, есть ли у него стандартный маршрут;
  7. если в маршрутизаторе сконфигурирован стандартный маршрут, пакет передается на соответствующий ему порт маршрутизатора.

Например:

Предположим, что дейтаграмма с адресом назначения 192.4.10.3 поступила в маршрутизатор, который содержит таблицу маршрутизации, показанную выше. Предположим также, что программное обеспечение выполняет поиск записи в таблице по порядку. Первая запись не подходит, поскольку 255.0.0.0&192.4.10.3 не равно 30.0.0.0. После исключения второй и третьей записи в таблице маршрутизации выбирается следующий участок маршрута с адресом 128.1.0.9, поскольку 255.255.255.0&192.4.10.3 = 192.4.10.0

Источники и типы записей в таблице маршрутизации

Почти для всех маршрутизаторов существует три основных источника появления записи в таблице

  1. Программное обеспечение стека TCP/IP. При инициализации маршрутизатора оно автоматически заносит в таблицу несколько записей, в результате чего создается так называемая минимальная таблица маршрутизации. Программное обеспечение формирует записи о непосредственно подключенных сетях и маршрутах по умолчанию, информация о которых появляется в стеке при ручном конфигурировании интерфейсов компьютера или маршрутизатора. Также оно заносит в таблицу маршрутизации записи об адресах особого назначения.
  2. Еще один источник записей - администратор , непосредственно формирующий записи с помощью некоторой системной утилиты, например программы router, имеющейся в операционных системах Unix Windows 2000. В аппаратных маршрутизаторах также всегда имеется команда для ручного задания запсей таблицы маршруизации. Заданные вручную записи всегда являются статическими, то есть они не имеют срока жизни. Эти записи могут быть как постоянными, то есть сохраняющимися при перезагрузке маршрутизатора, так и и временными, хранящимися в таблице только до выключения устройства.
  3. Третий источник записей - протоколы маршрутизации . Такие записи всегда являются динамическими и имеют ограниченный срок жизни.

Таблица маршрутизации аппаратного маршрутизатора


Программные маршрутизаторы Unix Windows 2000 не показывают источник появления той или иной записи в таблице, а аппаратный маршрутизатор использует для этой цели поле поле сточника. На рисунке первые две записи созданы программным обеспечением стека на основании данных о конфигурации портов маршрутзатора - это показывает признак "подключена". Следующие две записи обозначены как статические - это означает, что их ввел вручную администратор. Последняя запись является следствием работы протокола RIP.