соответствует любому адресу, при сравнении которого с адресами, указанными в предыдущих правилах, был получен отрицательный результат. В этом случае трафик направляется через интерфейс eth1
. Маршрут по умолчанию — единственный маршрут в таблице, для которого был указан шлюз (в данном случае 10.92.68.1).
Рис. 2.2. Для того чтобы определить маршрут пакета, надо сравнить его адрес назначения с адресом, указанным в столбце Destination, и учесть при этом маску подсети, значение которой отображается в столбце Genmask
При активизации интерфейса с помощью ifconfig
эта утилита автоматически включает в таблицу маршрутизации запись, соответствующую активизированному интерфейсу. Эта запись определяет маршрут к сети, которая подключена через данный интерфейс. Сценарий, выполняющихся при загрузке Linux, добавляет в таблицу запись для интерфейса обратной петли. Запись, соответствующая широковещательному маршруту, не обязательна, но используется некоторыми утилитами. Во многих случаях единственной записью, которую приходится создавать вручную, остается маршрут по умолчанию.
route
Если утилита route
вызывается без параметров, она отображает текущее содержимое таблицы маршрутизации. Такой же результат будет получен при указании некоторых опций (например, опции -n
, которая указывает на то, что при выводе содержимого таблицы вместо доменных имен должны отображаться числовые IP-адреса). Однако в основном route
предназначена для добавления, удаления и изменения записей о маршрутах. Синтаксис route
имеет следующий вид:
route add|del [-net|-host]
Ниже перечислены опции данной утилиты и описано их назначение.
• add|del
. Опция add
задается тогда, когда необходимо добавить в таблицу запись о новом маршруте, а опция del
позволяет удалить существующую запись. При добавлении нового маршрута необходимо задать дополнительную информацию. При удалении можно ограничиться указанием адреса назначения.
• [-net|-host]
. В качестве адреса назначения вы можете задать либо адрес сети (-net
), либо адрес конкретного компьютера (-host
). В большинстве случаев route
способна самостоятельно отличить адрес сети от адреса узла, но иногда необходимо явно указать тип адреса. Чаще всего данную опцию приходится задавать, определяя маршрут к небольшой сети, подключенной с помощью отдельного шлюза.
•
. Адрес назначения принадлежит сети или отдельному компьютеру, которому маршрутизатор должен передать пакет. Для маршрута по умолчанию используется адрес 0.0.0.0 либо эквивалентное ему ключевое слово default
. Этот параметр необходимо указывать при добавлении или удалении маршрута.
• [netmask
. Если адреса сети, которой должны быть переданы пакеты, соответствуют традиционной схеме распределения адресов, утилита route
, пользуясь сетевыми средствами Linux, сама определит значение маски подсети. В противном случае вам необходимо явно задать маску подсети, указав при вызове route
параметр netmask
. (Вместо использования данного параметра вы можете указать число бит, выделяемых для представления адреса сети, в составе адреса назначения.)
• [gateway
. Если вы определяете маршрут, который не проходит через шлюз, можете не указывать этот параметр. Если же целевой узел подключен через шлюз, необходимо задать адрес этого шлюза, указав при вызове route gateway
. В частности, данный параметр используется при определении маршрута по умолчанию.
• [metric
. На рис. 2.2 среди прочих изображен столбец Metric. В нем отображается metric
используется только в том случае, если компьютер выполняет роль маршрутизатора. Подробно вопросы настройки маршрутизаторов будут рассмотрены в главе 24.
• [mss
. Параметр mss
задает максимальный размер сегмента (MSS — Maximum Segment Size). Подобно metric
, данный параметр используется в основном в маршрутизаторах.
• [window
. Размер окна (TCP Window Size) — это объем данных, которые могут быть переданы передающим узлом, не дожидаясь получения подтверждения с принимающего узла. Если задано небольшое значение данного параметра, скорость обмена данными уменьшится, так как передающий компьютер будет простаивать, ожидая подтверждения приема пакета. Если указать слишком большой размер окна, повышается вероятность того, что вследствие возникновения ошибки передающему узлу придется повторять передачу большого объема информации. Поэтому наилучшее решение — использовать размер окна по умолчанию (в системе Linux он составляет 64 Кбайт). Если данные по линии передаются быстро, но с большой задержкой (например, если используется спутниковая связь), то целесообразно увеличить размер окна до 128 Кбайт.
• [[dev]
. Как правило, система Linux по IP-адресу самостоятельно определяет используемый интерфейс. Однако в некоторых случаях необходимо указать интерфейс явно, задавая при вызове route
параметр [dev]
. (Ключевое слово 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