Проблемы с настройкой соединения
Если вам не удается установить соединение с провайдером, то надо, естественно, искать причину. Попробую дать несколько советов, как действовать в такой ситуации.
Первый совет, который на этот случай дают "классики": смотрите протоколы (лог-файлы)!
Во-первых, при запуске kppp установите во включенное состояние переключатель Монитор подключения в главном окне kppp. В окне монитора можно увидеть, что ожидает получить провайдер, и какую информацию посылает ваш компьютер. Зачастую можно подправить сценарий соединения, пользуясь только информацией, отображаемой в этом окне.
Во-вторых, надо запустить kppp так, чтобы он как можно подробнее протоколировал свои действия. Для этого снова войдите в окно настроек соединения kppp и задайте опцию запуска "debug" на вкладке Дозвон.
Кроме того, впишите следующие две строки в файл /etc/syslog.conf:
daemon.* /dev/console daemon.* /var/log/kppp.log
(обратите внимание на то, что между двумя частями записи в каждой строке должен быть хотя бы один символ табуляции). После внесения изменений в файл /etc/syslog.conf выполните команду kill -HUP <pid>, где <pid> - идентификатор запущенного в это время процесса syslogd. По этой команде syslogd перечитает свой конфигурационный файл. Следствием выполненных вами действий будет то, что pppd будет выдавать сообщения о своих действиях на консоль и записывать эти же сообщения в файл /var/log/kppp.log. Его и смотрите!
Искать в этом файле надо сообщения, начинающиеся на:
- "pppd[NNN]: Connected..." - означает, что скрипт соединения завершился успешно.
- "pppd[NNN]: sent [LCP ConfReq"... - сообщение о том, что pppd пытался начать диалог с удаленным сервером.
- "pppd[NNN]: rcvd [LCP ConfReq"... - сообщение о том, что pppd получил ответ (negotiation frame) от удаленного сервера.
- "pppd[NNN]: ipcp up" - означает, что pppd дошел до той точки, где, по его мнению, соединение готово для передачи по нему IP-трафика.
Если вы не находите строки с сообщением "rcvd", то у вас серьезные проблемы с установлением соединения (например, по каналу не передаются все 8 бит). В этом случае может оказаться полезным записывать в файл протокола весь поток байтов, передаваемых между Вашим компьютером и удаленным сервером. Для этого измените две упоминавшиеся выше строки в файле syslog.conf следующим образом:
daemon.*,kern.* /dev/console daemon.*,kern.* /var/log/kppp.log
и снова перезагрузите демон syslog, как это было сказано выше. Затем запустите pppd с опцией "kdebug 25". Теперь все символы, передаваемые по каналу PPP-соединения, будут записываться в файл протокола.
Просмотрите этот файл в поисках сообщений, похожих на следующее:
ppp_toss: tossing frame, reason = 4
Оно означает, что программа PPP не успевает обрабатывать пакеты от удаленной машины. Это может быть потому, что ваш центральный процессор не способен принимать символы с последовательного порта с той скоростью, с которой они поступают. Если в приведенной выше строке указана причина (Reason), отличная от 4, это может свидетельствовать о других сбоях в работе последовательного порта.
На начальном этапе установления соединения вы можете увидеть одно или несколько сообщений, содержащих строку "bad fcs". Это говорит об ошибках в контрольной сумме получаемых PPP-пакетов, и обычно случается в начале сессии, когда удаленная система посылает сообщения типа "hello this is the XYZ company". Если такие сообщения продолжают появляться тогда, когда соединение уже установлено, это говорит о шуме в телефонной линии и сбоях в передаче пакетов.
Может оказаться, что на сервере провайдера установлен Remout Access Server (RAS), который настроен на использование алгоритма аутентификации MS CHAP 80. Вы можете определить, запрашивает ли сервер установление подлинности, используя этот алгоритм, при анализе файла протокола pppd. Если сервер запрашивает установление подлинности по MS CHAP, то вы увидите строки типа:
rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]