<chapter id="callback">
<title
>&kppp; instellen voor terugbellen</title>

<para
>Dit hoofdstuk is gebaseerd op materiaal geleverd door Martin H&auml;fner, <email
>mh@ap-dec717c.physik.uni-karlsruhe.de</email
></para>

<sect1 id="unix-callback-server">
<title
>&UNIX; of &Linux; terugbelserver</title>

<para
>Deze sectie introduceert &UNIX; (&Linux;) terugbellen en hoe &kppp; geconfigureerd kan worden om te verbinden met een &UNIX; terugbelserver, speciaal naar een script dat is gebaseerd op de &Linux; terugbelserver</para>

<sect2>
<title
>Een inleiding tot terugbellen</title>

<para
>Er zijn verschillende redenen om terugbellen te gebruiken. Enkele hiervan zijn:</para>

<itemizedlist>
<listitem>
<para
>Om de beveiliging van uw netwerk te vergroten</para>
</listitem>
<listitem>
<para
>Om de kosten van medewerkers die buiten werken te verminderen</para>
</listitem>
<listitem>
<para
>Om telefoonkosten te controleren wanneer deze als zakelijke kosten worden opgevoerd</para>
</listitem>
</itemizedlist>

<para
>Bedenk dat iemand het nummer van de inbel-server kan opbellen en vervolgens het paswoord kan kraken. Waarom zorgen maken over een firewall-verbinding met het internet als toegang tot het netwerk zo makkelijk is?</para>

<para
>Een terugbelprogramma vraagt in het algemeen om uw naam en hangt dan op. En belt vervolgens terug, meestal naar een nummer dat is opgeslagen in een database <emphasis
>op de server</emphasis
>. De gebruiker neemt de telefoon op en vervolgt met de dial-in alsof er niets is gebeurd. De server vraagt nu om de gebruikersnaam en het wachtwoord, omdat nu bekend is wie u was toen u eerst inbelde of dat u in elk geval op de plek bent die u hebt opgegeven. De verbinding wordt normaal opgebouwd en <application
>pppd</application
> wordt gestart.</para>

<para
>De grote vraag is hoe de client moet weten dat de telefoon moet worden opgenomen wanneer de server terugbelt. Is er een speciaal programma nodig zoals <application
>mgetty</application
>? Het antwoord is, <emphasis
>nee</emphasis
>, een speciaal programma is niet nodig. In het algemeen kan elke client worden gebruikt voor terugbelverbindingen, zelfs een gewoon terminal programma zoals <application
>minicom</application
> kan gebruikt worden voor de verbinding.</para>

<para
>Het enige dat gedaan moet worden is uw modem vertellen dat het de telefoon  moet <command
>AutoAnswer</command
> wanneer een <computeroutput
>RING</computeroutput
> is gedetecteerd door uw modem. Dit wordt gedaan met het volgende modemcommando:</para>

<screen
><userinput
><command
>AT&amp;SO=1</command
></userinput
>
</screen>

<para
>Dit vertelt het modem om de hoorn op te nemen na één <computeroutput
>RING</computeroutput
>.</para>

<para
>Zoals veel andere client-programma's, controleert &kppp; of de verbinding is gesloten door de server en stopt de huidige sessie af als een <computeroutput
>NO CARRIER</computeroutput
> is gedetecteerd. Dit is het echte probleem bij het opzetten van een callback. <computeroutput
>NO CARRIER</computeroutput
> wordt natuurlijk gedetecteerd op het moment dat de terugbelserver de verbinding verbreekt. Sommige servers gebruiken daarom een speciaal login-programma. Hoe moet dit probleem worden opgelost? Het modem wordt verteld om altijd <computeroutput
>CARRIER UP</computeroutput
> door te geven (dit geeft geen problemen als de client de lijn moet ophangen). Dit kan worden gedaan met het volgende modem-commando:</para>

<screen
><userinput
><command
>AT&amp;C0</command
></userinput
>
</screen>

<para
>Als u dit wilt testen dan kunt u eerst een gewoon terminalprogramma, zoals <application
>minicom</application
> gebruiken en uw terugbelserver bellen om te zien wat er gebeurt.</para>

