Сервер РРР может запускаться рядом способов. Первый способ - использовать pppd в качестве оболочки, вызываемой при регистрации пользователей, подключающихся по РРР. Замените имя командного интерпретатора в файле /etc/passwd полным именем pppd, чтобы запустить сервер. Измененная запись /etc/passwd может выглядеть так:

craig:wJxX.iPuPzg:101:100:Craig Hunt:/etc/ppp:/usr/sbin/pppd

Здесь все поля соответствуют стандартной записи файла /etc/passwd: имя пользователя, пароль, идентификатор пользователя, идентификатор группы, код gcos, исходный каталог, оболочка (интерпретатор команд), вызываемая после регистрации. Исходным каталогом для внешнего пользователя РРР является /etc/ррр, а в поле оболочки содержится полное имя программы pppd. Зашифрованный пароль должен быть указан при помощи программы passwd, точно так же, как для любого пользователя, и процесс регистрации в системе ничем не отличается от стандартного. Обнаружив данные, поступающие через последовательный порт, getty выполняет login в целях аутентификации пользователя, login проверяет введенное пользователем имя и пароль и запускает интерпретатор команд. В данном случае вместо интерпретатора запускается демон РРР.

При таком способе запуска сервера параметры настройки, как правило, размещаются в файле /etc/ррр/.ррргс. login проверяет подлинность пользователя, a pppd выполняет аутентификацию клиента. Поэтому нужно настроить файл chap-secrets или pap-secrets для работы с теми системами, из которых пользователи соединяются с сервером.

Традиционной альтернативой запуску pppd посредством login является создание сценария, в котором pppd - лишь одна из команд. Например, можно создать сценарий /etc/ppp/ppplogin следующего содержания:

#!/bin/sh
mesg -n
stty -echo
exec /sbin/pppd auth passive crtscts modem

Понятно, такой сценарий может содержать несколько команд. Команда mesg -n запрещает другим пользователям передавать данные на этот терминал посредством программ talk, write или других подобных. Команда stty отключает эхо-контроль символов. В некоторых системах символы, набираемые на терминале, отображаются эхом от удаленного узла, а не напрямую на локальном терминале. Такой режим называется полным дуплексом. В нем нет необходимости в случае канала РРР, так что мы его отключаем. Управление характеристиками физического канала - основная причина размещения команды pppd в отдельном файле сценария.


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

Параметр командной строки auth предписывает pppd выполнять аутентификацию удаленной системы, что, разумеется, требует присутствия записи для этой системы в файле chap-secrets или pap-secrets. Параметр crtscts включаот аппаратный контроль передачи, а параметр modem предписывает РРР отслеживать состояние индикатора DCD модема, чтобы вовремя обнаружить разрыв связи удаленной системой. Все эти параметры мы уже встречали ра- нее . Но один из параметров, passive, нам не знаком. Параметр passive предписывает локальной системе ожидать корректного LCP-пакета от удаленной системы, даже если удаленная система никак не отреагировала на первый пакет. В обычной ситуации локальная система разрывает соединение, не получив своевременного ответа. Данный параметр дает удаленной системе время на инициализацию собственного демона РРР.

Наконец, есть еще один вариант запуска сервера РРР - разрешить пользователям запускать сервер из приглашения интерпретатора команд. С этой целью демон pppd должен выполняться с полномочиями пользователя root (по умолчанию не так). В таком случае пользователь, вошедший в систему по стандартной учетной записи, может выполнить команду:

  • pppd proxyarp

которая запустит демон РРР. Если параметр auth существует в файле /etc/ ррр/options, то pppd выполняет аутентификацию удаленного клиента посредством CHAP или РАР. Когда подлинность,клиента установлена, демон создает представительскую ARP-запись для клиента в таблице ARP сервера, что позволяет другим системам локальной сети видеть клиента в качестве равноправного узла.

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