<chapter id="callback"> <title >Настройка &kppp; на режим обратного звонка</title> <para >Материал для этой главы предоставил Martin Häfner, <email >mh@ap-dec717c.physik.uni-karlsruhe.de</email ></para> <sect1 id="unix-callback-server"> <title >Сервер обратного звонка под управлением ОС &UNIX; или &Linux;</title> <para >В этом разделе рассказывается об обратном звонке в ОС &UNIX; (&Linux;) и о том, как &kppp; должна быть настроена для соединения с сервером обратного звонка под управлением ОС &UNIX; особое внимание уделяется ОС &Linux; и ее <link linkend="callback-resources" >серверу обратного звонка</link > на основе скриптов.</para> <sect2> <title >Что такое Обратный звонок</title> <para >Для использования Обратного звонка есть несколько причин. Вот некоторые из них:</para> <itemizedlist> <listitem> <para >Для увеличения безопасности вашей локальной сети</para> </listitem> <listitem> <para >Для сокращения расходов ваших сотрудников, звонящих извне</para> </listitem> <listitem> <para >Для контроля стоимости телефонных звонков, по статье организационных расходов:</para> </listitem> </itemizedlist> <para >Представьте себе, что некто дозвонился на ваш сервер входящих звонков и взломал пароль доступа. Зачем же, в таком случае, конфигурировать брандмауэр для вашей сети, если можно таким простым способом получить к ней доступ?</para> <para >Программное обеспечение обратного звонка запрашивает ваше имя, а затем разъединяется. Далее производится звонок по вашему номеру, который хранится в базе данных <emphasis >на сервере</emphasis >. Клиент поднимает трубку и продолжается процедура установления соединения, если не возникло сбоев. Сервер запрашивает ваше имя пользователя и пароль, зная, что звонили вы (согласно вашему звонку), или же зная, откуда вы звонили. Устанавливается соединение и запускается демон <application >ppp</application >.</para> <para >Вопрос: как указать клиенту поднять трубку, когда сервер перезванивает ему. Нужна ли специальная программа типа <application >mgetty</application >? Ответ: <emphasis >нет</emphasis >, вам не понадобится специальная программа. В общем, любой клиент может быть использован при соединении с обратным звонком, вы можете использовать даже обыкновенную терминальную программу: <application >minicom</application >, к примеру.</para> <para >Вам только надо отдать модему команду <command >Ответить автоматически</command > на телефонный звонок при поступлении сигнала <computeroutput >RING</computeroutput >. Для этого задайте модему следующую команду:</para> <screen ><userinput ><command >AT&SO=1</command ></userinput > </screen> <para >Эта команда указывает модему поднять трубку после одного звонка (<computeroutput >RING</computeroutput >).</para> <para >Подобно большинству других программ-клиентов, &kppp; проверяет, не прекращено ли соединение сервером, а затем закрывает текущую сессию, если определен сигнал <computeroutput >NO CARRIER</computeroutput >. Это является настоящей проблемой при настройке обратного звонка. Сигнал <computeroutput >NO CARRIER</computeroutput >, конечно, будет получен в момент прекращения соединения сервером обратного звонка. Некоторые серверы используют специальные программы логина. Так как решить эту проблему? Укажите модему всегда показывать <computeroutput >CARRIER UP</computeroutput > (это не вызовет проблем при указании клиенту повесить трубку). Вы можете осуществить это следующей командой модему:</para> <screen ><userinput ><command >AT&C0</command ></userinput > </screen> <para >Если вам хочется проверить, как все это работает, используйте обыкновенную терминальную программу, например, <application >minicom</application >, позвоните на ваш сервер обратного звонка и посмотрите, что произойдет.</para> </sect2> <sect2> <title >Настройка &kppp;</title> <para >Теперь, когда вы увидели применение теории на практике, как настроить &kppp; для осуществления соединения? </para> <para >Как показано, процедура весьма несложная.</para> <procedure> <step> <para >Сперва укажите модему принимать входящие соединения, а не прерывать сессию установки соединения при разъединении с сервером обратного звонка при первом звонке. Обе эти опции можно добавить на вкладке <guilabel >Модем</guilabel > в настройках &kppp;, добавив в опцию <guilabel >Строка дозвона</guilabel > следующее: <command >AT&C0S0=1DT</command ></para> <para >Более никаких изменений в &kppp; не потребуется. Если у вас возникнут проблемы с инициализацией и сбросом установок модема, обратитесь к разделу <link linkend="callback-troubleshooting" >Устранение неисправностей</link > для получения более детальных сведений.</para> </step> <step> <para >Не забудьте о сервере. Помните, что ОС &UNIX;, &Windows; и Macintosh по-разному обрабатывают концы строк в текстовых файлах и, таким образом, и в процедурах логина. Если вы подключаетесь к серверу под управлением ОС &Windows;, используйте <userinput >CR/LF</userinput >, для сервера под управлением ОС &UNIX; используйте <userinput >CR</userinput >, а при подключении к серверу Macintosh используйте <userinput >LF</userinput > </para> </step> <step> <para >Следующие инструкции применимы к случаю дозвона на сервер обратного звонка под управлением ОС &Linux; с использованием обычной авторизации (не <acronym >PAP</acronym > или ей подобной).</para> <para >Установите стиль <guilabel >Авторизация</guilabel > во вкладке <guilabel >Дозвон</guilabel > в конфигурации соединения в положение <guilabel >На основе скрипта</guilabel ></para> </step> <step> <para >Сейчас вам надо создать скрипт логина. Редактирование скрипта логина являетсяодной из наиболее приятных функций программы &kppp;. Эта опция доступна на вкладке <guilabel >Скрипт логина</guilabel > в диалоге <guilabel >Редактирование соединения</guilabel >.</para> <para >В этом примере пользователь <systemitem >userxyz</systemitem > должен вызвать следующий скрипт. Серверу обратного звонка уже задана таблица имен и соответствующие телефонные номера, в целях безопасности создать псевдоним для соответствующего вам номера телефона.</para> <para >Для каждой строки выберите критерий из раскрывающегося списка в левой стороне диалога и введите действие в поле справа. Нажмите на кнопку <guibutton >Добавить</guibutton > для добавления строки в скрипт. Кнопкой <guibutton >Вставить</guibutton > добавляйте строки в середину скрипта, а кнопкой <guibutton >Удалить</guibutton > удаляйте строку, если в ней допущена ошибка.</para> <para >Полностью скрипт будет выглядеть примерно так (без комментариев, начинающихся здесь с символа #)</para> <screen >Expect ogin: <lineannotation ># помните, что это обыкновенный теминальный логин</lineannotation> ID "" <lineannotation ># kppp отправляет имя пользователя, установленное в главном экране</lineannotation> Expect for userxyz: <lineannotation ># отображается список доступных номеров, пользователь должен сделать выбор</lineannotation > Send userxyz-home <lineannotation ># пользователь хочет, чтобы ему перезвонили по домашнему номеру</lineannotation> Expect ogin: <lineannotation ># выполняется процесс обратного дозвона, новое соединение и новый логин.</lineannotation> ID Expect assword: <lineannotation ># отправить пароль</lineannotation> Expect > <lineannotation ># ожидать приглашения (оно может отличаться)</lineannotation> Send start_ppp <lineannotation ># эта команда запускает демон ppp</lineannotation > </screen> <para >После появления запроса на вход, пользователь отправляет свое имя пользователя и ожидает появления списка доступных этому пользователю телефонных номеров. Эатем он указывает серверу, по какому из предложенных номеров нужно произвести звонок. Для этого &kppp; может создать диалог, если вы часто переезжаете, к примеру, если вы являетесь агентом по продажам и переезжаете из гостиницы в гостиницу. Теперь сервер ожидает имя пользователя и пароль для авторизации, тем временем, сервер прерывает соединение и перезванивает пользователю. Данные для авторизации отправлены, &kppp; ожидает приглашения системы и запускает небольшой скрипт (здесь <filename >start_ppp</filename >), который запускает демон <application >ppp</application > на сервере.</para> <para >Скрипт <filename >start_ppp</filename > выглядит примерно так, как показано ниже:</para> <programlisting >#!/bin/sh stty -echo exec /usr/sbin/pppd -detach silent modem </programlisting> <para >Конечно, настройка <acronym >PPP</acronym >-сервера выходит за рамки этого документа. Детальные сведения находятся на man-странице демона <application >ppp</application >. Замечательное описание сервера обратного звонка доступно по адресу: <ulink url="http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback" > http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback</ulink ></para> </step> </procedure> <para >Все остальные настройки, такие как настройка демона <application >ppp</application > или настройки <acronym >IP</acronym >-протокола будут работать нормально, и для дозвона вам не понадобятся другие программы.</para> <note> <para >Обратный звонок в &kppp; и другие программы типа <application >mgetty</application > или же faxgetty могут выполняться на одном последовательном порте. Проблем с дозвоном быть не должно, так как &kppp; создает файл блокировки и указывает программе getty, что другое приложение (в этом случае &kppp;) использует порт.</para> </note> </sect2> <sect2 id="callback-troubleshooting"> <title >Устранение неисправностей</title> <para >Известные проблемы с программой &kppp;, работающей в режиме обратного звонка:</para> <itemizedlist> <listitem> <para >Так как вы инициализируете модем для ответов на звонок, после разъединения нужно сбросить установки модема в начальное состояние. Иначе модем продолжит отвечать на звонки, что не так уж и хорошо, если рассмотренная телефонная линия является основной для вас.</para> </listitem> <listitem> <para >У &kppp; есть мелкие недостатки, когда она использует одну линию наряду с другой программой, такой как <application >mgetty</application >. Если <application >mgetty</application > в процессе выполнения использует ту же линию, то &kppp; не может правильно инициализировать модем. </para> </listitem> <listitem> <para >&kppp; не в состоянии запросить некоторый тип ввода во время логина на основе скрипта. К сожалению, при использовании примера скрипта, приведенного выше, &kppp; также запрашивает имя пользователя второй раз, при запросе сервера обратного звонка. От этого можно избавиться, если прописать ваше имя пользователя в скрипт логина (неудобно и некрасиво, зато срабатывает).</para> </listitem> </itemizedlist> </sect2> <sect2 id="callback-resources"> <title >Ресурсы Интернета о серверном программном обеспечении</title> <para >Программное обеспечение для сервера обратного звонка под управлением ОС &Linux; доступно во многих местах.</para> <para >Хорошо известная мощная программа <application >mgetty</application > способна работать с соединениями по принципу обратного звонка. Описание настройки <application >mgetty</application > для этой цели находится по адресу <ulink url="http://www.dyer.demon.co.uk/slug/tipscrip.htm" > http://www.dyer.demon.co.uk/slug/tipscrip.htm</ulink >, написанное Colin McKinnon, <email >colin@new.co.uk</email >.</para> <para >Существует готовый к использованию пакет для ОС &Linux;: <ulink url="http://www.icce.rug.nl/docs/programs/callback/callback.html" > http://www.icce.rug.nl/docs/programs/callback/callback.html</ulink >. Этот пакет поддерживает Frank B. Brokken, <email >frank@icce.rug.nl</email >. Так как настройка, несмотря на прямолинейность, весьма сложна, то я написал короткое вступление для нее: <ulink url="http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback" >http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/</ulink >, в котором также содержатся более подробные сведения об обратном звонке.</para> </sect2> </sect1> <sect1 id="nt-callback"> <title >Обратный звонок службы <acronym >RAS</acronym > в ОС &Windows; NT</title> <para >В ОС &Windows; NT используется подход, совершенно отличный от описанного выше. NT требует наличия расширения к протоколу <acronym >PPP</acronym >, поз названием <acronym >CBCP</acronym > (Протокол контроля обратного звонка). У демона <application >ppp</application > есть поддержка этого протокола, но вам придется перекомпилировать демон <application >ppp</application >. Если кому-нибудь удалось успешно соединиться с сервером обратного звонка под управлением NT, просьба дать нам знать об этом.</para> </sect1> </chapter>