</sect2>

<sect2>
<title
>De opzet van &kppp;</title>

<para
>Dus nadat u de theorie in actie hebt gezien, hoe stelt u &kppp; in om de verbinding te behandelen? </para>

<para
>De procedure is tamelijk recht-toe-recht-aan, als volgt.</para>

<procedure>
<step>
<para
>Eerst moet het modem geïnstrueerd worden dat het verbindingen moet accepteren en de onderhandelingen niet moet stoppen wanneer de terugbelserver de eerste keer ophangt. Beide opties kunnen in het tabblad <guilabel
>Modem</guilabel
> van de &kppp;-configuratie worden toegevoegd door in de optie <guilabel
>Inbeltekenreeks</guilabel
> de tekenreeks <command
>AT&amp;C0S0=1DT</command
> toe te voegen.</para>
<para
>Andere veranderingen zijn voor de configuratie van &kppp; niet nodig. Als er toch problemen met de commando's init en reset van het modem zijn, lees dan de sectie <link linkend="callback-troubleshooting"
>Probleemoplossing</link
> voor meer informatie.</para>
</step>
<step>
<para
>Denk een moment na over uw server. Vergeet niet dat &UNIX;, &Windows; en Macintosh operating systemen verschillende ideeën hebben over hoe een regel in tekstbestand moet eindigen, en dus ook in login procedures. Als er verbonden wordt met een &Windows;-server, gebruik dan <userinput
>CR/LF</userinput
>, als er verbonden wordt met een &UNIX;-server, gebruik dan <userinput
>CR</userinput
> en als er verbonden wordt met een Macintosh-server, gebruik dan <userinput
>LF</userinput
> </para>
</step>
<step>
<para
>We nemen voor deze instructies aan dat u een &Linux; server belt met een terugbelpakket die gewone aanmelding gebruikt (geen <acronym
>PAP</acronym
> of zoiets).</para>
<para
>Stel de manier van <guilabel
>Authenticatie</guilabel
> in het tabblad <guilabel
>Kiezen</guilabel
> van de accountinstellingen in op <guilabel
>Script-gebaseerd</guilabel
></para>
</step>
<step>
<para
>Nu moet het login-script opgebouwd worden. Het bewerken van login-scripts is een van de leuke onderdelen van &kppp;. Het kan gevonden worden in het tabblad <guilabel
>Login-script</guilabel
> van de dialoog <guilabel
>Account bewerken</guilabel
>.</para>

<para
>In dit voorbeeld moet de gebruiker <systemitem
>userxyz</systemitem
> met het volgende script worden opgebeld. De terugbelserver heeft al een tabel met namen en de bijbehorende telefoonnummers, er hoeft dus alleen het telefoonnummer gekozen te worden om die met een alias (voor veiligheidsredenen) te gebruiken.</para>

<para
>Maak voor elke regel een keuze uit de keuzelijst links van de dialoog en vul de actie in het tekstvak rechts in. Gebruik <guibutton
>Toevoegen</guibutton
> om een regel onder aan het script toe te voegen. Gebruik <guibutton
>Invoegen</guibutton
> om een regel in het midden van het script toe te voegen, en <guibutton
>Verwijderen</guibutton
> om een regel te verwijderen als er een vergissing is gemaakt.</para>

<para
>Het gehele script moet er ongeveer als volgt uitzien (zonder het commentaar, hier getoond beginnend met een #)</para>

<screen
>Expect       ogin:           <lineannotation
># merk op; we doen een gewone terminal login</lineannotation>
ID           ""              <lineannotation
># kppp verstuurt het id dat is ingesteld
de hoofddialoog</lineannotation>
Expect       for userxyz:    <lineannotation
># een lijst van beschikbare nummers
wordt getoond, de gebruiker moet er een kiezen</lineannotation
> 
Send         userxyz-home    <lineannotation
># de gebruiker wil terug worden gebeld
op het thuisnummer</lineannotation>
Expect       ogin:           <lineannotation
># Het terugbel proces is nu
gestart, een nieuwe verbinding, en dus een nieuwe login.</lineannotation>
ID
Expect       assword:        <lineannotation
># Verstuur nu uw wachtwoord</lineannotation>
Expect       &gt;            <lineannotation
># Wacht op de commandoregel (de
commandoregel kan variëren)</lineannotation>
Send         start_ppp       <lineannotation
># dit commando start de pppd</lineannotation
>
</screen>

