# Подешавање КППП‑а за повратни позив

Ово поглавље заснива се на материјалу који је обезбедио Мартин Хефнер, mh@ap-dec717c.physik.uni-karlsruhe.de.

## Сервер повратних позива под Униксом (Линуксом)

Ова секција пружа увод у повратне позиве под Униксом, и како се КППП може подесити за повезивање на сервер повратних позива, нарочито на сервер повратних позива заснован на скрипти под Линуксом.

### Увод у повратне позиве

Повратни позиви вам могу одговарати из неколико разлога. Неки од њих су:

- повећање безбедности локалне мреже

- смањење трошкова спољних сарадника

- управљање телефонским трошковима где позиви спадају у трошкове пословања

Замислите да неко позове број вашег сервера за примање позива, а затим разбије лозинку. Зашто се мучити око одржавања заштитног зида за интернет везу, ако се овако лако може приступити вашој мрежи?

Софтвер за повратне позиве обично вас пита за име, па прекине везу. Затим вас позове назад, обично на број ускладиштен у бази података на серверу. Затим клијент прихвата телефонску везу и наставља са бирањем броја као да се ништа није догодило. Сервер сада захтева ваше корисничко име и лозинку, знајући да сте ко сте се представили по првом позиву, или барем да сте тамо где сте рекли да јесте. Веза се успоставља нормално и покреће се `pppd`.

Главно питање је како натерати клијент да подигне слушалицу кад сервер позове. Треба ли вам специјални клијентски програм, као што је `mgetty`? Одговор је — не треба вам. Уопштено, било који клијент се може користити за везе преко повратног позива, чак и обичан терминалски програм попут Миникома.

Једино што треба да урадите је да задате модему да аутоматски одговори кад открије сигнал `RING`. Ово задаје следећа модемска наредба:

    AT&SO=1

Овим се модему каже да подигне слушалицу после првог `RING`.

Као многи други клијентски програми, КППП проверава да види да ли је сервер прекинуо везу, а онда прекида текућу сесију ако се открије `NO CARRIER`. Овде лежи прави проблем за постављање повратних позива. `NO CARRIER` ће, наравно, стићи у тренутку кад сервер повратних позива прекине везу. Зато неки сервери користе специјални програм за пријављивање. Како решити овај проблем? Тако што задате модему да стално приказује `CARRIER UP` (ово неће изазвати проблем када клијенту кажете да прекине везу). Ово се постиже следећом модемском наредбом:

    AT&C0

Ако желите ово да испробате, можете прво позвати сервер повратних позива обичним терминалским програмом, као што је Миником, и видети шта се догађа.

### Подешавање КППП‑а

Пошто сте видели теорију на делу, како сада да подесите КППП да рукује везом?

Поступак је прилично једноставан, као што следи.

1. Прво задајте модему да прихвата везе, и да не прекида преговарање кад сервер повратних позива први пут прекине везу. Обе ове опције можете додати под језичком Модем у постави КППП‑а, додавањем ниске `AT&C0S0=1DT` у поље Ниска за позивање:.

   Никакве друге промене у постави КППП‑а нису потребне. Ако искусите тешкоће са припремањем и ресетовањем модема, за више информација погледајте секцију о претресању проблема.

2. Размислите мало о вашем серверу. Сетите се да оперативни системи Уникс, Виндоуз и МекОС имају различите ставове о томе како се завршава ред у текстуалном фајлу, па зато и различите поступке пријављивања. Ако се повезујете на сервер под Виндоузом, користите `CR/LF`; ако је сервер под Униксом користите `CR`, а за сервер под МекОС‑ом `LF`.

3. У наредним инструкција претпостављамо да позивате сервер повратних позива под Линуксом, уз једноставно пријављивање (не преко ПАП‑а или тако нечег).

   Под језичком Позови у постави налога, у пољу Аутентификација: поставите скриптом.

