1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
<chapter id="callback">
<title>Настройка &kppp; на режим обратного звонка</title>
<para>Материал для этой главы предоставил Martin Häfner, <email>[email protected]</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>[email protected]</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>[email protected]</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>
|