Маршрутизация через PPP-линию
После установки сетевого интерфейса, pppd установит маршрут только к своему серверу. Если удаленный хост находится в локальной сети (LAN), вы обязательно захотите соединяться с хостами в ней, то есть должен быть установлен сетевой маршрут.
Маршрутизация через PPP-линию
После установки сетевого интерфейса, pppd установит маршрут только к своему серверу. Если удаленный хост находится в локальной сети (LAN), вы обязательно захотите соединяться с хостами в ней, то есть должен быть установлен сетевой маршрут.
Мы уже видели, что pppd можно попросить уствновить заданный по умолчанию маршрут, используя опцию
defaultroute. Эта опция очень полезна, если PPP-сервер, с которым вы связались, будет действовать как Internet-шлюз.
Обратный случай является относительно простым: ваша система действует как шлюз для единственного хоста. Например, возьмите некоторых служащих в Virtual Brewery, чья локальная машина называется oneshot. При соединении с vlager через PPP, она использует адрес в подсети Brewery. В vlager мы можем теперь дать pppd опцию proxyarp, которая установит ARP-запись для oneshot. Это автоматически сделает oneshot доступным для всех в Brewery и в Winery.
Однако, вещи далеко не всегда так просты, как иногда кажется, например, когда Вы соединяете две LAN-сети. Это обычно требует добавления специального сетевого маршрута, потому что эти сети могут иметь свой маршрут по умолчанию. Кроме того, если на обоих машинах использование связи PPP задано как маршрут по умолчанию, получится цикл, где блоки к неизвестным адресатам будут перебрасываться между машинами до окончания их времени жизни.
Как пример, предположим, что Virtual Brewery открывает ветвь в каком-нибудь другом городе. Подразделение запускает собственную сеть Ethernet, используя сетевой адрес 172.16.3.0, который является подсетью 3 сети Brewery класса B. Они хотят соединиться с Brewery Ethernet по PPP для того, чтобы модифицировать базы данных заказчиков и т.п. Снова vlager действует как шлюз, другая машина называется vbourbon и имеет IP-адрес 172.16.3.1. Такая сеть показана в приложении A.
Когда vbourbon соединится с vlager, она примет заданный по умолчанию маршрут к vlager как обычно. На vlager мы должны установить сетевой маршрут для подсети 3, который проходит к vbourbon. Для этого мы используем особенность pppd, которая еще не обсуждалась: команду ip-up. Это программа, размещенная в /etc/ppp, которая будет выполнена после того, как PPP интерфейс будет сконфигурирован. Когда он существует, эта программа вызывается со следующими параметрами
ip-up iface device speed local_addr remote_addr
Следующая таблица описывает все параметры этой программы (в первой колонке указаны имена параметров, используемые в скрипте):
Аргумент Имя
Описание
$1 iface Используемый сетевой интерфейс, например ppp0
$2 device Имя используемого последовательного устройства (если используется stdin/stdout, это будет /dev/tty)
$3 speed Скорость устройства бит в секунду
$4 local_addr Локальный адрес IP
$5 remote_addr
Удаленный адрес IP
В нашем случае, скрипт ip-up может содержать следующий фрагмент кода: #!/bin/sh case $5 in 172.16.3.1) # this is vbourbon route add -net 172.16.3.0 gw 172.16.3.1;; ... esac exit 0
В подобном режиме /etc/ppp/ip-down используется для того, чтобы отменить все действия ip-up после того, как связь PPP была завершена. В нашем скрипте
/etc/ppp/ip-down следует иметь команду route, которая отменит маршрут, созданный /etc/ppp/ip-up.
Однако схема матшрутов еще не полна. Мы установили записи таблицы маршрутов на оба PPP-хоста, но пока все другие хосты в обеих сетях не знают ничего относительно связи PPP. Это небольшая проблема, если все хосты в подразделении имеют свои, заданные по умолчанию маршруты в vbourbon, и все хосты в Brewery направляются по умолчанию на vlager. Если это не так, то ваш единственный выход в использованни демона динамической маршрутизации, например,gated. После создания сетевого маршрута на vlager он передаст новый маршрут всем хостам присоединенной подсети.