Как мы видели, простейшая таблица маршрутизации позволяет работать лишь с узлами, расположенными в напрямую подключенных физических сетях. Обращение к удаленным узлам требует добавления в таблицу маршрутизации маршрутов, пролегающих через внешние шлюзы. Одним из решений задачи является создание статической таблицы маршрутизации при помощи команд route.
С помощью команды Unix route можно вручную добавить или удалить записи таблицы маршрутизации. Так, чтобы добавить маршрут 207.25.98.0 в таблицу маршрутизации системы Solaris, наберите:
# route add 207.25.98.0 172.16.12.1 1 add net 207.25.98.0: gateway crab
Первый аргумент команды route - ключевое слово add. Первым ключевым словом в командной строке route может быть add либо delete, и оно предписывает route соответственно добавить новый маршрут либо удалить существующий. Значения по умолчанию нет - в отсутствие ключевых слов route просто отображает таблицу маршрутизации.
Следующее значение - адрес пункта назначения, то есть адрес, доступный по атому маршруту. Конечный адрес может быть представлен IP-адресом, именем сети из файла /etc/networks, именем узла из файла /etc/hosts либо ключевым словом default. Поскольку добавление большинства маршрутов происходит достаточно рано в процессе загрузки системы, численные IP-адреса используются чаще, чем имена. Такое положение снимает зависимость настройки маршрутизации от доступности и состояния серверов имен. Всегда используйте полные численные адреса, состоящие из четырех байтов, route выполняет расширение адреса, содержащего меньше четырех байтов, и полученный результат может достаточно сильно отличаться от желаемого.
Если конечный адрес представлен ключевым словом default, route создает маршрут по умолчанию.2 Маршрут по умолчанию используется в случаях, когда отсутствует явный маршрут в конечную сеть. Зачастую маршрут по умолчанию - единственный необходимый маршрут. Если сеть работает с одним шлюзом, используйте маршрут по умолчанию, чтобы передавать через этот шлюз весь трафик, предназначенный внешним сетям.
Далее в командной строке route следует адрес шлюза, а именно IP-адрес внешнего шлюза, через который передаются данные. Шлюз должен располагаться в сети с прямым подключением. Маршруты TCP/IP определяют следующий транзитный участок в пути к пункту назначения. Этот следующий транзитный участок должен быть напрямую доступен локальному узлу; следовательно, он должен быть в сети с прямым подключением.
И последний аргумент в командной строке - метрика маршрутизации. Аргумент метрики отсутствует при удалении маршрутов, но в некоторых более старых системах его присутствие обязательно для добавления маршрута. В Solaris 8 метрика является необязательной. Системы, требующие наличия аргумента метрики, используют его, только чтобы определить, пролегает маршрут через напрямую подключенный интерфейс или же через внешний шлюз. В случае нулевой метрики маршрут создается как проходящий через локальный интерфейс, и флаг G, который мы наблюдали в выводе команды netstat -i , отсутствует. Если значение метрики больше нуля, для маршрута устанавливается флаг G, и адрес считается адресом внешнего шлюза. В статической маршрутизации метрики не используются по назначению. Меняющиеся значения метрики имеют смысл только в динамической маршрутизации.