<para
>Na een verzoek voor een login stuurt de gebruiker zijn ID en wacht op een lijst met voor deze gebruiker beschikbare telefoonnummers. Vervolgens geeft hij aan de server door op welk van de opgegeven telefoonnummers hij teruggebeld wil worden. &kppp; kan als de locatie vaak verandert hiervoor een venster openen, &eg; als het beroep vertegenwoordiger is en men verplaatst zich van hotel naar hotel. De server verwacht een gebruikersnaam en een wachtwoord als authenticatie maar hangt op en belt terug naar de gebruiker. De gevraagde informatie wordt verstuurd waarna &kppp; wacht op de commando-prompt, om vervolgens een klein scriptje te starten (hier <filename
>start_ppp</filename
> genoemd die <application
>pppd</application
> op de server opstart.</para>
					      
<para
>Het script <filename
>start_ppp</filename
> kan er als volgt uitzien:</para>
					      
<programlisting
>#!/bin/sh
stty -echo
exec /usr/sbin/pppd -detach silent modem
</programlisting>
					      
<para
>Het opzetten van een <acronym
>PPP</acronym
>-server wordt uiteraard niet in dit document behandeld. Lees voor meer informatie over dit onderwerp de man-pagina's van <application
>pppd</application
>.</para>
</step>
</procedure>

<para
>Alle andere instellingen zoals de configuratie van <application
>pppd</application
> of de <acronym
>IP</acronym
>-instellingen moeten zoals normaal ingesteld zijn en er is geen speciale software nodig om de telefoon op te nemen.</para>

<note>
<para
>&kppp;-terugbellen en andere programma's zoals <application
>mgetty</application
> of elke andere faxgetty kunnen dezelfde seriële poort gebruiken. Er zijn geen problemen met het inbellen omdat &kppp; een vergrendelbestand aanmaakt welke het andere getty programma vertelt dat een ander programma (in dit geval, &kppp; natuurlijk,) de telefoonlijn op dit moment gebruikt.</para>
</note>

</sect2>

<sect2 id="callback-troubleshooting">
<title
>Probleemoplossing</title>

<para
>Er zijn enkele bekende problemen met &kppp; in de terugbel-modus:</para>

<itemizedlist>
<listitem>
<para
>Omdat U het modem heeft ingesteld op automatisch antwoorden moet het modem na het verbreken van de verbinding weer gereset worden. Anders blijft het modem de telefoon voor U opnemen en dat is geen goed idee als de betreffende lijn uw hoofdtelefoonlijn is.</para>
</listitem>
<listitem>
<para
>Als de telefoonlijn wordt gedeeld met een ander programma zoals bijvoorbeeld <application
>mgetty</application
> heeft &kppp; enkele kleine probleempjes.Als <application
>mgetty</application
> dezelfde modemlijn gebruikt dan kan &kppp; het modem niet correct instellen. </para>
</listitem>
<listitem>
<para
>&kppp; kan de gebruiker niet om gegevens vragen tijdens een op een script gebaseerde login. Helaas vraagt &kppp; naar de gebruikersnaam en het wachtwoord wanneer de terugbel-server de tweede keer ernaar vraagt. Dit kan voorkomen worden door de userid hard in het login-script te programmeren (niet goed overdraagbaar of mooi maar het werkt wel).</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
>&Windows; NT <acronym
>RAS</acronym
> terugbellen</title>

<para
>&Windows; NT heeft een compleet andere benadering dan hierboven beschreven. NT vereist een uitbreiding op het <acronym
>PPP</acronym
> protocol zelf met de naam <acronym
>CBCP</acronym
> (Call Back Control Protocol). <application
>pppd</application
> ondersteunt dit protocol, maar dan moet <application
>pppd</application
> wel opnieuw gecompileerd worden. Als iemand ervaring heeft met het succesvol verbinden met een NT terugbelserver, laat het ons weten.</para>

</sect1>
</chapter>
