Иллюстрированный самоучитель по RedHatLinux

       

Создание РРР-соединения


К счастью, программное обеспечение pppd спроектировано так, что позволяет объединить

все операции - и работу с программой chat, и обработку всего процесса соединения. Перед попыткой установить соединение необходимо собрать некоторую информацию.

Будет ли IP-адрес назначаться при каждом соединении или IP-адрес будет постоянным? Поскольку работа большинства провайдеров Internet основана на динамическом выделении IP-адреса для каждого соединения, возможно, вы так и будете работать.

Как происходит, регистрация у провайдера Internet? Иногда используется простой текстовый запрос-ответ, иногда - специальный протокол аутентификации, называемый РАР. Изредка применяется аутентификационный протокол CHAP. Если для дозвона к ISP используется программное обеспечение терминала наподобие minicom, а для представления - один из видов регистрационной подсказки, то регистрация происходит с простой текстовой подсказки. Если на экране после соединения отображаются произвольные символы или, символов нет вообще, то, возможно, используется РАР или CHAP аутентификация.

Примечание

Все примеры в параграфе предполагают работу в режиме корневого пользователя (root). Поскольку процесс соединения через РРР требует манипуляций с интерфейсом и создания или удаления сетевых маршрутов, используемые программы запускаются в режиме пользователя root.

Совет

Сведения об используемых IP-адресах и аутентификационных протоколах также могут помочь вам сконфигурировать RP3 или КРРР. Обратитесь к своему провайдеру ISP, если у вас нет достоверных сведений в этой области.

Соединение с обычной текстовой подсказкой

Начнем с обычных текстовых подсказок - наиболее простых в использовании.

Так как pppd может брать управление модемом, но не может установить удаленное соединение или зарегистрироваться, необходим способ задания модему команд и обеспечения необходимой регистрационной информацией. Для установки соединения и регистрации используется программа chat. Она предназначена для организации обмена информацией в диалоговом режиме.


Обычно процесс удаленной связи на модеме запускается редактором терминала и в пустом окне терминала печатает команду набора номера, например ATDT12345678. В ответ выдается строка соединения, такая, как CONNECT 115 200, на которую пользователь не отвечает.





Примечание


Если вы ожидаете ответа на команду ATDT, подключите модем. Вмето приведенного в примере произвольного номера 1234567 задайте номер вашего провайдера ISP или сервера, обрабатывающего терминальные запросы.

Этот обмен можно преобразовать в простой сценарий chat.

"" ATDT1234567 CONNECT ""

Данный сценарий состоит из двух пар строк вида

"ожидать-ответить":

"" ATDT1234567 и CONNECT "". Пара "ожидать-ответить" содержит две порции информации, разделенных пробелом. В первой паре сценария программе chat указывается, что не следует ничего "ожидать", а в ответ необходимо отослать строку ATDT123 45 67. Как только сценарий запустит процесс, первое действие - отправка строки дозвона. Когда выполняется вторая пара, chat указывается необходимость ожидать строку CONNECT, а в ответ не отсылать ничего. Если на этом сценарий завершен, работа chat будет окончена.

Конечно, сценарий chat должен быть длиннее. Для полного сценария chat необходимо точно знать, что представляет собой регистрационная сессия в данном конкретном случае. Можно сформировать такой сценарий, используя для регистрации программное обеспечение терминала, такое как minicom.

Строка подсказки у большинства провайдеров Internet имеет следующий вид:

Username: Password:

или

Login: Password:

или даже

ogin: ssword:

Для примера рассмотрим первый случай. При иной регистрационной подсказке необходимо внести соответствующие изменения, как показано в следующем параграфе.



Примечание


Возможно, необходимо удалить первую букву подсказки в задании сценария. Это обусловлено тем, что различные операционные системы обращаются с первой буквой по-разному, и при работе с некоторыми ISP неизвестно, какая операционная система выдает подсказку при регистрации. При ожидании ogin: или as sword: сценарии работают, не воспринимая первую букву подсказки.



Итак, какова же следующая пара "ожидать-ответить"? После соединения пользователь представляется с помощью подсказки Username:, в ответ на которую вводится имя пользователя (пусть имя пользователя будет "testuser"). Пара "ожидать-ответить" для такого взаимодействия будет Username:

testuser.

Когда имя пользователя определено, выводится подсказка Password:, в ответ на которую надо ввести пароль (предположим, "testpas sword"). Получается пара "ожидать-ответить": Password:

testpassword.

Для большинства провайдеров Internet этого достаточно: РРР запускается на системе провайде-ра после корректного ввода пароля. Существует незначительное количество разновидностей систем ISP, которые при представлении пользователя выводят на экран подсказку, в которой следует напечатать команду для запуска РРР. В таком случае в сценарии необходимо создать дополнительную пару.

Для этого примера полный сценарий chat выглядит следующим образом:

"" ATDT1234567 CONNECT " " Username: testuser Password: testpassword

Для использования этого сценария с программой chat (которая обычно находится в /usr/ sbin) достаточно задать сценарий как параметр chat.

