<chapter id="callback"> <title>&kppp; seadistamine tagasihelistamiseks</title> <para>Selle peatüki allikaks on Martin Häfneri <email>mh@ap-dec717c.physik.uni-karlsruhe.de</email> materjal</para> <sect1 id="unix-callback-server"> <title>&UNIX; või &Linux; tagasihelistamisserver</title> <para>See osa tutvustab sissejuhatavalt &UNIX; (&Linux;) tagasihelistamist ning seda, kuidas seadistada &kppp; ühenduma &UNIX; tagasihelistamisserveriga, eriti aga skriptil baseeruva &Linux; <link linkend="callback-resources">tagasihelistamisserveriga</link></para> <sect2> <title>Sissejuhatus tagasihelistamisse</title> <para>Tagasihelistamise kasutamiseks on mitu põhjust. Mõned neist on järgmised:</para> <itemizedlist> <listitem> <para>Kohaliku võrgu turvalisuse suurendamine</para> </listitem> <listitem> <para>Väliste kaastöötajate kulude kahandamine</para> </listitem> <listitem> <para>Telefoniarvete kontrollimine, kui kõnesid hinnatakse ärikuludena</para> </listitem> </itemizedlist> <para>Mõ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?</para> <para>Tagasihelistamistarkvara päris tavaliselt sinu nime ja katkestab siis ühenduse. Seejärel helistatakse sulle tagasi, tavaliselt numbril, mis on salvestatud <emphasis>serveri</emphasis> 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 <application>pppd</application>.</para> <para>Tekib suur küsimus: kuidas panna klient telefoni vastu võtma, kui server tagasi helistab? Kas selleks on vaja erilist rakendust, näiteks <application>mgetty</application>? Vastus: <emphasis>ei</emphasis>, mingit erilist klientrakendust ei ole vaja. Üldiselt võib tagasihelistamisühenduseks kasutada enam-vähem iga klienti, isegi täiesti tavalist terminali, näiteks <application>minicom</application>.</para> <para>Piisab vaid sellest, et anda modemile käsk <command>AutoAnswer</command>, mis vastab kõnele, kui modem saab signaali <computeroutput>RING</computeroutput>. Seda saab teha järgmise modemikäsuga:</para> <screen><userinput><command>AT&SO=1</command></userinput> </screen> <para>See annab modemile korralduse kõne vastu võtta pärast ühekordset signaali <computeroutput>RING</computeroutput>.</para> <para>Sarnaselt paljudele klientrakendustele kontrollib &kppp;, kas server on ühenduse sulgenud, ning peatab aktiivse seansi, kui tuvastab signaali <computeroutput>NO CARRIER</computeroutput>. Siin peitubki tagasihelistamise ainus tõeline probleem. Signaal <computeroutput>NO CARRIER</computeroutput> 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 <computeroutput>CARRIER UP</computeroutput> (mis ei tekita mingeid probleeme, kui annad kliendile korralduse kõne katkestada). Seda saab teha järgmise käsuga:</para> <screen><userinput><command>AT&C0</command></userinput> </screen> <para>Kui soovid seda testida, kasuta esmalt tavalist terminali, näiteks <application>minicom</application>, ja võta kõne oma tagasihelistamisserverile, et näha, mis juhtub.</para> </sect2> <sect2> <title>&kppp; seadistamine</title> <para>Teooria on nüüd läbi, aga kuidas panna &kppp; sellist ühendust tunnistama ja käsitlema? </para> <para>See on õigupoolest üsna lihtne.</para> <procedure> <step> <para>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 <guilabel>Modem</guilabel>, kui lisada võimalusele <guilabel>Numbrivalimise käsustring</guilabel> string <command>AT&C0S0=1DT</command></para> <para>Midagi muud &kppp; seadistustes muuta ei tule. Kui modemi initsialiseerimisel ja lähtestamisel esineb probleeme, uuri lähemalt osa <link linkend="callback-troubleshooting">Probleemid</link>.</para> </step> <step> <para>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 <userinput>CR/LF</userinput>, &UNIX; serveri korral <userinput>CR</userinput> ja Macintoshi serveri puhul <userinput>LF</userinput> </para> </step> <step> <para>Käesolevate juhiste juures eeldame, et kasutad helistamiseks &Linux; tagasihelistamispaketti tavalise sisselogimisega (mitte <acronym>PAP</acronym> või midagi sellist).</para> <para>Määra konto seadistustedialoogis kaardil <guilabel>Helistamine</guilabel> <guilabel>autentimise</guilabel> võimaluseks <guilabel>Skriptil baseeruv</guilabel></para> </step> <step> <para>Nüüd tuleb luua sisselogimisskript. Sisselogimisskriptide loomine ja redigeerimine on üks &kppp; vaimustavaid võimalusi. Selle leiab dialoogi <guilabel>Konto redigeerimine</guilabel> kaardil <guilabel>Sisselogimisskript</guilabel>.</para> <para>Antud näites tuleb kasutajal <systemitem>kasutajaxyz</systemitem> helistamisel pruukida järgnevat skripti. Tagasihelistamisserveril on juba olemas nimed ja vastavad telefoninumbrid, nii et turvalisuse huvides vali telefoninumber aliasega.</para> <para>Iga rea puhul vali dialoogis vasakul paiknevast hüpikkastist vajalik kriteerium ning kirjuta tegevus sellest paremal asuvasse tekstikasti. Klõpsuga nupul <guibutton>Lisa</guibutton> saad iga rea skripti lisada. Keskel asuva nupuga <guibutton>Lisa</guibutton> saab rea lisada suvalisse kohta skriptis (vaikimisi lisatakse see lõppu) ning nupuga <guibutton>Eemalda</guibutton> rea kustutada, kui juhtusid vea tegema.</para> <para>Kogu skript peaks välja nägema umbes nii (küll ilma kommentaarideta, mis siin algavad märgiga #)</para> <screen>Expect ogin: <lineannotation># pea meeles, et me kasutame tavalist terminalis sisselogimist</lineannotation> ID "" <lineannotation># kppp saadab peadialoogis määratud kasutajanime</lineannotation> Expect for kasutajaxyz: <lineannotation># näidatakse saadaolevate numbrite nimekirja, kust kasutaja peaks ühe valima</lineannotation> Send kasutajaxyz-home <lineannotation># kasutaja soovib tagasihelistamist oma kodusel numbril</lineannotation> Expect ogin: <lineannotation># Tagasihelistamisprotsess on käimas, uus ühendus ja sestap ka uus sisselogimine.</lineannotation> ID Expect assword: <lineannotation># Nüüd saada oma parool</lineannotation> Expect > <lineannotation># Oota käsuviipa (selle viiba vorm võib erineda)</lineannotation> Send start_ppp <lineannotation># see käsk käivitab pppd</lineannotation> </screen> <para>Pä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 <filename>start_ppp</filename>), mis käivitab serveril <application>pppd</application>.</para> <para><filename>start_ppp</filename> skript näeb välja umbes selline:</para> <programlisting>#!/bin/sh stty -echo exec /usr/sbin/pppd -detach silent modem </programlisting> <para>Mõistagi ei ole selles käsiraamatus ruumi ega võimalust kirjeldada <acronym>PPP</acronym> serveri seadistamist. Täpsemat infot leiab soovi korral <application>pppd</application> manuaalilehekülgedelt. Tagasihelistamisserveri suurepärane kirjeldus aga leidub veebiaadressil <ulink url="http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback">http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback</ulink></para> </step> </procedure> <para>Kõik muud asjad, näiteks <application>pppd</application> või <acronym>IP</acronym> seadistused, töötavad nagu tavaliselt ning kõne jaoks ei ole vaja mingit erilist tarkvara.</para> <note> <para>&kppp; tagasihelistamisrakendus ja muud rakendused, näiteks <application>mgetty</application> 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;).</para> </note> </sect2> <sect2 id="callback-troubleshooting"> <title>Probleemid</title> <para>&kppp; tagasihelistamisrežiimil on siiski ka mõningaid teadaolevaid probleeme:</para> <itemizedlist> <listitem> <para>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.</para> </listitem> <listitem> <para>&kppp;-l võib olla mõningaid pisiprobleeme liini jagamisel teiste rakendustega, näiteks <application>mgetty</application>. Kui <application>mgetty</application> töötab samal modemiliinil, ei suuda &kppp; modemit korrektselt initsialiseerida. </para> </listitem> <listitem> <para>&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...)</para> </listitem> </itemizedlist> </sect2> <sect2 id="callback-resources"> <title>Serveritarkvara internetis</title> <para>&Linux; tagasihelistamisserveri tarkvara leidub paljudes kohtades.</para> <para>Kuulus <application>mgetty</application> on väga võimas rakendus, mis suudab toime tulla ka tagasihelistamisühendustega. Kirjelduse, kuidas <application>mgetty</application> selliseks ülesandeks seadistada, on kirja pannud Colin McKinnon <email>colin@wew.co.uk</email> ja see asub aadressil <ulink url="http://www.dyer.demon.co.uk/slug/tipscrip.htm">http://www.dyer.demon.co.uk/slug/tipscrip.htm</ulink>.</para> <para>&Linux; jaoks on ka juba kasutamisvalmis pakett aadressil <ulink url="http://www.icce.rug.nl/docs/programs/callback/callback.html">http://www.icce.rug.nl/docs/programs/callback/callback.html</ulink>. Seda paketti hooldab Frank B. Brokken <email>frank@icce.rug.nl</email>. Selle seadistamine on küll loogiline, aga mitte just väga lihtne, mistõttu ma kirjutasin selle kohta lühikese sissejuhatuse, mis asub aadressil <ulink url="http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback">http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/</ulink>, kus on ka veidi üldisemalt räägitud sissehelistamisest üldse.</para> </sect2> </sect1> <sect1 id="nt-callback"> <title>&Windows; NT <acronym>RAS</acronym> tagasihelistamine</title> <para>&Windows; NT kasutab täiesti teistsugust lähenemist kui äsjakirjeldatu. NT nõuab lausa <acronym>PPP</acronym> protokolli laienduse kasutamist, mis kanab nime <acronym>CBCP</acronym> (Call Back Control Protocol). <application>pppd</application> toetab seda protokolli, kuid selleks tuleb <application>pppd</application> uuesti kompileerida. Kui kellelgi on õnnestunud edukalt võtta ühendust NT tagasihelistamisserveriga, võiks sellest ka mulle teada anda.</para> </sect1> </chapter>