4. Сада треба да саставите пријавну скрипту. Уређивање пријавних скрипти је једна од финих могућности КППП‑а. Налази се под језичком Пријавна скрипта у дијалогу за уређивање налога.

   У овом примеру, корисник pperic захтева покретање следеће скрипте. Сервер повратних позива већ има табелу имена и придружених бројева телефона, тако да, из безбедносних разлога, бирате телефонски број који ће се користити са алијасом.

   За сваки ред, из падајућег списка лево у дијалогу изаберите критеријум, па упишите радњу у поље десно. Кликните на Додај за додавање реда у скрипту. Дугметом Уметни додајте ред негде у средину скрипте, а дугметом Уклони уклањате ред кад нешто погрешите.

   Цела скрипта требало би да изгледа отприлике овако (без овде приказаних коментара, који почињу са #):

       Expect       ogin:           # сетите се, користимо обично терминалско пријављивање
       ID           ""              # КППП шаље ИД
       који сте подесили у главном дијалогу
       Expect       for pperic:    # приказује се списак доступних
       бројева; корисник треба да изабере један
       Send         pperic-home    # корисник жели повратни позив
       на свој кућни број
       Expect       ogin:           # повратни позив је започет,
       следи нова веза, те и ново пријављивање
       ID
       Expect       assword:        # шаљете своју лозинку
       Expect       >            # чека на командни одзивник
       (који може да варира)
       Send         start_ppp       # ова наредба покреће pppd

   После чекања на захтев за пријаву, корисник шаље свој ИД и чека на списак доступних бројева телефона за то корисничко име. Затим саопштава серверу на који би од понуђених бројева хтео да буде позван. КППП може да отвори дијалог за ово ако често мењате локацију, нпр. ако сте трговачки путник и крећете се од хотела до хотела. Сад сервер очекује корисничко име и лозинку за аутентификацију, али у међувремену прекида везу и зове вас назад. Шаљу се подаци за аутентификацију и КППП чека на командни одзивник, а затим покреће малу скрипту (овде по имену `start_ppp`) која извршава `pppd` на серверу.

   Скрипта `start_ppp` могла би изгледати овако:

       #!/bin/sh
       stty -echo
       exec /usr/sbin/pppd -detach silent modem

   Постављање ППП сервера наравно не спада у опсег овог документа. За детаљније информације погледајте упутну страницу за `pppd`. Изврстан опис сервера повратних позива може се наћи на http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback.

Сва остала питања око подешавања, као што је постава за `pppd` или ИП поставке, раде као и обично, и није потребан никакав посебан софтвер за прихватање линије.

КППП с повратним позивом и други програми попут `mgetty` могу се извршавати на истом серијском порту. Нема проблема са позивањем модемом, пошто КППП ствара фајл за закључавање који другим програмима каже да тренутно КППП користи линију.

### Претресање проблема

Постоје неки познати проблеми с КППП‑ом у режиму повратног позива:

- Као што припремите модем за аутоматско одговарање, тако треба и да га ресетујете кад се веза прекине. У супротном ће модем наставити да прихвата везу место вас, што није добра идеја ако вам је та веза главна телефонска линија.

- КППП има ситних проблема при дељењу линије са другим програмима, као што је `mgetty`. Ако се `mgetty` извршава на истој модемској линији, КППП не може правилно да припреми модем.

- КППП не може да тражи улаз од корисника током пријављивања заснованог на скрипти. Нажалост, кад користите скрипту по претходном примеру, КППП пита за корисничко име и други пут кад га сервер повратног позива затражи. Овог се можете отарасити непосредним уписивањем корисничког имена у скрипту, што није ни много преносиво ни фино, али ради.

### Интернет ресурси за серверски софтвер

Софтверски пакети за сервер повратних позива под Линуксом доступни су на многим местима.

Добро познати `mgetty` је моћан програм, и може да рукује везама преко повратних позива. Инструкције како поставити `mgetty` у ову сврху одржава Колин Макинон colin@wew.co.uk на http://www.dyer.demon.co.uk/slug/tipscrip.htm.

Постоји и готов пакет за Линукс на http://www.icce.rug.nl/docs/programs/callback/callback.html, који одржава Франк Б. Брокен frank@icce.rug.nl. Пошто постављање овог пакета није баш лако (иако је непроблематично) написао сам кратак увод на http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/ (такође даје општији увод у повратне позиве).

## РАС повратни позиви под Виндоузом НТ

Виндоуз НТ користи потпуно другачији прилаз од претходно описаног. НТ захтева проширење самог протокола ППП, звано ЦБЦП. `pppd` називно има подршку за овај протокол, али се мора укључити при компиловању. Ако неко успе да се повеже на сервер повратних позива под НТ‑ом, молимо да нас обавести.