/usr/sbin/chat ' " ATDT1234567 CONNECT " " Username: testuser Password:

tes tpassword

При отсутствии интеграции с программой pppd и доступа к модему chat пытается устано

вить диалог посредством консоли. Это можно использовать для проверки сценария. Просто вве

дите команду в командной <строке. Когда на экране появится ATDT1234567, напечатайте

CONNECT и введите Username: В ответ на экран должно быть выведено testuser. Затем напечатайте Password: и в ответ должно появиться testpassword.



Примечание


Если необходимо исправить ошибки в сценарии chat, добавьте ключ -v к команде chat. Результат выполнения сценария записывается в системный файл протокола, который позже можно проанализировать для выявления ошибок.

После того, как сценарий написан, необходимо соединить его с pppd. Для этого можно исполь-зовать некоторые параметры pppd (приложение pppd имеет много дополнительных параметров, о которых можно узнать в руководстве по pppd). Мы будем использовать следующие параметры.



connect.

Применяется для определения программы или команды, при помощи которой устанавливается соединение по обычной линии связи. Данная опция определяет программу chat и ее сценарий.

noipdefault.

Работа pppd го-умолчанию - это определение IP-адреса локального компьютера на основании его имени. Но если ISP выделяет IP-адрес динамически, то noipdefault используется для сообщения pppd о том, что надо получить IP-адрес от удаленного компьютера, с которым осуществлено соединение.

defaultroute.

Эта опция сообщает pppd о необходимости добавить маршрут по умолчанию в системную маршрутную таблицу, используя удаленную систему как шлюз по умолчанию. Запись удаляется при разрыве соединения.

Команда pppd имеет следующую структуру.

$ pppd

device-name device-speed options

Если модем имеет максимальную скорость передачи сжатой информации 115200bps (модем 56Kbps), то при соединении с устройством /dev/modem для соединения с использованием chat сценария используется следующая команда:

$ pppd /dev/modem 115200 connect '/usr/sbin/chat "" ATDT1234567 CONNECT "

Username: testuser Password: testpassword' noipdefault defaultroute

При вводе данной команды модем начнет звонить, а после установления связи пользователь будет аутентифицирован и установится РРР-соединение. Если этот процесс пройдет успешно, будет выполнено следующее:

Во-первых, вызов команды /sbin/if conf ig без ключей и параметров вернет список интерфейсов, в том числе РРР интерфейс. Этот список выглядит примерно так:

ррр0 Link encap:Point-to-Point Protocol

inet addr:194.209.60.101 P-t-P:194.209.60.97

Mask:255.255.255 UP POINTOPOINT RUNNING MTU:1500 Metric:!

RX packets:10 errors:0 dropped:0 overruns:0 TX packets:11 errors:0 dropped:0 overruns:0

Во-вторых, в таблицу маршрутизации будут добавлены элементы для создания стандартного маршрута через удаленную машину (проверьте результат, использовав команду /sbin/route без ключей и параметров).

Kernel IP routing table



Destination Gateway Genmask Flags Metric Ref Use Iface

dul.paus.ch * 255-. 255.255,255 UH 0 00 ppp0

default dul.paus.ch 0 UG 0 0 0 ppp0

В этом примере dul .paus .ch - удаленный компьютер в РРР-соединении, назначенный шлюзом по умолчанию.



Соединение с аутентификацией РАР


Соединение с аутентификацией РАР основано на тех же принципах, что и соединение с текстовой подсказкой, но метод подачи имени пользователя и пароля отличаются.

Первое основное отличие в том, что имя пользователя и пароль не вводятся с командной строки как часть РАР сценария. Имя пользователя и пароль хранятся в специальном файле secrets, который используется при аутентификации РАР. В Red Hat Linux 7.1 это файл /etc/ppp/pap-secrets.

Доступ к данному файлу для чтения и записи имеет только пользователь root. У других пользователей нет права на чтение содержимого файла.



Формат записи файла


secrets:

username servername password

При подключении к серверу через модем и телефонную линию второй параметр не нужен Например, при использовании имени пользователя и пароля из предыдущего параграфа, запись должна иметь вид:

testuser * testpassword

Символ * обозначает, что этот пароль можно использовать для соединения с любым интерфейсом.

Когда имя пользователя и пароль записаны в файл, необходимо создать новый сценарий chat Для большинства провайдеров, как только модемное соединение устанавливается, начинается, аутентификация РАР. Поэтому сценарий chat прост:

"" ATDT12345678 CONNECT ""

Данный сценарий звонит ISP и убеждается, что сообщение connect получено перед окончанием работы программы chat и началом аутентификации.

В завершение необходимо ввести еще один параметр для pppd: user. Этот параметр указывает, какой пользователь РАР из файла pap-secrets аутентифицируется. В результате получаем следующую команду pppd:

$ pppd /dev/modem 115200 connect /usr/sbin/chat ""

ATDT1234567 CONNECT

1

noipdefault defaultroute user testuser





Как и в предыдущем примере с текстовой регистрацией, можно проверить, все ли в порядке при помощи команд if conf ig и route.


Содержание раздела