1. Обратный звонок с 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. 2. Несколько учетных записей. В моем конкретном случае используются интернет-карты с определенным балансом, по истечении которого учетная запись (логин) аннулируется. Для дальнейшей работы в сети необходимо изменить имя пользователя в /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 У меня таким образом работает днем одна карта с почасовой оплатой, а ночью - вторая, без ограничения по времени, но ограничена в доступе по времени суток. 3. Звоним и качаем по расписанию. Так вот, по ночам я, как и все нормальные люди, обычно сплю :-) Но почему бы компьютеру не поработать? Для этого нам необходим пакет 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 напр. позвонил, проверил почту и отвалился (это самое простое, что пришло в голову :-) Остальное за Вашей фантазией и потребностью.