<chapter id="callback">
<title
>Налаштування зворотного виклику у &kppp;</title>

<para
>Цю главу засновано на матеріалах, наданих Martin H&auml;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;</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
>pppd</application
>.</para>

<para
>Тепер виникає питання: як повідомити клієнтській програмі, що слід підняти слухавку після того, як сервер здійснить зворотній виклик? Чи потрібна для цього особлива програма, на зразок <application
>mgetty</application
>? Відповідь на це питання: <emphasis
>ні</emphasis
> вам не потрібна особлива клієнтська програма. Загалом кажучи, для з’єднанням зі зворотним викликом можна використовувати будь-яку клієнтську програму, ви навіть можете скористатися для з’єднання звичайною термінальною програмою, на зразок <application
>minicom</application
>.</para>

<para
>Єдине, що потрібно зробити, це повідомити вас модем про те, що слід виконати команду <command
>AutoAnswer</command
>, коли модемом буде виявлено подію <computeroutput
>RING</computeroutput
>. Це можна зробити за допомогою такої команди модема:</para>

<screen
><userinput
><command
>AT&amp;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&amp;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&amp;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       &gt;            <lineannotation
># зачекати на запрошення на введення команди (текст
запрошення може бути різним)</lineannotation>
Send         start_ppp       <lineannotation
># ця команда запускає pppd</lineannotation
>
</screen>

<para
>Після очікування на запит реєстрації комп’ютер користувача надішле ідентифікатор користувача і зачекає на список доступних номерів телефонів для вказаного імені користувача. Після цього комп’ютер користувача повідомить сервер про те, який з запропонованих номерів слід використати для зворотного виклику. Для цього &kppp; може відкрити окреме діалогове вікно, ним можна скористатися якщо ви часто змінюєте місця, з яких телефонуєте, наприклад, якщо ви відповідаєте за продажі і часто змінюєте готелі. Після цього сервер очікуватиме на ім’я користувача і пароль для реєстрації, а тим часом повісить слухавку і здійснить дзвінок до користувача. Після надсилання даних для реєстрації &kppp; зачекає на запрошення на введення команди, а потім виконає невеличкий скрипт (тут він має назву <filename
>start_ppp</filename
>), який запустить <application
>pppd</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
>pppd</application
>.</para>
</step>
</procedure>

<para
>Всі інші налаштування, зокрема налаштування <application
>pppd</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>
<!-- all links are dead
<sect2 id="callback-resources">
<title
>Internet Resources for server software</title>

<para
>&Linux; callback server software bundles are available in many
places.</para>

<para
>The well known <application
>mgetty</application
> is a very powerful
program, and is also able to handle callback connections.  A description of how
to set up <application
>mgetty</application
> for this purpose is maintained at 
<ulink url="http://www.dyer.demon.co.uk/slug/tipscrip.htm">
http://www.dyer.demon.co.uk/slug/tipscrip.htm</ulink
>, by Colin McKinnon,
<email
>colin@wew.co.uk</email
>.</para>

<para
>There is also a ready to use package for &Linux; at <ulink
url="http://www.icce.rug.nl/docs/programs/callback/callback.html">
http://www.icce.rug.nl/docs/programs/callback/callback.html</ulink
>.  This
package is maintained by Frank B. Brokken, <email
>frank@icce.rug.nl</email
>.  As
the setup, although straightforward, is not very easy, I have written a short
introduction for it at <ulink
url="http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback"
>http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/</ulink
>,
which also contains a more general introduction to callback.</para>

</sect2>
-->
</sect1>

<sect1 id="nt-callback">
<title
>Зворотний виклик <acronym
>RAS</acronym
> &Windows; NT</title>

<para
>У &Windows; NT використовується зовсім інший підхід, який значно відрізняється від описаного вище. Для NT потрібне розширення самого протоколу <acronym
>PPP</acronym
>, яке називається <acronym
>CBCP</acronym
> (Call Back Control Protocol — протокол керування зворотним викликом). <application
>pppd</application
> підтримує такий протокол, але вам слід перезібрати <application
>pppd</application
>. Якщо хтось має досвід успішного встановлення зв’язку з сервером зворотного виклику NT, будь ласка, повідомте про нього авторові цього підручника.</para>

</sect1>
</chapter>
