В Linux. 2 Приобретение и инсталляция Linux. 3 Учебник по Linux 4 Администрирование системы. 5 The X window System. 6 Работа в сети

Вид материалаУчебник

Содержание


6.2.5 Запуск PPP на сервере.
6.2.6 Если Ваш PPP-сервер использует PAP (Password Authentication Protocol).
6.2.7 Использование MSCHAP.
Скрипт для связи с опознаванием по PAP/CHAP.
Timeout 3 \
Проверка работы скрипта.
6.2.8 Завершение PPP-соединения.
6.2.9 Наиболее распространенные проблемы с соединением.
Проблемы с адресами.
Поиск ошибок при неудачной попытке установить соединение.
Ничего не получается...
Подобный материал:
1   ...   65   66   67   68   69   70   71   72   73

6.2.5 Запуск PPP на сервере.


Приведенный выше скрипт ppp-on-dialer хорошо работает для тех серверов, которые после входа в систему автоматически запускают программу pppd. Однако некоторые серверы требуют, чтобы эта программа была явным образом запущена. Для этого нужно отредактировать скрипт ppp-on-dialer.

В конце скрипта (после строки, где ожидается и вводится пароль) надо ввести еще одну строку. В ней будет ожидаться приглашение командной оболочки сервера. Следует особо обходится с символами, которые имеют особый смысл в командных оболочках, например, для оболочки Bourne shell это символы:


$ [ ]


После того, как диалоговый скрипт обнаружил приглашение, он должен выдать команду, запускающую программу PPP на сервере.

Сервер, которым пользуется автор этих строк, использует стандартное приглашение оболочки Bash системы Linux:


[hartr@kepler hartr]$


на что требуется ответить:


# ppp


и на сервере будет запущен протокол PPP.

Можно предусмотреть различные ситуации следующей строкой в скрипте:


hartr--hartr ppp


Это означает, что если приглашение в установленное время не получено, то надо послать пустую строку и еще раз подождать приглашения.

Когда приглашение получено, посылается строка 'ppp'.

К концу предыдущей строки скрипта надо не забыть добавить символ \, так чтобы скрипт рассматривался как одна длинная строка!

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

6.2.6 Если Ваш PPP-сервер использует PAP (Password Authentication Protocol).


Если сервер использует для опознавания клиента протоколы PAP или CHAP, то требуется еще некоторая работа.

В дополнение к уже указанным, в файл /etc/ppp/options нужно добавить следующие строки:

#

# указать программе pppd использовать имя пользователя

# на сервере в качестве имени компьютера в процессе

# идентификации

#

name <имя пользователя в системе сервера> # отредактировать

# # эту строку

#

# Одну из следующих строк надо раскомментировать тем, у кого

# работает PPP-сервер. ВНИМАНИЕ: не надо раскомментировать

# эти строки при соединении в качестве клиента, даже если

# сервер использует PAP или CHAP (поскольку, работая на

# клиентском компьютере, эти строки дадут команду серверу

# использовать для опознавания себя протоколы PAP или CHAP;

# эту команду сервер почти наверняка не сможет выполнить,

# и связь не установится).

#

#+chap

#+pap

#

# Если используются зашифрованные пароли в файле

# /etc/ppp/pap-secrets, то надо раскомментировать следующую

# строку. ВНИМАНИЕ: это НЕ то же самое, что зашифрованный

# пароль в системе Microsoft Windows NT, который может быть

# установлен программой MS RAS

#

#+papcrypt

6.2.7 Использование MSCHAP.


Программа RAS в операционной системе Microsoft Windows NT может быть установлена так, что в ней будет использоваться модификация протокола CHAP. Среди исходных текстов программ PPP можно найти файл README.MSCHAP80, в котором обсуждается этот вопрос. Узнать о том, использует ли сервер для опознавания этот протокол, можно, установив опцию поиска ошибок (debugging) программы pppd. Если сервер использует протокол MS CHAP, то на экране будет примерно такая строка:


rcvd [LCP ConfReq id=0x2 ]


Индикатором здесь является строка auth chap 80.

Для того, чтобы использовать MS CHAP, надо будет заново откомпилировать программу pppd, чтобы включить туда поддержку этого протокола. Инструкции для компилирования и использования такой версии программы pppd можно также найти в файле README.MSCHAP80.

Если используется опознавание протоколом PAP или CHAP, то нужно создать файлы с секретными ключами (secrets file). Их имена будут соответственно /etc/ppp/pap-secrets и /etc/ppp/chap-secrets, принадлежность пользователю root, группе root с правами доступа 740.

Первое, что нужно знать о протоколах PAP и CHAP, это что они созданы для опознавания хостов, а не пользователей. Другими словами, после того, как компьютер совершил PPP-соединение с сервером, любой пользователь на этом компьютере сможет использовать это соединение.

