Сервер РРР может запускаться рядом способов. Первый способ - использовать 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 (по умолчанию не так). В таком случае пользователь, вошедший в систему по стандартной учетной записи, может выполнить команду:
|
которая запустит демон РРР. Если параметр auth существует в файле /etc/ ррр/options, то pppd выполняет аутентификацию удаленного клиента посредством CHAP или РАР. Когда подлинность,клиента установлена, демон создает представительскую ARP-запись для клиента в таблице ARP сервера, что позволяет другим системам локальной сети видеть клиента в качестве равноправного узла.
Из этих трех подходов я предпочитаю создание сценария, вызываемого программой login в качестве интерпретатора команд пользователя. Это избавляет от необходимости давать pppd полномочия суперпользователя и возлагать запуск сервера на пользователя. При этом доступна вся мощь команды pppd и все возможности программирования на языке интерпретатора команд.