The OpenNET Project / Index page

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

Обратный звонок с PAP+CBCP (ppp callback cbcp dialup)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: ppp, callback, cbcp, dialup,  (найти похожие документы)
From: faq.altlinux.ru Date: Wed, 14 Apr 2006 18:21:07 +0000 (UTC) Subject: Обратный звонок с PAP+CBCP Оригинал: http://faq.altlinux.ru/index.php?action=single&nf=1&qid=511 Обратный звонок с PAP+CBCP. Данный материал основывается на статье Александра Огурцова (г.Николаев, Украина) и слегка дополняет его. Описаный ниже способ не претендует на оптимальность. Но обеспечивает соединение и работает. Система ALT Linux Compact 2.3 При первоначальной прозвонке к провайдеру pppd осуществляет соединение, производит PAP-авторизацию и согласно протоколу CBCP передает телефонный номер, по которому должна перезвонить удаленная система. После этого соединение разрывается. Наша система начиная с этого момента ждёт дозвона от узла провайдера, после осущесвления которого и устанавливается собственно соединение, поднятие IP адресов etc. Таким образом, должны существовать два сценария поведения демона pppd (chat-скрипта) при соединении в таких условиях. Один для исходящего, второй для входящего соединения. А вот тут и начинается самое интересное -- в дистрибутиве Альт демон pppd собран с поддержкой протокола обратного дозвона в том числе и CBCP, в более ранних версиях дистрибутива пакет, похоже, назывался pppd-callback. Так вот второй скрипт - ответа на звонок - создается автоматически и находится в файле /etc/ppp/callback-client. Протокол обработки обратного звонка регистрируется в событиях netevent и дозвон от провайдера обрабатывается именно этим скриптом. /etc/ppp/callback-client #!/bin/sh # Script callback-client # Script parameters: delay time in seconds DELAY="$1" /usr/sbin/chat -v -t 2 "" \d+++\d\c OK ATH0 OK sleep $DELAY /usr/sbin/chat -v "" ATZ OK "" RING. ATA SAY "RING" CONNECT Дальше создаём файл дозвона к провайдеру /etc/ppp/chat-cbcp с содержимым типа такого (не забудьте в строке ATDT указать номер своего провайдера): /etc/ppp/chat-cbcp #!/bin/sh #Request for CallbacK # /usr/sbin/chat -v\ TIMEOUT 7\ ABORT "\nERROR\r"\ ABORT "\nNO DIALTONE\r"\ ABORT "\nBUSY\r"\ ABORT "\nNO ANSWER\r"\ ABORT "\nNO CARRIER\r"\ ABORT "\nLogin incorect\r"\ '' AT\ SAY "Modem Initialization\n"\ 'OK-+++\c-OK' 'ATH0L2M2V1W2X4&c1E1q0'\ SAY "Dialing to ISP\n"\ TIMEOUT 60\ OK ATDT479700\ CONNECT ''\ SAY "Connected...\n"\ TIMEOUT 30\ ogin:\c exit 0 Пишем файл /etc/ppp/options.cbcp defaultroute noipdefault persist nodetach connect '/etc/ppp/chat-cbcp' user Ваш_логин remotename Имя_провайдера callback Номер_дозвона_к_Вам И, наконец, создаём скрипт, который будет дозваниваться -- он очень простой /etc/ppp/ppp-on-dialer #!/bin/sh # #Try to Connect Farlep CallBack /usr/sbin/pppd /dev/modem 115200 file /etc/ppp/options.cbcp Убедитесь, что в файле /etc/ppp/pap-secrets прописана строка вида Ваш логин Имя_провайдера Пароль_у_провайдера При коректно настроеной сети всё готово для соединения с провайдером. Да, кстати, не забудьте, что обратный дозвон у провайдера является отдельной услугой, проконсультируйтесь в службе тех.поддержки провайдера о предоставлении вам таковой. Второй вопрос -- о том, как сделать этот дозвон доступным под пользовательским аккаунтом? Воспользуюсь советом Михаила Шигорина. Дозваниваться могут пользователи из группы UUCP grep uucp /etc/group uucp:x:14:uucp,into,ну и остальные через запятую Права доступа к файлам и устройствам следующие: -rwxr-xr-x. . 1 root. . .root. 211 ... /etc/ppp/callback-client -rwxr-x---. . 1 root. . .uucp. 586 ... /etc/ppp/chat-cbcp -rw-r--r--. . 1 root. . .root. 103 ... /etc/ppp/options.cbcp -rwxr-x---. . 1 root. . .uucp. 116 ... /etc/ppp/ppp-on-dialer -rw-------. . 1 root. . .root. 26 ... /etc/ppp/pap-secrets lrwxrwxrwx. . 1 root. . .root. 10 ... /dev/modem -> /dev/ttyS1 crw-rw----. . 1 root. . .uucp. 4,. 65 ... /dev/ttyS1 -rws--x---. . 1 root. . .uucp. 218904 ... /usr/sbin/pppd После этого на рабочем столе пользователя можно создать ссылку на файл /etc/ppp/ppp-on-dialer и запускать соединение одним щелчком. Для индикации работы ppp меня вполне устраивает апплет в gkrelm. Несколько учетных записей. В моем конкретном случае используются интернет-карты с определенным балансом, по истечении которого учетная запись (логин) аннулируется. Для дальнейшей работы в сети необходимо изменить имя пользователя в /etc/ppp/options.cbcp а также логин и пароль в /etc/ppp/pap-secrets Один раз в месяц это не напрягает :-) А как быть, если в разное время суток используются разные аккаунты с различными принципами тарификации? Руками менять надоест, особенно если один работает днем, а второй ночью :-) Все очень просто. Имя пользователя (в том числе и для последующей PAP аутентификации) содержит в себе файл /etc/ppp/options.cbcp Так и создадим ему брата-близнеца со вторым аккаунтом, допустим /etc/ppp/options.cbcp2 а также сделаем второй скрипт дозвона /etc/ppp/ppp-on-dialer2 которого попросим в качестве файла опций для pppd использовать наш /etc/ppp/options.cbcp2 /etc/ppp/ppp-on-dialer2 #!/bin/sh # #Try to Connect Farlep CallBack /usr/sbin/pppd /dev/modem 115200 file /etc/ppp/options.cbcp2 Также необходимо в /etc/ppp/pap-secrets второй (третьей, четвертой и т.д.) указать пароль своего второго аккаунта. Ваш_логин2 Имя_провайдера Пароль_у_провайдера2 У меня таким образом работает днем одна карта с почасовой оплатой, а ночью - вторая, без ограничения по времени, но с ограничением в доступе по времени суток. Звоним и качаем по расписанию. Так вот, по ночам я, как и все нормальные люди, обычно сплю :-) Но почему бы компьютеру не поработать? Для этого нам необходим пакет crontabs, vixie-cron и запущенный сервис crond. Чтобы не мешать своими закачками, дозвонами крону выполнять свои основные функции 1. Создадим свой каталог /etc/cron.night в котором разместим симлинк на /etc/ppp/ppp-on-dialer2 2. Немного модифицируем /etc/ppp/options.cbcp2 добавив в нем строку: linkname NIGHT (! эта опция требует, чтобы pppd запускался от имени root -- чтобы получить доступ в каталог /var/run) Благодаря этой опции будет создаваться персональный PID файл при дозвоне нашим конкретным "ночным" скриптом. 3. Укажем крону, когда мы хотим звонить, дописав в /etc/crontab строку (см. /etc/crontab.temlate для примера) 05 2 * * * root run-parts /etc/cron.night Таким образом каждый день в 2:05 крон будет выполнять все программы, скрипты, которые Вы поместите в /etc/cron.night (и выполнять будет от имени root, что нам и необходимо) Теперь необходимо научить систему правильно реагировать на дозвон конкретным скриптом. Создаем (если его еще нет) /etc/ppp/ip-up.local (я просто скопировал ip-up -> ip-up.local дабы потом не заморачиваться всякими chmod :-) /etc/ppp/ip-up.local #!/bin/sh if [ -e /var/run/ppp-NIGHT.pid ]; then wget -c -P /куда/положить -i список_адресов.txt & fi exit 0 Все. Можно спать спокойно :-) PS. На основе этого можно наплодить сценариев дозвона с различными параметрами linkname и вариантов реакций на эти дозвоны в /etc/ppp/ip-up.local напр. позвонил, проверил почту и отвалился (это самое простое, что пришло в голову :-) Остальное за Вашей фантазией и потребностью.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

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




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

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