Протокол PAP может, а протокол CHAP должен потребовать двустороннего опознавания, т.е. имя и ключ потребуются с каждой стороны. Однако большинство PPP-серверов, использующих PAP, этого не требуют.

Предоставляя услуги, провайдер обычно дает клиенту имя и пароль для входа в систему, и не интересуется тем, какое имя компьютера установлено в операционной системе на клиентском компьютере. Поэтому при соединении с сервером надо использовать имя пользователя, данное провайдером. Для этого используется опция name программы pppd. В файл /etc/ppp/options надо добавить строку:


name your_user name_at_your_ISP


(первый аргумент "локальное" имя пользователя, второй имя на сервере).

С технической точки зрения, на самом деле надо использовать команду user your_user name_at_your_ISP для PAP, однако программа pppd может использовать это имя в качестве имени пользователя, если оно требуется для PAP. Преимущество использования опции name в том, что она применима и к протоколу CHAP.

Поскольку протокол PAP предназначен для опознавания компьютеров, с технической точки зрения требуется также указать имя удаленного компьютера. Однако, поскольку в большинстве случаев используется один сервер, в файле с секретным ключом можно использовать для имени удаленного компьютера шаблон "*".

Файл /etc/ppp/pap-secrets устроен следующим образом:


# Секретные ключи для опознавания протоколом PAP

# клиент сервер ключ приемлемые_IP-адреса_клиента


Четыре поля в файле разделены пробелами; последнее поле может быть пустым (для динамического и, возможно, статического назначения IP-адреса сервером).

Пусть провайдер предоставил имя пользователя fred и пароль flintstone. Значение fred для опции name будет занесено в файл /etc/ppp/options, а файл /etc/ppp/pap-secrets будет выглядеть так:


# Секретные ключи для опознавания протоколом PAP

# клиент сервер ключ приемлемые_IP-адреса_клиента

fred * flintstone


В данном файле указывается, что клиентский компьютер по имени fred (это имя будет использоваться программой pppd, хотя настоящее имя компьютера может быть иным) с каждым сервером будет использовать пароль (секретный ключ) flintstone.

Заметим, что указывать IP-адрес клиента не требуется, если только сервер не требует, чтобы статический IP-адрес клиента обязательно указывался. Иначе, даже если адрес будет указан, для большинства PPP-серверов это не будет работать, так как они (по соображениям безопасности) не позволяют клиентам указывает те IP-адреса, которые им будут даны.

Процедура требует, чтобы опознавание было двусторонним, т.е. чтобы не только сервер опознавал клиента, но и клиент опознавал сервер.

Допустим, что имя клиентского компьютера fred, а имя сервера barney. Тогда клиент в файле /etc/ppp/options.ttySx должен указать значение опций name и remotename соответственно fred и barney, а сервер наоборот: barney и fred.

На компьютере fred файл /etc/chap-secrets будет выглядеть так:


# Секретные ключи для опознавания протоколом PAP

# клиент сервер ключ приемлемые_IP-адреса_клиента

fred barney flintstone

barney fred wilma


а на компьютере barney:


# Секретные ключи для опознавания протоколом PAP

# клиент сервер ключ приемлемые_IP-адреса_клиента

barney fred flintstone

fred barney wilma


Заметим в частности, что для двустороннего опознавания эти файлы для обоих компьютеров должны иметь строки, соответствующие опознаванию клиентом сервера и сервером клиента.
Скрипт для связи с опознаванием по PAP/CHAP.

Если сервер провайдера использует PAP/CHAP, то диалоговый скрипт выглядит гораздо проще. Все, что должен делать этот скрипт, это набрать номер, подождать соединения и передать управление для входа в систему программе pppd.


#!/bin/sh

#

# Это 2 часть скрипта ppp-on. Она осуществляет протокол

# соединения.

#

exec /usr/sbin/chat -v \

TIMEOUT 3 \

ABORT '\nBUSY\r' \

ABORT '\nNO ANSWER\r' \

ABORT '\nRINGING\r\n\r\nRINGING\r' \

'' \rAT \

'OK-+++\c-OK' ATH0 \

TIMEOUT 30 \

OK ATDP$TELEPHONE \

CONNECT '' \


Как и раньше, протоколирование сообщений можно включить опцией -d программы pppd. Это эквивалентно опции 'debug'.

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

Когда скрипт несколько раз подтвердит свою работоспособность, протоколирование можно будет отменить.


exec /usr/sbin/pppd debug file options.myserver /dev/ttyS0 38400 \

Проверка работы скрипта.

Для проверки работы откройте новый Xterm как root (если используется X Window System), или откройте новую виртуальную консоль. В этом новом сеансе надо ввести команду:


# tail -f /var/log/messages


Во многих системах протокол помещается именно в файл /var/log/messages. Если в данной системе для этого используется файл с другим именем, то команду, приведенную выше, надо соответственно изменить.

В первом окне (или с первой виртуальной консоли) надо ввести команду:


