&kppp; seadistamine tagasihelistamiseksSelle peatüki allikaks on Martin Häfneri mh@ap-dec717c.physik.uni-karlsruhe.de materjal&UNIX; või &Linux; tagasihelistamisserverSee osa tutvustab sissejuhatavalt &UNIX; (&Linux;) tagasihelistamist ning seda, kuidas seadistada &kppp; ühenduma &UNIX; tagasihelistamisserveriga, eriti aga skriptil baseeruva &Linux; tagasihelistamisserverigaSissejuhatus tagasihelistamisseTagasihelistamise kasutamiseks on mitu põhjust. Mõned neist on järgmised:Kohaliku võrgu turvalisuse suurendamineVäliste kaastöötajate kulude kahandamineTelefoniarvete kontrollimine, kui kõnesid hinnatakse ärikuludenaMõtle: keegi helistab sinu numbrile serveril ja murrab sinu parooli lahti. Jah, milleks üldse oma internetiühendusel tulemüüri hoida, kui ligipääs võrgule nii lihtne on?Tagasihelistamistarkvara päris tavaliselt sinu nime ja katkestab siis ühenduse. Seejärel helistatakse sulle tagasi, tavaliselt numbril, mis on salvestatud serveri andmebaasi. Klient võtab kõne vastu ja jätkab rahulikult sissehelistamisteenuse kasutamist. Server pärib nüüd kasutajanime ja parooli, teades, et tegemist on sellega, kes sa ütlesid end esimese kõne ajal olevat - või vähemalt, et see keegi asub selles kohas, kus ta ütles end esimese kõne ajal asuvat. Rajatakse normaalne ühendus ja käivitatakse pppd.Tekib suur küsimus: kuidas panna klient telefoni vastu võtma, kui server tagasi helistab? Kas selleks on vaja erilist rakendust, näiteks mgetty? Vastus: ei, mingit erilist klientrakendust ei ole vaja. Üldiselt võib tagasihelistamisühenduseks kasutada enam-vähem iga klienti, isegi täiesti tavalist terminali, näiteks minicom.Piisab vaid sellest, et anda modemile käsk AutoAnswer, mis vastab kõnele, kui modem saab signaali RING. Seda saab teha järgmise modemikäsuga:AT&SO=1See annab modemile korralduse kõne vastu võtta pärast ühekordset signaali RING.Sarnaselt paljudele klientrakendustele kontrollib &kppp;, kas server on ühenduse sulgenud, ning peatab aktiivse seansi, kui tuvastab signaali NO CARRIER. Siin peitubki tagasihelistamise ainus tõeline probleem. Signaal NO CARRIER tuvastatakse mõistagi hetkel, mil tagasihelistamisserver kõne katkestab. Seepärast kasutavad mõned serverid spetsiaalset sisselogimisrakendust. Kuidas probleem lahendada? Modemile tuleb anda korraldus tunnustada kogu aeg signaali CARRIER UP (mis ei tekita mingeid probleeme, kui annad kliendile korralduse kõne katkestada). Seda saab teha järgmise käsuga:AT&C0Kui soovid seda testida, kasuta esmalt tavalist terminali, näiteks minicom, ja võta kõne oma tagasihelistamisserverile, et näha, mis juhtub.&kppp; seadistamineTeooria on nüüd läbi, aga kuidas panna &kppp; sellist ühendust tunnistama ja käsitlema? See on õigupoolest üsna lihtne.Kõigepealt anna modemile korraldus ühendusi vastu võtta ning mitte peatada läbirääkimisi, kui tagasihelistamisserver kõne esimesel korral katkestab. Mõlemat võimalust saab määrata &kppp; seadistustedialoogi kaardil Modem, kui lisada võimalusele Numbrivalimise käsustring string AT&C0S0=1DTMidagi muud &kppp; seadistustes muuta ei tule. Kui modemi initsialiseerimisel ja lähtestamisel esineb probleeme, uuri lähemalt osa Probleemid.Mõtle nüüd korraks serveri peale. Arvesta, et &UNIX;, &Windows; ja Macintoshi operatsioonisüsteemid lõpetavad erinevalt rida tekstifailis ning seetõttu ka sisselogimisprotseduuris. Kui võtab ühendust &Windows; serveriga, kasuta CR/LF, &UNIX; serveri korral CR ja Macintoshi serveri puhul LFKäesolevate juhiste juures eeldame, et kasutad helistamiseks &Linux; tagasihelistamispaketti tavalise sisselogimisega (mitte PAP või midagi sellist).Määra konto seadistustedialoogis kaardil Helistamineautentimise võimaluseks Skriptil baseeruvNüüd tuleb luua sisselogimisskript. Sisselogimisskriptide loomine ja redigeerimine on üks &kppp; vaimustavaid võimalusi. Selle leiab dialoogi Konto redigeerimine kaardil Sisselogimisskript.Antud näites tuleb kasutajal kasutajaxyz helistamisel pruukida järgnevat skripti. Tagasihelistamisserveril on juba olemas nimed ja vastavad telefoninumbrid, nii et turvalisuse huvides vali telefoninumber aliasega.Iga rea puhul vali dialoogis vasakul paiknevast hüpikkastist vajalik kriteerium ning kirjuta tegevus sellest paremal asuvasse tekstikasti. Klõpsuga nupul Lisa saad iga rea skripti lisada. Keskel asuva nupuga Lisa saab rea lisada suvalisse kohta skriptis (vaikimisi lisatakse see lõppu) ning nupuga Eemalda rea kustutada, kui juhtusid vea tegema.Kogu skript peaks välja nägema umbes nii (küll ilma kommentaarideta, mis siin algavad märgiga #)Expect ogin: # pea meeles, et me kasutame tavalist terminalis sisselogimist
ID "" # kppp saadab peadialoogis määratud
kasutajanime
Expect for kasutajaxyz: # näidatakse saadaolevate numbrite nimekirja,
kust kasutaja peaks ühe valima
Send kasutajaxyz-home # kasutaja soovib tagasihelistamist
oma kodusel numbril
Expect ogin: # Tagasihelistamisprotsess on käimas,
uus ühendus ja sestap ka uus sisselogimine.
ID
Expect assword: # Nüüd saada oma parool
Expect > # Oota käsuviipa (selle
viiba vorm võib erineda)
Send start_ppp # see käsk käivitab pppdPärast sisselogimissoovi ootamist saadab kasutaja oma kasutajanime ja ootab sellele kasutajale kättesaadavate telefoninumbrite nimekirja. Seejärel ütleb ta serverile, millisel pakutavatest numbritest tuleks tagasi helistada. &kppp; võib selleks dialoogi avada, kui sinu asukoht sageli muutub, ⪚ kui oled müügiagent ja elad peamiselt hotellides. Seejärel ootab server autentimiseks kasutajanime ja parooli, kuid enne seda lõpetab kõne ja helistab tagasi. Nüüd saadetakse autentimisinfo, &kppp; ootab käsurea viipa ning käivitab siis väikese skripti (antud näites nimega start_ppp), mis käivitab serveril pppd.start_ppp skript näeb välja umbes selline:#!/bin/sh
stty -echo
exec /usr/sbin/pppd -detach silent modem
Mõistagi ei ole selles käsiraamatus ruumi ega võimalust kirjeldada PPP serveri seadistamist. Täpsemat infot leiab soovi korral pppd manuaalilehekülgedelt. Tagasihelistamisserveri suurepärane kirjeldus aga leidub veebiaadressil http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callbackKõik muud asjad, näiteks pppd või IP seadistused, töötavad nagu tavaliselt ning kõne jaoks ei ole vaja mingit erilist tarkvara.&kppp; tagasihelistamisrakendus ja muud rakendused, näiteks mgetty või mingi muu faxgetty võivad töötada ühel ja samal jadapordil. Sissehelistamisel probleeme ei teki, sest &kppp; loob lukustusfaili, mis ütleb getty-rakendusele, et liini kasutab parajasti mingi muu rakendus (antud juhul siis mõistagi &kppp;).Probleemid&kppp; tagasihelistamisrežiimil on siiski ka mõningaid teadaolevaid probleeme:Modemit automaatseks vastamiseks initsialiseerides tuleb modem lähtestada pärast ühenduse sulgemist. Vastasel juhul jätkab modem liini hõivamist, mis ei ole sugugi hea mõte, kui see liin on sinu ainus ja/või peamine telefoniliin.&kppp;-l võib olla mõningaid pisiprobleeme liini jagamisel teiste rakendustega, näiteks mgetty. Kui mgetty töötab samal modemiliinil, ei suuda &kppp; modemit korrektselt initsialiseerida. &kppp; ei suuda pakkuda viipa teatud kasutaja sisendile skriptil baseeruva sisselogimise ajal. Kui kasutad ülaltoodud näidisskripti, küsib &kppp; õnnetuseks kasutajanime ka teist korda, kui tagasihelistamisserver seda nõuab. Sellest hädast võib lahti saada oma kasutajanime otse sisselogimisskripti kirjutades (see ei ole küll eriti kena, aga vähemalt toimib...)Serveritarkvara internetis&Linux; tagasihelistamisserveri tarkvara leidub paljudes kohtades.Kuulus mgetty on väga võimas rakendus, mis suudab toime tulla ka tagasihelistamisühendustega. Kirjelduse, kuidas mgetty selliseks ülesandeks seadistada, on kirja pannud Colin McKinnon colin@wew.co.uk ja see asub aadressil http://www.dyer.demon.co.uk/slug/tipscrip.htm.&Linux; jaoks on ka juba kasutamisvalmis pakett aadressil http://www.icce.rug.nl/docs/programs/callback/callback.html. Seda paketti hooldab Frank B. Brokken frank@icce.rug.nl. Selle seadistamine on küll loogiline, aga mitte just väga lihtne, mistõttu ma kirjutasin selle kohta lühikese sissejuhatuse, mis asub aadressil http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/, kus on ka veidi üldisemalt räägitud sissehelistamisest üldse.&Windows; NT RAS tagasihelistamine&Windows; NT kasutab täiesti teistsugust lähenemist kui äsjakirjeldatu. NT nõuab lausa PPP protokolli laienduse kasutamist, mis kanab nime CBCP (Call Back Control Protocol). pppd toetab seda protokolli, kuid selleks tuleb pppd uuesti kompileerida. Kui kellelgi on õnnestunud edukalt võtta ühendust NT tagasihelistamisserveriga, võiks sellest ka mulle teada anda.