# Indstil &kppp; til at ringe tilbage

Dette kapitel er baseret på materiale der skyldes Martin Häfner, mh@ap-dec717c.physik.uni-karlsruhe.de

## &UNIX; eller &Linux; tilbagekaldsserver

Dette afsnit introducerer &UNIX; (&Linux;) tilbagekald, og hvordan &kppp; kan indstilles til at forbinde til en &UNIX; tilbagekaldsserver, især til en script-baseret &Linux; tilbageringsningserver

### En introduktion til tilbagekald

Der er adskillige grunde til at overveje tilbagekald. Nogle af dem er:

- For at forøge sikkerheden i dit lokale netværk

- For at reducere udgifterne for eksterne medarbejdere

- For at kontrollere telefonomkostninger hvor opkald erklæres som forretningsudgifter

Tænk på om nogen kunne ringe til nummeret på den server du ringer til, og så bryder et kodeord. Hvorfor bekymre sig om at vedligeholde en brandmur for din internetforbindelse hvis det er så let at få adgang til dit netværk?

Tilbagekaldsprogrammer beder generelt om dit navn, og hænger så op. Det ringer så tilbage til dig, sædvanligvis til et nummer der er opbevaret på serveren i en database. Klienten tager så telefonen og fortsætter med at komme på som om intet var hændt. Serveren beder nu om brugernavn og kodeord, med sikkerhed for at du er den du siger du er da du først ringede, eller i det mindste at du er der hvor du sagde du var. Forbindelsen etableres normalt, og pppd startes.

Nu er det store spørgsmål hvordan klienten skal bedes om at tage telefonen, når serveren ringer tilbage. Har du brug for et specielt program, såsom mgetty? Svaret er nej, du har ikke brug for et specielt klient-program. I almindelighed kan en vilkårlig klient bruges til tilbagekald, du kan endog bruge et almindeligt terminalprogram såsom minicom til forbindelsen.

Det eneste du skal gøre er at bede dit modem om at `AutoAnswer` telefonen når et `RING` detekteres af modemet. Dette gøres med følgende modem-kommando:

    AT&SO=1

Dette beder modemet om at tage telefonen efter et `RING`.

Som en masse andre klientprogrammer, tjekker &kppp; for at se om forbindelsen bliver lukket af serveren, og standser så den aktuelle session hvis en `NO CARRIER` detekteres. Dette er derfor det egentlige problem når tilbagekald skal indstilles. `NO CARRIER` vil naturligvis blive detekteret det øjeblik tilbagekaldsserveren lægger på. Nogle servere bruger derfor et speciel login-program. Så hvordan løser du dette problem? Du fortæller dit modem at det skal vise `CARRIER UP` altid (hvilket ikke giver problemer hvis du beder klienten om at lægge på.) Du kan gøre dette med følgende modem-kommando:

    AT&C0

Hvis du ønsker at teste dette, kan du først bruge et almindeligt terminalprogram såsom minicom, og ringe til din tilbagekaldsserver, for at se hvad der sker.

### Opsætning af &kppp;

Så nu da du har set teorien i det virkelige liv, hvordan skal du nu indstille &kppp; til at tage sig af forbindelsen?

Proceduren er helt ligetil som følger.

1. Bed først modemet om at acceptere forbindelser og ikke standse forhandlingerne når tilbagekaldsserveren lægger på første gang. Du kan tilføje begge disse valg i Modem-fanebladet i &kppp;-indstillingen ved at tilføje til Opkaldsstreng strengen `AT&C0S0=1DT`

   Der er ingen andre ændringer i indstillingen af &kppp;. hvis du har besvær med modem init og nulstil, så tjek afsnittet Problemløsning for yderligere oplysninger.

2. Tænk på din server et øjeblik. Husk at &UNIX;, &Windows; og Macintosh operativsystemer har forskellige meninger om hvordan en linje skal afsluttes i en tekstfil, og derfor også i procedurer til at logge på. Hvis du forbinder til en &Windows; server, bruges `CR/LF`, hvis du forbinder til en &UNIX; server, bruges `CR` og hvis du forbinder til en Macintosh server, bruges `LF`

3. Vi antager for disse instruktioner at du ringer til en &Linux; tilbagekalds-pakke som bruger en almindelig måde at logge på (ikke PAP eller sådant).

   Sæt Godkendelse-stil i Ring op-fanebladet for kontoens indstilling til Script-baseret

