# Podešavanje KPPP‑a za povratni poziv

Ovo poglavlje zasniva se na materijalu koji je obezbedio Martin Hefner, mh@ap-dec717c.physik.uni-karlsruhe.de.

## Server povratnih poziva pod Unixom (Linuxom)

Ova sekcija pruža uvod u povratne pozive pod Unixom, i kako se KPPP može podesiti za povezivanje na server povratnih poziva, naročito na server povratnih poziva zasnovan na skripti pod Linuxom.

### Uvod u povratne pozive

Povratni pozivi vam mogu odgovarati iz nekoliko razloga. Neki od njih su:

- povećanje bezbednosti lokalne mreže

- smanjenje troškova spoljnih saradnika

- upravljanje telefonskim troškovima gde pozivi spadaju u troškove poslovanja

Zamislite da neko pozove broj vašeg servera za primanje poziva, a zatim razbije lozinku. Zašto se mučiti oko održavanja zaštitnog zida za internet vezu, ako se ovako lako može pristupiti vašoj mreži?

Softver za povratne pozive obično vas pita za ime, pa prekine vezu. Zatim vas pozove nazad, obično na broj uskladišten u bazi podataka na serveru. Zatim klijent prihvata telefonsku vezu i nastavlja sa biranjem broja kao da se ništa nije dogodilo. Server sada zahteva vaše korisničko ime i lozinku, znajući da ste ko ste se predstavili po prvom pozivu, ili barem da ste tamo gde ste rekli da jeste. Veza se uspostavlja normalno i pokreće se `pppd`.

Glavno pitanje je kako naterati klijent da podigne slušalicu kad server pozove. Treba li vam specijalni klijentski program, kao što je `mgetty`? Odgovor je — ne treba vam. Uopšteno, bilo koji klijent se može koristiti za veze preko povratnog poziva, čak i običan terminalski program poput Minicoma.

Jedino što treba da uradite je da zadate modemu da automatski odgovori kad otkrije signal `RING`. Ovo zadaje sledeća modemska naredba:

    AT&SO=1

Ovim se modemu kaže da podigne slušalicu posle prvog `RING`.

Kao mnogi drugi klijentski programi, KPPP proverava da vidi da li je server prekinuo vezu, a onda prekida tekuću sesiju ako se otkrije `NO CARRIER`. Ovde leži pravi problem za postavljanje povratnih poziva. `NO CARRIER` će, naravno, stići u trenutku kad server povratnih poziva prekine vezu. Zato neki serveri koriste specijalni program za prijavljivanje. Kako rešiti ovaj problem? Tako što zadate modemu da stalno prikazuje `CARRIER UP` (ovo neće izazvati problem kada klijentu kažete da prekine vezu). Ovo se postiže sledećom modemskom naredbom:

    AT&C0

Ako želite ovo da isprobate, možete prvo pozvati server povratnih poziva običnim terminalskim programom, kao što je Minicom, i videti šta se događa.

### Podešavanje KPPP‑a

Pošto ste videli teoriju na delu, kako sada da podesite KPPP da rukuje vezom?

Postupak je prilično jednostavan, kao što sledi.

1. Prvo zadajte modemu da prihvata veze, i da ne prekida pregovaranje kad server povratnih poziva prvi put prekine vezu. Obe ove opcije možete dodati pod jezičkom Modem u postavi KPPP‑a, dodavanjem niske `AT&C0S0=1DT` u polje Niska za pozivanje:.

   Nikakve druge promene u postavi KPPP‑a nisu potrebne. Ako iskusite teškoće sa pripremanjem i resetovanjem modema, za više informacija pogledajte sekciju o pretresanju problema.

2. Razmislite malo o vašem serveru. Setite se da operativni sistemi Unix, Windows i MacOS imaju različite stavove o tome kako se završava red u tekstualnom fajlu, pa zato i različite postupke prijavljivanja. Ako se povezujete na server pod Windowsom, koristite `CR/LF`; ako je server pod Unixom koristite `CR`, a za server pod MacOS‑om `LF`.

3. U narednim instrukcija pretpostavljamo da pozivate server povratnih poziva pod Linuxom, uz jednostavno prijavljivanje (ne preko PAP‑a ili tako nečeg).

   Pod jezičkom Pozovi u postavi naloga, u polju Autentifikacija: postavite skriptom.

