• ррр-on. Этот сценарий устанавливает основные переменные, в частности, задает номер телефона провайдера и вызывает Linux-программу поддержки протокола PPP (pppd).
• ppp-on-dialer. Сценарий ррр-on передает pрр-on-dialer программе pppd, которая использует ppp-on-dialer для управления начальными этапами взаимодействия с компьютером провайдера.
• ppp-off. Этот сценарий завершает сеанс PPP-взаимодействия.
Для того чтобы обеспечить взаимодействие с провайдером, необходимо отредактировать сценарий ррр-on, а в некоторых случаях и сценарий ppp-on-dialer. Кроме того, вы, вероятно, захотите переместить все три сценария в каталог, из которого их было бы удобно взывать, например в /usr/local/bin. В сценарий ррр-on надо внести следующие изменения.
• Найдите переменную TELEPHONE и задайте в качестве ее значения номер телефона провайдера. В результате соответствующая запись должна иметь вид TELEPHONE=123-4567.
• Задайте значения переменных ACCOUNT и PASSWORD. Если провайдер использует протокол PAP, данные переменные не будут использоваться; в этом случае вы можете оставить их значения без изменения.
• Если провайдер предоставляет вам фиксированный IP-адрес и если вы знаете IP-адрес сервера провайдера, можете указать эти адреса в переменных LOCAL_IP и REMOTE_IP. Аналогично, если вам известна маска подсети, вы можете задать ее в качестве значения переменной NETMASK. В противном случае все три переменные можно оставить без изменения.
• Найдите переменную DIALER_SCRIPT и задайте ее значение так, чтобы она ссылалась на сценарий ppp-on-dialer. (Понятно, что DIALER_SCRIPT должна указывать не на исходный вариант файла, содержащийся в каталоге с документами, а на файл, содержимое которого вы изменили в соответствии с вашими требованиями.) По умолчанию для этой переменной задано значение /etc/ppp/ppp-on-dialer, но, как было сказано выше, вы можете выбрать расположение файла ppp-on-dialer по своему усмотрению.
• В конце сценария содержится вызов pppd. Эта программа поддерживает большое количество опций. Опции, указанные в сценарии, за исключением некоторых, изменять не следует. Возможно, вам придется задать имя файла устройства, используемого для подключения модема (по умолчанию указано устройство /dev/ttyS0), а также скорость взаимодействия компьютера с модемом (по умолчанию используется значение 38400, но скорость 115200, как правило, дает лучшие результаты).
Скорректировав содержимое ррр-on, можно приступать к редактированию сценария ppp-on-dialer. Этот сценарий управляет взаимодействием программы pppd с модемом, в частности, использованием команд, предназначенных для установления взаимодействия, а также процессом аутентификации (в случае, если провайдер не использует средства PAP или CHAP). Сценарий вызывает утилиту chat, предназначенную для обмена текстовыми данными. Основную часть сценария составляют пары строк, представляющие собой ожидаемые сообщения и ответы на них, расположенные в два столбца. В первом столбце указаны сообщения, которые ожидает получить сценарий, а во втором столбце — последовательности символов, которые программа chat посылает в ответ. Некоторые из сообщений имеют специальное назначение. Например, ABORT сообщает chat о необходимости прекращения работы в случае ошибки. Большинство строк оканчивается обратной косой чертой (), а это означает, что следующая строка является продолжением предыдущей. (На самом деле программе chat передается одна строка параметров; пары "сообщение-ответ" представлены в виде столбцов лишь для удобства восприятия.) В конце последней строки обратная косая черта отсутствует.
Изменения следует вносить только в последние три строки файла ppp-on-dialer. По умолчанию при составлении сценария предполагалось, что провайдер не использует PAP, поэтому в последних двух строках предусмотрена передача имени пользователя и пароля в ответ на запрос. (Имя пользователя и пароль хранятся в переменных ACCOUNT и PASSWORD; их значения задаются в сценарии ррр-on.) При необходимости вы можете удалить эти строки или поставить в начале их символы #, указывающие на то, что данные строки содержат комментарии. Если вы сделаете это, то вам также надо удалить обратную косую черту в третьей с конца строке. Удаление двух последних строк и изменение предшествующей им строки приведет к тому, что если pppd попытается использовать для аутентификации соединения протокол PAP или CHAP, chat завершит работу. Если протоколы PAP и CHAP не применяются, вам, возможно, потребуется отредактировать в последних строках сообщения, которые система ожидает получить от провайдера. Может быть, вы захотите выполнить дополнительные команды, например, запустить на компьютере провайдера программу поддержки PPP. В этом случае вам придется включить одну или несколько строк и указать в них в качестве ожидаемого сообщения приглашение для ввода команды.
Использование сценариев при установлении PPP-взаимодействия
Редактирование сценариев — наиболее трудоемкая часть работы по обеспечению PPP-взаимодействия. После того как данная задача выполнена, вам остается лишь ввести ррр-on, после чего соединение будет инициализировано. (Если сценарий ррр-on расположен в каталоге, который не учтен в переменной окружения PATH, вам придется указать полный путь к этому файлу.) Используя внешний модем, вы сможете следить за ходом установления соединения по светодиодным индикаторам на его панели; при соответствующей настройке модема вы также услышите характерный звук. Если соединение будет установлено нормально, то через несколько секунд вы получите доступ к Internet и сможете использовать клиент-программы для взаимодействия с Internet-серверами.
В случае возникновения проблем вам надо, прежде всего, ознакомиться с содержимым файла протокола (обычно сообщения об установлении соединения и возникающих при этом ошибках записываются в файл /var/log/messages). В конце файла должна содержаться информация о действиях программы pppd, включая операции, которые завершились неудачно. Там вы найдете сведения об истечении времени тайм-аута при ожидании PAP-аутентификации, об ошибках при выполнении chat и другие данные. Если вы не можете понять смысл сообщений, используйте термины, найденные в файле протокола, как ключевые слова при поиске на сервере http://groups.goggle.com. На этом сервере хранятся архивы сообщений, отправленных в группы новостей Usenet и посвященных сетевому взаимодействию системы Linux. Среди них вы найдете обсуждение проблем, связанных с установлением PPP-соединений. Не исключено, что какое-то из сообщений будет содержать ответ на ваш вопрос, либо, по крайней мере, вы поймете, в каком направлении следует искать решение проблемы. Полезными также будут сведения, содержащиеся в документе PPP HOWTO.
Большинство дистрибутивных пакетов сконфигурировано так, что инициализировать PPP-соединение может только пользователь root. Многие воспринимают это как недостаток. Подобные меры принимаются для того, чтобы повысить безопасность в том случае, когда на одном компьютере работают несколько пользователей. Однако иногда такие ограничения мешают в работе. Для того чтобы частично разрешить эту проблему, для программ, предназначенных для взаимодействия по коммутируемым линиям, устанавливается бит SUID, в результате чего эти программы запускаются с привилегиями root. Очевидно, что при этом снова приходится решать вопросы защиты. В частности, многие администраторы сужают круг пользователей, которые имеют право запускать подобные программы. Они создают группу PPP, включают в нее тех пользователей, которым действительно необходим доступ к удаленным узлам по коммутируемым линиям, устанавливают права доступа так, что запустить программу могут только члены группы PPP.
Многие провайдеры сообщают пользователям IP-адреса серверов DNS, которые должны использоваться при взаимодействии посредством PPP-соединения. Эти сведения можно включить в файл /etc/resolv.conf (структура данного файла обсуждалась выше).
Установление соединения по запросу
При работе на отдельной рабочей станции или компьютере необходимость использовать специальную программу установления взаимодействия или вручную запускать соответствующий сценарий практически не мешает работе. Если же PPP-соединением пользуется несколько компьютеров, подключенных к локальной сети, могут возникать проблемы. Часто пользователи пытаются установить соединение в то время, когда оно активно, разорвать соединение, когда другие пользователи обмениваются через него информацией с Internet, либо по окончании работы оставляют соединение активным на длительное время. Для решения этих проблем были созданы средства установления соединения по запросу (dial-on-demand). В системе Linux подобные функции выполняет инструмент под названием diald. Эта программа выявляет трафик, направленный из локальной сети к внешним узлам, и инициализирует PPP-соединение. Кроме того, если в течение определенного времени сетевая активность отсутствует, эта программа разрывает соединение. В результате клиентские программы, расположенные в локальной сети, могут работать почти так же, как и программы, находящиеся на компьютерах, постоянно подключенных к Internet; для того чтобы установить или разорвать PPP-соединение, пользователям не приходится предпринимать никаких действий. Различия проявляются лишь в том, что с момента, когда diald обнаруживает попытку обращения к внешнему узлу и до установления PPP-соединения, проходит определенное время. Это связано с тем, что система должна обратиться к модему, а модем, в свою очередь, установить соединение с модемом провайдера. Через некоторое время после прекращения сетевой активности соединение разрывается. Если вы зададите слишком малое значение этого интервала, задержка будет возникать слишком часто, так как с момента получения Web-страницы до запроса очередного документа сетевое взаимодействие отсутствует и система может разорвать соединение. Заметьте также, что если PPP-соединение не активно, при обращении к Web-странице броузер выведет сообщение о том, что документ не доступен. Причина в том, что время тайм-аута, используемое при работе броузера, значительно меньше времени, необходимого для установления PPP-соединения.