# &kppp; instellen voor terugbellen

Dit hoofdstuk is gebaseerd op materiaal geleverd door Martin Häfner, mh@ap-dec717c.physik.uni-karlsruhe.de

## &UNIX; of &Linux; terugbelserver

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

### Een inleiding tot terugbellen

Er zijn verschillende redenen om terugbellen te gebruiken. Enkele hiervan zijn:

- Om de beveiliging van uw netwerk te vergroten

- Om de kosten van medewerkers die buiten werken te verminderen

- Om telefoonkosten te controleren wanneer deze als zakelijke kosten worden opgevoerd

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?

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 op de server. 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 pppd wordt gestart.

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 mgetty? Het antwoord is, nee, een speciaal programma is niet nodig. In het algemeen kan elke client worden gebruikt voor terugbelverbindingen, zelfs een gewoon terminal programma zoals minicom kan gebruikt worden voor de verbinding.

Het enige dat gedaan moet worden is uw modem vertellen dat het de telefoon moet `AutoAnswer` wanneer een `RING` is gedetecteerd door uw modem. Dit wordt gedaan met het volgende modemcommando:

    AT&SO=1

Dit vertelt het modem om de hoorn op te nemen na één `RING`.

Zoals veel andere client-programma's, controleert &kppp; of de verbinding is gesloten door de server en stopt de huidige sessie af als een `NO CARRIER` is gedetecteerd. Dit is het echte probleem bij het opzetten van een callback. `NO CARRIER` 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 `CARRIER UP` door te geven (dit geeft geen problemen als de client de lijn moet ophangen). Dit kan worden gedaan met het volgende modem-commando:

    AT&C0

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

### De opzet van &kppp;

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

De procedure is tamelijk recht-toe-recht-aan, als volgt.

1. 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 Modem van de &kppp;-configuratie worden toegevoegd door in de optie Inbeltekenreeks de tekenreeks `AT&C0S0=1DT` toe te voegen.

   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 Probleemoplossing voor meer informatie.

2. 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 `CR/LF`, als er verbonden wordt met een &UNIX;-server, gebruik dan `CR` en als er verbonden wordt met een Macintosh-server, gebruik dan `LF`

3. We nemen voor deze instructies aan dat u een &Linux; server belt met een terugbelpakket die gewone aanmelding gebruikt (geen PAP of zoiets).

   Stel de manier van Authenticatie in het tabblad Kiezen van de accountinstellingen in op Script-gebaseerd

4. 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 Login-script van de dialoog Account bewerken.

   In dit voorbeeld moet de gebruiker userxyz 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.

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

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

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

   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 `start_ppp` genoemd die pppd op de server opstart.

   Het script `start_ppp` kan er als volgt uitzien:

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

   Het opzetten van een PPP-server wordt uiteraard niet in dit document behandeld. Lees voor meer informatie over dit onderwerp de man-pagina's van pppd.

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

&kppp;-terugbellen en andere programma's zoals mgetty 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.

### Probleemoplossing

Er zijn enkele bekende problemen met &kppp; in de terugbel-modus:

- 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.

- Als de telefoonlijn wordt gedeeld met een ander programma zoals bijvoorbeeld mgetty heeft &kppp; enkele kleine probleempjes.Als mgetty dezelfde modemlijn gebruikt dan kan &kppp; het modem niet correct instellen.

- &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).

## &Windows; NT RAS terugbellen

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