|
|
|
|
<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>
|