Демон РРР (pppd) - это свободно доступная реализация протокола точка-точка (Point-to-Point Protocol, РРР), работающая на многих системах Unix. Примеры настройки и применения pppd приводятся в главе 6. Команда pppd подчиняется следующему синтаксису:
pppd [устройство] [скорость] [ключи]
устройство - это имя последовательного порта, с которым работает протокол РРР, а скорость - его скорость передачи данных, указанная в битах в секунду. Сложность команды проистекает не из этих простых параметров, но из большого числа опций, которые она поддерживает. На деле опций так много, что их часто хранят в отдельном файле. Совместно с pppd используются три файла параметров: /etc/ррр/options, предназначенный для установки общесистемных параметров pppd; файл -/.ррргс, в котором определяются параметры pppd для конкретного пользователя; и файл /etc/ppp/options.device, отвечающий за установку параметров для последовательного устройства (например, параметры настройки устройства сиаО содержатся в файле /etc/ррр/options.cuaO). Порядок старшинства для параметров следующий: параметры из файла /etc/ppp/options.device имеют наивысший приоритет, за ними следуют параметры командной строки, параметры из файла -/.ррргс и, наконец, параметры из файла /etc/ррр/options. Некоторые из параметров, а именно связанные с безопасностью системы, будучи установлены в файле /etc/ррр/options, не могут переопределяться пользователем в командной строке или в файле -/.ррргс. Системный администратор может изменять любые установленные пользователем параметры в файле /etc/ppp/options.device.
Приводимый ниже перечень содержит все параметры настройки pppd, за исключением тех, что не относятся к TCP/IP:
локальный_1Р-адрес:удаленный_1Р-адрес - Определяет статические IP-адреса для локальной и удаленной машины. Любой из адресов может быть опущен. Например, 172.16.25.3: определяет только локальный адрес, а конструкция :172.16.25.12 определяет только удаленный адрес. По умолчанию в качестве локального IP-адреса используется адрес, связанный с именем узла локальной системы.
active-filte r filter-expression - Создает пакетный фильтр, определяющий, какие из пакетов представляют активный трафик соединения. Пакеты, соответствующие фильтру filter-expression, обнуляют таймер бездействия или приводят к инициализации канала, если он находится в режиме соединения по требованию. Компиляцию ядра и pppd следует производить с символом РРР_ FILTER. allow-ip address - Разрешает работу без аутентификации системам, соответствующим ука- занному адресу, который определяет отдельный узел или целую сеть.
asyncmap tap - Определяет управляющие ASCII-символы, передаваемые в виде 2-байтовых управляющих еэсаре-последовательностей. Первые 32 символа ASCII являются управляющими. Карта тар - это 32-битное шестнадцатеричное число, каждый бит которого представляет управляющий символ. Бит 0 (00000001) представляет символ 0x00; бит 31 (80000000) представляет символ Ox If . Если бит включен в карту, соответствующий биту символ должен передаваться в виде управляющей еэсаре-последовательности. В отсутствие инструкции asyncmap все управляющие символы передаются в виде управляющих евсаре-последовательностей.
auth - Требует применения протокола аутентификации. Протоколы аутентифи- кации CHAP и РАР описаны в главе 6. bsdcomp receive, transmit - Включает механизм сжатия пакетов BSD-Compress. Максимальная длина кодового слова (в битах), применяемого для сжатия принимаемых уз- лом пакетов, определяется параметром receive. Максимальная длина кодового слова (в битах), применяемого для сжатия передаваемых узлом пакетов, определяется параметром transmit. Допустимая длина кодового слова лежит в интервале от 9 до 15 бит. Чтобы отключить сжатие принимаемых или передаваемых пакетов, следует установить в значение 0 параметр receive или transmit соответственно.
call nate - Считывает настройки из файла /etc/ррр/peers/nate.
cdtrcts - Указывает pppd, что в модеме применяется нестандартный аппаратный контроль передачи, основанный на сигналах DTR и CTS.
chap-interval n - Предписывает использовать протокол CHAP (Challenge Handshake Authentication Protocol) для повторной идентификации удаленной системы с интервалом п секунд.
chap-max-challenge n - Предписывает посылать вызовы CHAP до п раз, пока удаленная система не ответит. По умолчанию — 10 раз.
chap-restart n - Предписывает выждать п секунд перед повторным вызовом CHAP, если удаленная система не отвечает. По умолчанию - 3 секунды.
connect script - Вызывает сценарий script для создания последовательного соединения.
Сценарий может быть написан на любом языке, но, как правило, используется chat. В главе б приводится пример применения инструкции connect для вызова chat-еценария.
connect-delay n - Предписывает ожидать получения корректного РРР-пакета от удаленной системы в течение п миллисекунд после завершения работы сценария подключения.
crtscts - Включает аппаратный контроль передачи (RTS/CTS).
debug - Регистрирует все переданные и полученные пакеты посредством syslogd в режиме демона с уровнем debug. Инструкция debug может записываться в виде -d.
default-asyncmap - Отключает согласование карт asyncmap; все управляющие символы передаются в виде 2-байтных еэсаре-последовательностей.
default-mru - Отключает согласование максимальной длины принимаемого блока; используется значение MRU по умолчанию - 1500 байт.
defaultroute - Определяет канал РРР в качестве маршрута по умолчанию. Маршрут удаляется при разрыве соединения.
deflate nr,nt - Предписывает pppd использовать по возможности сжатие пакетов Deflate. nr определяет максимальный размер окна получения данных в виде степени двойки. При значении nr, равном 8, окно получения (2 в восьмой степени) имеет размер 256 байт, nt определяет максимальный размер окна передачи данных в виде степени двойки. Если значение nt не указано, оно принимается равным значению nr.
demand - Переводит канал в режим подключения при необходимости (dial-on-demand mode). Сетевое соединение осуществляется только при наличии сетевого трафика.
disconnect script - Вызывает сценарий script для мягкого прерывания последовательного соединения. Может применяться любой язык сценариев, но обычно это chat.
domain name - Определяет имя локального домена. Воспользуйтесь данной настройкой, если команда hostname не возвращает полное доменное имя локальной машины.
escape x,x,.. - Предписывает передавать перечисленные символы в виде двухсимвольных управляющих евсарпоследовательностей. При перечислении символы разделяются запятыми и записываются в шестнадцатеричной системе. Допускаются любые символы, кроме принадлежащих интервалу 0x20-0x3f и символа 0х5е.
endpoint epdisc - Определяет конечный ограничитель, передаваемый удаленной системе в процессе согласования многоканального логического соединения (multilink). По умолчанию передается МАС-адрес первого Ethernet-интерфейса либо, в отсутствие Ethernet-интерфейсов, IP-адрес системы, epdisc имеет формат тип-.значение, где тип может принимать одно из значений: local, IP, MAC, magic или phone, а значение - IP-адрес в десятичном представлении через точку для типа IP, имя Ethernet-интерфейса для типа MAC либо строка, состоящая из шестнадцатеричных байтов, разделяемых двоеточиями, для всех прочих типов. Многоканальные логические соединения возможны только в системах Linux.
file file - Определяет дополнительный файл настроек с именем file. Обычно настройки читаются из файлов /etc/ррр/options, -/.ррргс, командной строки, а также из /etc/ppp/options.device. Описание этих файлов дается выше в тексте раздела.
hide-password - Скрывает строки паролей при регистрации в журнале содержимого пакетов протокола парольной идентификации РАР (Password Authentication Protocol).
holdoff n - Предписывает выжидать п секунд перед восстановлением разорванного соединения.
idle n - Предписывает разрывать соединение, если в течение п секунд не происходила передача или получение пакетов.
init script - Выполняет сценарий script для инициализации последовательной линии.
ipcp-accept-local - Предписывает использовать локальный IP-адрес, предоставленный удаленным сервером, даже если адрес определен локально.
ipcp-accept-remote - Предписывает использовать удаленный IP-адрес, предоставленный удаленным сервером, даже если адрес определен локально.
ipcp-max-configure n - Предписывает посылать пакеты IPCP configure-request не более п раз. По умолчанию не более 10 раз.
ipcp-max-failure n - Предписывает принимать до п пакетов IPCP configure-NAK перед посылкой пакета configure-reject. По умолчанию до 10 пакетов.
ipcp-max-terminate n - Предписывает передавать не более п пакетов IPCP terminatrequest в случае отсутствия подтверждения. По умолчанию не более 3 пакетов.
ipcp-restart n - Предписывает выждать п секунд перед повторной передачей пакета IPCP configure-request. По умолчанию 3 секунды. ipparam string - Передает строку string сценариям ip-up и ip-down. /etc/ppp/ip-up - это сценарий командного интерпретатора, который выполняется pppd, когда канал начинает работу. Сценарий интерпретатора /etc/ррр/ip-down выполняется pppd, когда работа канала прерывается.
ipv6 local_interface_identifier} remote_interface_identifier - Устанавливает 64-битные идентификаторы для локального и удаленного интерфейсов. В качестве формата идентификатора служит стандартное ASCII-представление адреса IPv6. В отсутствие заданных значений система создает случайные идентификаторы. (См. также ipv6cp-use-ipaddr и ipv6cp-use-persistent.)
ipv6cp-max-configure n - Предписывает системе посылать пакеты IPv6CP configure-request не более n раз. По умолчанию не более 10 раз.
ipv6cp-max-failure n - Предписывает системе принимать до п пакетов IPv6CP configure-NAK. По умолчанию до 10 пакетов.
ipv6cp-max-terminate n - Предписывает системе передавать не более п пакетов IPvoCP terminate-request. По умолчанию не более 3 пакетов.
ipv6cp-restart n - Предписывает системе ждать п секунд перед повторной передачей пакета IPv6CP configure-request. По умолчанию 3 секунды.
ipv6cp-use-ipaddr - Предписывает системе использовать IPv4-aflpec системы в качестве IPv6- идентификатора локального интерфейса.
ipv6cp-use-persistent - Предписывает системе использовать уникальный постоянный идентификатор системы в качестве 1Ру6-идентификатора локального интерфейса. Большинство систем не поддерживают работу с постоянными идентификаторами.
kdebug n - Включает диагностику на уровне ядра. При п = 1 отображаются общие отладочные сообщения, при п = 2 отображаются полученные пакеты, при n = 4 - переданные пакеты.
ktune - Предписывает системе разрешить pppd изменять настройки ядра. Например, в Linux-системе программа pppd способна включать IP-ретрансляцию установкой в единицу значения /proc/sys/net/ipv4/ip_forward - если это разрешено инструкцией ktune.
lcp-echo-failure n - Предписывает разорвать соединение, если нет реакции на п LCP-пакетов echo-request. Как правило, сообщения echo-request не используются с такой целью, поскольку разрыв канала определяется аппаратурой модема.
lCD-echo-interval n - Предписывает выждать n секунд до передачи следующего LCP-пакета есho-request, если удаленная система не отвечает.
lcp-max-configure n - Предписывает посылать LCP-пакеты configure-request не более n раз. По умолчанию не более 10 раз.
lcp-max-failure n - Предписывает принимать до л LCP-пакетов configure-NAK перед посылкой configure-reject. По умолчанию до 10 пакетов.
lcp-max-terminate n - Предписывает передавать не более л LCP-пакетов terminate-request в случае отсутствия подтверждения. По умолчанию не более 3 пакетов.
lcp-restart n - Предписывает выждать л секунд перед повторной передачей LCP-пакета configure-request. По умолчанию 3 секунды.
linkname name - Устанавливает логическое имя канала (name), pppd записывает идентификатор собственного процесса в файл ррр-пате , pid, расположенный в каталоге /var/run либо /etc/ррр. Файл отражает связь экземпляра pppd с определенным каналом.
local - Предписывает игнорировать управляющие линии модема DCD (Data Carrier Detect) и DTR (Data Terminal Ready).
lock - Предписывает использовать блокировку в стиле UUCP, чтобы обеспечить pppd монопольный доступ к последовательному устройству.
logfd n - Предписывает регистрировать сообщения в файле с дескриптором п.
logfile filename - Предписывает добавлять сообщения к файлу журнала (filename).
login - Предписывает использовать файл /etc/passwd для аутентификации пользователей РАР. Факт регистрации в системе отражается в файле wtmp.
maxconnect n - Ограничивает максимальное время соединения значением в п секунд. По истечении п секунд соединение разрывается, даже если оно активно.
maxfail n - Устанавливает максимальное число последовательных попыток подключения к удаленной системе. По умолчанию п равно 10.
modem - Предписывает использовать управляющие линии модема DCD (Data Carrier Detect) и DTR (Data Terminal Ready); перед открытием последовательного устройства ожидать сигнала DCD (наличие несущей частоты); сбрасывать сигнал DTR (готовность к принятию данных) при закрытии соединения.
mp - Сокращенный вариант инструкции multilink. См. описание multilink.
mpshortseq - Предписывает использовать короткие, 12-битные порядковые номера в заголовках многоканальных соединений вместо стандартных 24-битных.
mrru n - Устанавливает размер MRRU (Maximum Reconstructed Receive Unit) в n байт. MRRU - это максимальный размер пакета, который может быть по- лучен по многоканальному соединению. Значение интерпретируется ана- логично MRU для других видов транспорта.
mru n - Устанавливает MRU (Maximum Receive Unit) в n байт. Значение MRU сообщает удаленной системе максимальный размер пакета, который с пособна принять локальная система. Минимальное значение - 128. По умолчанию -1500.
ms-dns address - Позволяет указывать адреса DNS для клиентов Microsoft Windows.
ms-wins address - Позволяет указывать адреса серверов WINS (Windows Internet Name Services) для клиентов Microsoft Windows.
mtu n - Устанавливает MTU (Maximum Transmission Unit) в n байтов. MTU определяет максимальную длину для передаваемых пакетов. Максимальная длина пакета определяется меньшим из значений локального MTU и MRU удаленной системы.
multilink - Включает протокол многоканальных соединений, позволяющий использовать ряд физических каналов в качестве одного логического. Протокол применяется для повышения скорости обмена данными с удаленной системой. Например, два модемных подключения к одной удаленной системе могут рассматриваться в качестве одной многоканальной связки, удваивающей полосу пропускания. Данная возможность в настоящее время доступна только для систем Linux.
name name - Предписывает использовать имя name в качестве имени локальной системы при проверке подлинности.
netmask mask - Задает маску подсети.
noaccomp - Запрещает согласование сжатия Address/Control.
noauth - Разрешает доступ без идентификации.
nobsdcomp - Отключает сжатие BSD-Compress.
noccp - Отключает согласование по протоколу ССР (Compression Control Protocol, протокол управления сжатием).
nocrtscts - Отключает все виды аппаратного контроля переда
nodtrcts - Отключает все виды аппаратного контроля передачи.
nodefaultroute -
nodeflate - Отключает сжатие Deflate.
nodetach - Предотвращает запуск pppd в фоновом режиме. См. примеры в главе 6.
noendpoint - Запрещает прием и передачу конечного ограничителя для многоканальных соединений.
noip - Отключает протоколы IPCP и IP.
noipv6 - Запрещает согласование по IPv6CP и обмен данными по IPv6.
noipdefault - Запрещает использование команды hostname для определения локального IP-адреса. Адрес должен быть получен от удаленной системы либо установлен явным образом при помощи параметра.
noktune - Запрещает pppd изменять значения параметров настройки ядра.
nolog - Отключает ведение журнала.
nomagic - Запрещает согласование «магического числа».
nomp - Отключает протокол многоканальных соединений.
nompshortseq - Запрещает применение коротких, 12-битных порядковых номеров для протокола многоканальных соединений.
nomultilink - Отключает протокол многоканальных соединений.
nopcomp - Запрещает согласование сжатия полей протокола. По умолчанию сжатие полей протокола не используется. Применение данной инструкции означает, что сжатие не будет использовано даже при явном запросе удаленной системы.
nopersist - Предписывает завершить работу после того, как установлено соединение. Разорванное соединение не восстанавливается. Таково поведение по умолчанию.
nooredictor1 - Запрещает использование сжатия Predictor-1.
noproxyarp - Запрещает применение proxyarp, то есть создание прокси-АЛР-записей пользователями pppd.
notty - Предписывает pppd передавать символы на стандартный вывод, а получать их со стандартного ввода. Применение инструкции увеличивает задержки и непроизводительные расходы.
novj - Запрещает сжатие заголовков по методу Van Jacobson.
novjccomp - Запрещает при сжатии заголовков по методу Van Jacobson сжимать идентификатор соединения.
papcrypt - Запрещает принимать пароли, совпадающие с указанными в файле /etc/ ррр/pap-secrets, поскольку хранимые пароли зашифрованы, и полученный в процессе проверки подлинности пароль не должен совпадать с записями файла pap-secrets до шифрования.
pap-max-authreq n - Предписывает передавать не более п РАР-запросов на идентификацию, если удаленная система не отвечает. По умолчанию не более 10 раз.
pap-restart n - Предписывает выждать п секунд перед повторной передачей РАР-запроса на идентификацию. По умолчанию 3 секунды.
pap-timeout n - Устанавливает интервал ожидания идентификации удаленной системы в n секунд. При n = 0 ограничений по времени нет.
pass-filter filter-expression - Создает пакетный фильтр, определяющий, какие пакеты разрешено передавать и принимать по каналу РРР. Пакеты, не соответствующие фильтру, удаляются без предупреждения. Выражение filter-expression имеет синтаксис, определенный для команды tcpdump.
passive - Предписывает дождаться пакета LCP (Link Control Protocol, протокол управления каналом) от удаленной системы, даже если она не ответила на первый LCP-пакет, отправленный локальной системой. В отсутствие данной инструкции локальная система разрывает соединение, не получив ответа. Инструкция passive может записываться в виде - р.
persist - Предписывает системе повторно открыть соединение, если оно было разорвано по сигналу SIGHUP.
plugin filename - Загружает объект динамической библиотеки в качестве подключаемого модуля pppd.
predictorl - Предписывает запрашивать у удаленной системы применение сжатия Predictor-1.
privgroup group-name - Разрешает всем членам группы group-name пользоваться привилегирован- ными инструкциями.
proxyarp - Разрешает использование прокси-ARP. В таблицу ARP локальной системы добавляется прокси-АНР-запись для удаленной системы.
pty script - Указывает сценарий, выполняемый в порожденном процессе. Сценарий используется в качестве источника данных вместо терминала. При использовании совместно с инструкцией record каналы стандартного ввода / вывода порожденного процесса связаны с конвейерами. receive-all - Предписывает принимать все управляющие символы от второй стороны, даже подлежащие удалению согласно стандартным процедурам asyncmap-обработки, определенным в RFC 1662.
record filename - Предписывает записывать все переданные и полученные символы в файл filename.
remotename name - Предписывает использовать имя пате в качестве имени удаленной системы при проверке подлинности.
refuse-chap - Запрещает применение CHAP. Это не очень хорошая мысль.
refuse-pap - Запрещает применение PAP.
require-chap - Предписывает использовать CHAP.
require-pap - Предписывает использовать PAP. show-password - Разрешает отображать пароль при регистрации пакетов PAP.
silent - Предписывает дожидаться LCP-пакета от удаленной системы, не посылая начальный LCP-пакет.
sync - Предписывает использовать синхронные протоколы физического уровня HDLC вместо стандартного асинхронного протокола.
updetach - Предписывает отсоединиться от управляющего терминала (переход в фоновый режим работы) после того, как установлено соединение.
usehostname - Предписывает использовать локальное имя узла для идентификации. Отменяет действие инструкции name.
usepeerdns - Предписывает запрашивать у удаленной системы до двух адресов серверов DNS. Полученные адреса передаются сценарию /etc/ppp/ip-up в переменных среды DNS1 и DNS2. Кроме того, pppd использует эти адреса для создания патевеп/ег-записей в файле /etc /ррр/resolv.conf.
user username - Предписывает использовать имя username для РАР-идентификации, инициированной удаленной системой.
vj-max-slots n - Предписывает использовать п каналов соединений для сжатия заголовков Van Jacobson. Число п должно принадлежать интервалу от 2 до 16.
welcome script - Предписывает выполнить сценарий script перед началом согласования взаимодействия РРР.
xonxoff - Включает программный контроль передачи (XON/XOFF).
Некоторые из перечисленных инструкций касаются вопросов безопасности РРР, которая представляет одну из сильных сторон протокола. Предпочтительным протоколом безопасности РРР является CHAP (Challenge Handshake Authentication Protocol). Менее безопасный протокол РАР (Password Authentication Protocol) поддерживается только для совместимости с менее функциональными системами. Имена пользователей, IP-адреса и секретные ключи, используемые в работе этих протоколов, определяются в файлах /etc/ ррр/chap-secrets и /etc/ррр/pap-secrets. Форматы файлов и их применение описаны в главе 6.
Очень важно проследить, чтобы каталог /etc/ррр и его содержимое не были доступны для записи всем пользователям или определенной группе пользователей. Изменения в файлах chap-secrets, pap-secrets и options могут подвергнуть риску безопасность системы. Кроме того, файлы сценариев /etc/ppp/ip-up и /etc/ррр/ip-down могут выполняться с привилегиями адми- нистратора системы. Если в каталоге /etc/ррр существует файл с именем ipир, он выполняется pppd, как только установлено РРР-соединение. Сценарий ip-up используется для внесения изменений в таблицу маршрутизации, обработки очередей sendmail, а также решения других задач, связанных с наличием сетевого соединения. Сценарий ip-down выполняется pppd после закрытия РРР-соединения и используется для завершения процессов, работающих с каналом. Очевидно, что эти сценарии, как и весь каталог /etc/ppp, должны быть надежно защищены.