4. Sada treba da sastavite prijavnu skriptu. Uređivanje prijavnih skripti je jedna od finih mogućnosti KPPP‑a. Nalazi se pod jezičkom Prijavna skripta u dijalogu za uređivanje naloga.

   U ovom primeru, korisnik pperic zahteva pokretanje sledeće skripte. Server povratnih poziva već ima tabelu imena i pridruženih brojeva telefona, tako da, iz bezbednosnih razloga, birate telefonski broj koji će se koristiti sa alijasom.

   Za svaki red, iz padajućeg spiska levo u dijalogu izaberite kriterijum, pa upišite radnju u polje desno. Kliknite na Dodaj za dodavanje reda u skriptu. Dugmetom Umetni dodajte red negde u sredinu skripte, a dugmetom Ukloni uklanjate red kad nešto pogrešite.

   Cela skripta trebalo bi da izgleda otprilike ovako (bez ovde prikazanih komentara, koji počinju sa #):

       Expect       ogin:           # setite se, koristimo obično terminalsko prijavljivanje
       ID           ""              # KPPP šalje ID
       koji ste podesili u glavnom dijalogu
       Expect       for pperic:    # prikazuje se spisak dostupnih
       brojeva; korisnik treba da izabere jedan
       Send         pperic-home    # korisnik želi povratni poziv
       na svoj kućni broj
       Expect       ogin:           # povratni poziv je započet,
       sledi nova veza, te i novo prijavljivanje
       ID
       Expect       assword:        # šaljete svoju lozinku
       Expect       >            # čeka na komandni odzivnik
       (koji može da varira)
       Send         start_ppp       # ova naredba pokreće pppd

   Posle čekanja na zahtev za prijavu, korisnik šalje svoj ID i čeka na spisak dostupnih brojeva telefona za to korisničko ime. Zatim saopštava serveru na koji bi od ponuđenih brojeva hteo da bude pozvan. KPPP može da otvori dijalog za ovo ako često menjate lokaciju, npr. ako ste trgovački putnik i krećete se od hotela do hotela. Sad server očekuje korisničko ime i lozinku za autentifikaciju, ali u međuvremenu prekida vezu i zove vas nazad. Šalju se podaci za autentifikaciju i KPPP čeka na komandni odzivnik, a zatim pokreće malu skriptu (ovde po imenu `start_ppp`) koja izvršava `pppd` na serveru.

   Skripta `start_ppp` mogla bi izgledati ovako:

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

   Postavljanje PPP servera naravno ne spada u opseg ovog dokumenta. Za detaljnije informacije pogledajte uputnu stranicu za `pppd`.

Sva ostala pitanja oko podešavanja, kao što je postava za `pppd` ili IP postavke, rade kao i obično, i nije potreban nikakav poseban softver za prihvatanje linije.

KPPP s povratnim pozivom i drugi programi poput `mgetty` mogu se izvršavati na istom serijskom portu. Nema problema sa pozivanjem modemom, pošto KPPP stvara fajl za zaključavanje koji drugim programima kaže da trenutno KPPP koristi liniju.

### Pretresanje problema

Postoje neki poznati problemi s KPPP‑om u režimu povratnog poziva:

- Kao što pripremite modem za automatsko odgovaranje, tako treba i da ga resetujete kad se veza prekine. U suprotnom će modem nastaviti da prihvata vezu mesto vas, što nije dobra ideja ako vam je ta veza glavna telefonska linija.

- KPPP ima sitnih problema pri deljenju linije sa drugim programima, kao što je `mgetty`. Ako se `mgetty` izvršava na istoj modemskoj liniji, KPPP ne može pravilno da pripremi modem.

- KPPP ne može da traži ulaz od korisnika tokom prijavljivanja zasnovanog na skripti. Nažalost, kad koristite skriptu po prethodnom primeru, KPPP pita za korisničko ime i drugi put kad ga server povratnog poziva zatraži. Ovog se možete otarasiti neposrednim upisivanjem korisničkog imena u skriptu, što nije ni mnogo prenosivo ni fino, ali radi.

## RAS povratni pozivi pod Windowsom NT

Windows NT koristi potpuno drugačiji prilaz od prethodno opisanog. NT zahteva proširenje samog protokola PPP, zvano CBCP. `pppd` nazivno ima podršku za ovaj protokol, ali se mora uključiti pri kompilovanju. Ako neko uspe da se poveže na server povratnih poziva pod NT‑om, molimo da nas obavesti.