4. Nu skal du opbygge et script til at logge på. Redigering af script til at logge på er en af &kppp;'s meget smarte egenskaber. Du kan finde det i Login-Script-fanebladet for Redigér konto- dialogen.

   I dette eksempel har brugeren `userxyz` brug for at følgende script bliver kaldet. Tilbagekaldsserveren kender allerede tabellen med navne og deres anvendelige telefonnumre, så du vælger telefonnummeret der skal bruges med et alias, af sikkerhedsgrunde.

   For hver linje vælges kriterier fra dropned-listen til venstre for dialogen, og du skriver handlingen i tekstfeltet til højre for den. Vælg Tilføj for at tilføje hver linje til scriptet. Du kan bruge Indsæt for at tilføje en linje i midten af scriptet, og Fjern for at slette en linje hvis du lavede en fejl.

   Hele scriptet skal se ud som noget i denne retning (uden kommentarerne vist her der starter med et #)

       Expect       ogin:           # husk vi laver almindelig terminal login
       ID           ""              # kppp sender det id du indstillede i
       hoveddialogen
       Expect       for userxyz:    # en liste af de tilgængelige numre bliver
       vist, brugeren skal vælge et
       Send         userxyz-home    # brugeren ønsker at blive ringet tilbage
       på sin hjemmetelefon
       Expect       ogin:           # Tilbagekaldsprocessen kører
       nu, en ny forbindelse derfor en ny login.
       ID
       Expect       assword:        # Send dit kodeord nu
       Expect       >            # Vent på kommandolinjen (tegnet
       kan variere)
       Send         start_ppp       # denne kommando starter pppd

   Efter at have ventet på forespørgslen til at logge på, sender brugeren sin ID og venter på en liste af telefonnumre for dette brugernavn. Så fortælles serveren hvilket af de tilbudte numre der skal ringes tilbage til. &kppp; kan åbne en dialog for dette hvis det ofte sker du er et andet sted, ⪚ hvis du for eksempel er handelsrejsende og flytter fra hotel til hotel. Nu forventer serveren at du logger på og giver dit kodeord til godkendelse, men i mellemtiden lægger serveren på og ringer tilbage til brugeren. Godkendelsesinformationen sendes og &kppp; venter på et kommandolinjetegn, og starter så et lille script (her kaldet `start_ppp` som får gang i pppd på serveren.

   `start_ppp` scriptet kunne se ud som noget i retning af følgende:

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

   Opsætning af en PPP-server er naturligvis ikke inden for dette dokuments muligheder. For detaljeret information, se pppd's man-sider. En glimrende beskrivelse af en tilbagekaldsserver kan findes på http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback

Alle andre indstillingsspørgsmål, såsom indstilling af pppd eller IP virker som normalt, og der er ikke brug for nogen specielle programmer til at tage linjen.

&kppp; tilbagekald og andre programmer såsom mgetty eller et vilkårligt andet faxgetty kan køres på den samme serielle port. Der er ingen problemer med at ringe ind, da &kppp; laver en låsefil som vil fortælle getty-programmet at et andet program (i dette tilfælde &kppp; naturligvis,) bruger linjen på dette tidspunkt.

### Problemløsning

Der er nogle kendte problemer med &kppp; i tilbagekaldstilstand:

- Når du initialiserer modemet til auto-svar, må du nulstille modemet efter din forbindelse er lukket. Ellers vil dit modem fortsætte med at tage telefonen for dig, hvilket ikke er en god idé hvis det drejer sig om din eneste telefonlinje.

- &kppp; har nogle små problemer når den skal dele en linje med et andet program, såsom mgetty. Hvis mgetty kører på samme modem-linje, er &kppp; ikke i stand til at initialisere modemet rigtigt.

- &kppp; kan ikke spørge om visse bruger-inddata når der logges på script-baseret. Uheldigvis spørger &kppp; også om brugernavnet anden gang tilbagekaldsserveren beder om det, i eksempelscriptet ovenfor. Du kan slippe for det ved at skrive dit bruger-id ind i login-scriptet (ikke særlig pænt eller portabelt, men det virker).

### Internet-ressourcer for server software

&Linux; programmer for tilbageringsservere findes mange steder.

Det velkendte mgetty er et meget stærkt program, og det kan også klare tilbagekaldsforbindelser En beskrivelse af hvordan mgetty skal sættes op til dette formål findes på http://www.dyer.demon.co.uk/slug/tipscrip.htm, ved Colin McKinnon, colin@wew.co.uk.

Der er også en brugsklar pakke for &Linux; på http://www.icce.rug.nl/docs/programs/callback/callback.html. Denne pakke vedligeholdes af Frank B. Brokken, frank@icce.rug.nl. Da opsætningen ikke er særlig nem, har jeg skrevet en kort introduktion for den på http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/, som også indeholder en mere generel introduktion til tilbagekald.

## &Windows; NT RAS tilbagekald

&Windows; NT bruger en fuldstændig anderledes metode end den der er beskrevet ovenfor. NT kræver en udvidelse af selve PPP-protokollen der hedder CBCP (Call Back Control Protocol). pppd har støtte for denne protokol, men du må rekompilere pppd. Hvis der er nogen der har erfaring med at forbinde til en NT tilbagekaldsserver, så vil jeg gerne vide det.