The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройка callback в pppd (ppp callback cbcp dialup)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: ppp, callback, cbcp, dialup,  (найти похожие документы)
From: Juri Milodanovic <jm@evpatoria.net> Newsgroups: http://jm.evpatoria.net/pppd-cbcp.html Subject: Настройка callback в pppd Настройка callback в pppd _________________________________________________________________ Идея прозвонки к провайдеру, который поддерживает callback, основывается на использовании chat-скриптов. При первоначальной прозвонке pppd "просит" провайдера перезвонить, отключается, а затем модем переходит в режим ожидания ответа. После поступления входящего звонка устанавливается PPP-соединение. Более подробно о настройке pppd можно прочитать в статье Игоря Сысоева (http://www.sysoev.ru/pppd/), с которой настоятельно рекомендую ознакомиться. Для такой прозвонки понадобятся два chat-скрипта. Первый - это скрипт, который будет запрашивать у удаленной стороны callback. Запишем его в файл /etc/ppp/chat-cbcp: #!/bin/sh # # Request for callback # chat -V -s \ ABORT "ERROR" \ ABORT "NO DIALTONE" \ TIMEOUT 5 \ "" "AT" \ "OK" "ATZ" \ "OK" "ATS7=60\&C0\&D1" \ ABORT "BUSY" \ ABORT "NO ANSWER" \ ABORT "NO CARRIER" \ ABORT "Login incorrect" \ "OK" "ATDT1234567" \ TIMEOUT 30 \ "CONNECT" "\\c" \ TIMEOUT 10 \ "rname:" "\\c" exit 0 Скрипт должен иметь права доступа 0500 (r-x --- ---). Само собой, что вместо 1234567 вам необходимо указать телефон своего провайдера. После того, как дозвонились, удаленная сторона спрашивает "Username:" и происходит PAP-аутентификация. В этом случае нужно создать файл /etc/ppp/pap-secrects с правами доступа 0600 (rw- --- ---) и записать в него ваш логин, название удаленной системы и пароль: jm my_isp pass627789 Название удаленной системы может быть любым. Что же касается пароля, то в нем могут использоваться специальные символы, например '#', который будет рассматриваться как начало комментария. Поэтому такой пароль необходимо заключить в двойные кавычки: jm my_isp "pass62#7789" Если провайдер PAP-аутентификацию не поддерживает, потребуется небольшая переделка скрипта: #!/bin/sh # # Request for callback # chat -V -s \ ABORT "ERROR" \ ABORT "NO DIALTONE" \ TIMEOUT 5 \ "" "AT" \ "OK" "ATZ" \ "OK" "ATS7=60\&C0\&D1" \ ABORT "BUSY" \ ABORT "NO ANSWER" \ ABORT "NO CARRIER" \ ABORT "Login incorrect" \ "OK" "ATDT1234567" \ TIMEOUT 30 \ "CONNECT" "\\c" \ TIMEOUT 10 \ "rname:" "jm" \ "sword:" "pass627789" \ "}" "\\c" exit 0 Проверьте наличие файла /etc/ppp/options: modem crtscts asyncmap 0 Если pppd находится на этапе отладки, то в него можно еще добавить строки с параметрами "kdebug 7" и "debug". Обратите внимание, что в /etc/ppp/options не должно быть параметра "lock"! Далее необходимо создать файл /etc/ppp/options.cbcp, который должен содержать следующее: nodefaultroute noipdefault nodetach nopersist connect '/etc/ppp/chat-cbcp' user jm remotename my_isp callback 3222232 Единственная задача этого файла - сообщить удаленной системе, по какому телефону она должна перезвонить. Для этого используется параметр "callback" с нашим номером телефона. Если все сделано правильно, то теперь можно позвонить провайдеру и получить от него входящий звонок (cuaa1 - это, разумеется, имя устройства, на котором висит наш модем): /usr/sbin/pppd cuaa1 57600 file /etc/ppp/options.cbcp Теперь подготовим второй chat-скрипт, который на эти звонки будет отвечать: #!/bin/sh # # dial for callback /usr/sbin/pppd cuaa1 57600 file /etc/ppp/options.cbcp # answering... chat -V -s \ TIMEOUT 30 \ ABORT "ERROR" \ "RING" ATA \ "CONNECT" "\\c" if [ "$?" = "0" ]; then exit 0 fi exit 1 Не забудьте установить на него права доступа 0500 (r-x --- ---). Конечно, этот скрипт нуждается в небольшом изменении, если не используется PAP: #!/bin/sh # # dial for callback /usr/sbin/pppd cuaa1 57600 file /etc/ppp/options.cbcp # answering... chat -V -s \ TIMEOUT 30 \ ABORT "ERROR" \ "RING" ATA \ "CONNECT" "\\c" \ TIMEOUT 10 \ "rname:" "jm" \ "sword:" "pass627789" \ "}" "\\c" if [ "$?" = "0" ]; then exit 0 fi exit 1 В файл /etc/ppp/options.dial запишем параметры, которые нам действительно нужны для работы: defaultroute noipdefault connect '/etc/ppp/chat-dial' user jm remotename my_isp Добавление в этот файл параметра "persist" позволит восстанавливать связь в случае ее обрыва и т.п. В конечном итоге, запуск pppd будет выглядеть так: /usr/sbin/pppd cuaa1 57600 file /etc/ppp/options.dial Таким образом получается, что стартовавший pppd запускает pppd еще один раз, инициируя звонок от провайдера, после чего на него отвечает и устанавливает PPP-линк. _________________________________________________________________ Юрий Милоданович / Juri Milodanovic jm@evpatoria.net
Пример скриптов для работы CBCP CallBack можно также найти на ftp://ftp.opennet.ru/pub/modem/comtel-callback.tar.gz

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Udaff (?), 17:47, 18/12/2003 [ответить]  
  • +/
    Намана скрипт написан, вот только его как надо инициализировать в окне KDial'a?
     
  • 2, vsd (?), 23:02, 11/09/2004 [ответить]  
  • +/
    скрипт рабочий, пашет превосходно, а вот статейку можно было бы отдать на растерзание литературному корректору :). Хотя уж если я понял - то другие точно разберуться :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру