<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;</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&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 ># ця команда запускає 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>