# ppp-on &


(если имя отредактированного скрипта /usr/sbin/ppp-on не было изменено).

Если этот скрипт не запускается в фоновом режиме путем приписывания символа & в конце команды, то приглашение консоли (терминала) пропадет до тех пор, пока программы PPP не закончат работу (до завершения связи).

После этого можно переключиться в окно (консоль), в котором будет вестись наблюдение за протоколом системы (system log).

6.2.8 Завершение PPP-соединения.


После того, как работа с PPP-связью завершена, ее надо завершить стандартной командой ppp-off (это может сделать пользователь root или пользователь группы ppp).

6.2.9 Наиболее распространенные проблемы с соединением.


Одна проблема может заключаться в том, что многие провайдеры поддерживают только те пакеты программного обеспечения, которые они предоставляют новым пользователям сервера. Обычно эти программы предназначены для операционной системы Microsoft Windows (и многие службы технической поддержки ничего не знают о системах UNIX и Linux). Так что можно рассчитывать на весьма ограниченную помощь провайдера.

Можно, разумеется, оказать частную услугу работникам технической поддержки, познакомив их с системой Linux (они могут иметь начальное представление о системе UNIX из работы в Интернете), которую они могут установить на собственных домашних компьютерах.
Проблемы с адресами.

Итак, PPP-соединение установлено и работает, и можно получить отклик от PPP-сервера командой ping, указав в качестве IP-адреса второй (удаленный) IP-адрес, выданный командой ifconfig ppp0.

Прежде всего, следует попытаться указать команде ping те IP-адреса, которые указаны в файле /etc/resolv.conf IP-адресами серверов имен. Если серверы откликаются и их IP-адреса отличны от IP-адреса сервера, то должна иметься возможность установить связь через сервер с внешним миром. Попробуйте задать в качестве аргумента команды ping полное имя сервера провайдера:


ping my.isp.net


(в эту команду надо подставить нужное имя). Если это не сработало, то имеются проблемы с разрешением имен. Возможно, имеется опечатка в файле /etc/resolv.conf, и его нужно тщательно сверить с образцом, приведенном в разделе 6.1.1.

Если файл проверен, а связь не устанавливается (и при этом провайдер подтверждает, что сервер работает нормально), то следует проверить общую конфигурацию системы Linux, обращая особое внимание на права доступа к файлам.

Если на команду ping не дают отклики серверы имен провайдера, то они могут быть выключены (об этом можно узнать по телефону), или имеются проблемы с маршрутами на сервере.

Одной из возможностей может быть та, когда на сервере стоит система Linux, где среди опций ядра системы не указано перенаправление сообщений в Интернет-протоколах (IP forwarding)!
Поиск ошибок при неудачной попытке установить соединение.

Причин неудачи при соединении может быть много (ошибки в работе диалогового скрипта, сильные шумы в телефонных линиях и т.п.). Поэтому при неудачах надо исследовать системные протоколы.

Весьма распространена ситуация, когда ядро системы Linux откомпилировано и в него включены функции поддержки PPP, но при запуске программы pppd ядро выдает сообщение, что поддержки PPP нет. Для этого имеется целый набор возможных причин.
  • Загружено не новое, а старое ядро без поддержки PPP.
  • Модули поддержки PPP откомпилированы, но не установлены.
  • Ожидается, что модули будут загружаться автоматически, однако это не так.
  • Используется не та версия PPP, которая нужна для данной версии ядра.
  • pppd запускается не пользователем root.
  • Имеется опечатка в стартовых скриптах.
  • Вход в систему сервера осуществляется неправильно.
  • Не запускается протокол PPP на сервере.
  • Процесс PPP на сервере начинается слишком медленно.
  • Не установлен маршрут по умолчанию.

Наилучшим средством решения проблем будет обратиться к документу PPP FAQ (который действительно представляет собой набор вопросов и ответов). Это весьма полезный документ, и там наверняка есть ответы на все важные вопросы. Скорее всего, если там нет ответа на конкретный вопрос, то проблема не связана с протоколом PPP!
Ничего не получается...

Если ничто не помогает наладить PPP-соединение, следует вернуться к началу этой главы и проверить все с начала и в соответствии с выдачей в файлах системных протоколов, созданных командами chat -v и pppd -d.

Следует также обратиться к документации по протоколу PPP, к документу PPP FAQ, а также к другим указанным в этом разделе источникам!

Если проблема остается, можно обратиться за помощью в телеконференции comp.os.linux.misc и comp.os.linux.networking, а также в comp.protocols.ppp. Эти телеконференции часто посещают специалисты, которые могут оказать помощь.

Если принято решение искать помощь в системе Usenet, не следует посылать очень длинные сообщения, содержащие системные протоколы, поскольку это перегружает сеть. Более продуктивно будет описать проблему словами и, возможно, включить несколько строк выдачи (объемом не более одного экрана).