FreeBSD handboek
Terug | Hoofdstuk 28. PPP en SLIP | Volgende

# 28.3. Kernel PPP gebruiken

Delen origineel bijgedragen door Gennady B. Sorokopud en Robert Huff.

## 28.3.1. Het opzetten van kernel PPP

> WaarschuwingDeze sectie geldt en is alleen geldig voor FreeBSD 7.X.

Voordat u begint met het opzetten van PPP op uw machine, zorg ervoor dat het `pppd` commando zich bevindt in de map `/usr/sbin` en dat de map `/etc/ppp` bestaat.

`pppd` kan in twee verschillende modes werken:

1. Als een cliënt -- u wilt uw machine verbinden met de buitenwereld via een seriële PPP-verbinding of een modemlijn.

2. Als een server -- uw machine bevind zich in het netwerk en wordt gebruikt om andere computers te verbinden door middel van PPP.

In beide gevallen moet u een bestand met opties instellen (`/etc/ppp/options` of `~/.ppprc` als er meer dan één gebruiker is op uw machine die gebruik maakt van PPP).

U heeft ook enige modem/seriële software nodig (`comms/kermit` wordt aanbevolen), zodat u de andere kant kunt bellen en een verbinding kunt opzetten.

## 28.3.2. Gebruik maken van `pppd` als cliënt

Gebaseerd op informatie geleverd door Trev Roydhouse.

De volgende `/etc/ppp/options` kan gebruikt worden om met een Cisco terminal server PPP lijn verbinding te maken.

    crtscts         # Schakel hardware flow controle in
    modem           # modem controle lijn
    noipdefault     # De PPP server aan de andere kant moet uw IP adres
                    # opgeven, als de machine aan de andere kant uw IP
                    # adres niet meegeeft tijdens de IPCP onderhandeling
                    # moet deze optie worden verwijderd
    passive         # Wacht op LCP pakketten
    domain ppp.foo.com      # Vul uw domein naam hier in

    :remote_ip    # Vul het IP adres van de PPP
                    # server in deze wordt gebruikt om pakketten te
                    # routeren via de PPP link.  Als u de noipdefault optie
                    # niet heeft aangegeven verander dan deze regel in
                    # local_ip:remote_ip

    defaultroute    # Vul dit in als u wilt dat de PPP server de standaard
                    # router wordt

Om verbinding te maken:

1. Bel naar de machine aan de andere kant door middel van Kermit (of een ander modem programma), en vul uw gebruikersnaam en wachtwoord in (of wat er ook nodig is om de verbinding op te brengen met de machine aan de andere kant).

2. Stop Kermit (zonder de lijn op te hangen).

3. Type het volgende:

       # /usr/sbin/pppd /dev/tty01 19200

   Wees er zeker van dat de juiste snelheid en het juiste apparaat wordt aangesproken.

Uw computer is nu verbonden met PPP. Als de connectie faalt, kan de `debug` optie worden meegegeven in het `/etc/ppp/options` bestand waarna op de console berichten kunnen worden geraadpleegd om het probleem te achterhalen.

Het volgende `/etc/ppp/pppup` script zal alle drie de stappen automatisch doen:

    #!/bin/sh
    pgrep -l pppd
    pid=`pgrep pppd`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    pgrep -l kermit
    pid=`pgrep kermit`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    ifconfig ppp0 down
    ifconfig ppp0 delete

    kermit -y /etc/ppp/kermit.dial
    pppd /dev/tty01 19200

`/etc/ppp/kermit.dial` is een Kermit script dat belt en alle benodigde authorisaties doet op de machine aan de andere kant (een voorbeeld van zo'n script is bijgevoegd aan het einde van dit document).

Gebruik het volgende `/etc/ppp/pppdown` script om de PPP lijn af te breken:

    #!/bin/sh
    pid=`pgrep pppd`
    if [ X${pid} != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill -TERM ${pid}
    fi

    pgrep -l kermit
    pid=`pgrep kermit`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    /sbin/ifconfig ppp0 down
    /sbin/ifconfig ppp0 delete
    kermit -y /etc/ppp/kermit.hup
    /etc/ppp/ppptest

Controleer of `pppd` nog steeds draait door het uitvoeren van `/usr/etc/ppp/ppptest`, welke er als volgend uitziet:

    #!/bin/sh
    pid=`pgrep pppd`
    if [ X${pid} != "X" ] ; then
            echo 'pppd running: PID=' ${pid-NONE}
    else
            echo 'No pppd running.'
    fi
    set -x
    netstat -n -I ppp0
    ifconfig ppp0

Om het modem op te hangen, voer het `/etc/ppp/kermit.hup` script uit welke het volgende bevat:

    set line /dev/tty01	; vul hier uw modem in
    set speed 19200
    set file type binary
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none

    pau 1
    out +++
    inp 5 OK
    out ATH0\13
    echo \13
    exit

Hier is een alternatieve methode welke gebruik maakt van `chat` in plaats van `kermit`:

De volgende twee regels zijn voldoende om een `pppd` verbinding op te zetten.

`/etc/ppp/options`:

    /dev/cuad1 115200

    crtscts         # Schakel hardware flow controle in
    modem           # modem controle lijn
    connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
    noipdefault     # De PPP server aan de andere kant moet uw IP adres
                    # opgeven, als de machine aan de andere kant uw IP
                    # adres niet meegeeft tijdens de IPCP onderhandeling
                    # moet deze optie worden verwijderd
    passive         # Wacht op LCP pakketten
    domain your.domain   # Vul uw domein naam hier in

    :remote_ip    # Vul het IP adres van de PPP
                    # server in deze wordt gebruikt om pakketten te
                    # routeren via de PPP link.  Als u de noipdefault optie
                    # niet heeft aangegeven verander dan deze regel in
                    # local_ip:remote_ip

    defaultroute    # Vul dit in als u wilt dat de PPP server de standaard
                    # router wordt

`/etc/ppp/login.chat.script`:

> Opmerking: Het volgende moet op één regel.

    ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTtelefoon.nummer
      CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id
      TIMEOUT 5 sword: password

Zodra deze zijn geïnstalleerd en correct aangepast is het enige dat gedaan moet worden, het starten van `pppd` zoals volgt:

    # pppd

## 28.3.3. Gebruik maken van `pppd` als server

`/etc/ppp/options` moet ongeveer het volgende bevatten:

    crtscts                         # Hardware flow controle
    netmask 255.255.255.0           # netmask (niet vereist)
    192.114.208.20:192.114.208.165  # IP's van lokale en niet lokale hosten
                                    # het lokale ip moet anders zijn dan
                                    # degeen die is toegewezen aan de
                                    # Ethernet (of andere) interface op uw
                                    # machine.  remote IP is het IP adres
                                    # dat wordt toegewezen aan de machine
                                    # aan de andere kant
    domain ppp.foo.com              # uw domein
    passive                         # Wacht op LCP
    modem                           # modem lijn

Het volgende `/etc/ppp/pppserv` script zal pppd vertellen zich te gedragen als server:

    #!/bin/sh
    pgrep -l pppd
    pid=`pgrep pppd`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    pgrep -l kermit
    pid=`pgrep kermit`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    # reset ppp interface
    ifconfig ppp0 down
    ifconfig ppp0 delete

    # enable autoanswer mode
    kermit -y /etc/ppp/kermit.ans

    # run ppp
    pppd /dev/tty01 19200

Gebruik dit `/etc/ppp/pppservdown` script om de server te stoppen:

    #!/bin/sh
    pgrep -l pppd
    pid=`pgrep pppd`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    pgrep -l kermit
    pid=`pgrep kermit`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi
    ifconfig ppp0 down
    ifconfig ppp0 delete

    kermit -y /etc/ppp/kermit.noans

Het volgende Kermit script (`/etc/ppp/kermit.ans`) zal het automatisch beantwoorden van uw modem in of uitschakelen. Het moet eruit zien als volgend:

    set line /dev/tty01
    set speed 19200
    set file type binary
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none

    pau 1
    out +++
    inp 5 OK
    out ATH0\13
    inp 5 OK
    echo \13
    out ATS0=1\13   ; Verander dit in out ATS0=0\13 als u automatisch
                    ; beantwoorden wilt uitschakelen
    inp 5 OK
    echo \13
    exit

Een script genaamd `/etc/ppp/kermit.dial` wordt gebruikt voor het bellen en authenticeren van de machine aan de andere kant. U moet deze aanpassen aan uw wensen. Vul in dit script uw inlognaam en wachtwoord in, u moet ook het input statement aanpassen afhankelijk hoe uw modem antwoordt en de communicatie van de machine aan de andere kant.

    ;
    ; Vul de seriële lijn in welke verbonden is met het modem
    ;
    set line /dev/tty01
    ;
    ; Stel het modem snelheid in:
    ;
    set speed 19200
    set file type binary            ; volledige 8 bit bestands xfer
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none
    set modem hayes
    set dial hangup off
    set carrier auto                ; Daarna stel SET CARRIER in indien nodig
    set dial display on             ; Stel daarna SET DIAL in indien nodig
    set input echo on
    set input timeout proceed
    set input case ignore
    def \%x 0                       ; login prompt teller
    goto slhup

    :slcmd                          ; stel het modem in op commandomodus
    echo Stel het modem in op commandomodus.
    clear                           ; Verwijder ongelezen karakters uit de input buffer
    pause 1
    output +++                      ; hayes escape sequence
    input 1 OK\13\10                ; wacht op OK
    if success goto slhup
    output \13
    pause 1
    output at\13
    input 1 OK\13\10
    if fail goto slcmd              ; Als het modem niet antwoordt met OK, probeer het opnieuw

    :slhup                          ; hang de telefoon op
    clear                           ; Verwijder ongelezen karakters uit de input buffer
    pause 1
    echo De telefoon wordt opgehangen.
    output ath0\13                  ; hayes command voo on hook
    input 2 OK\13\10
    if fail goto slcmd              ; Als er geen OK antwoord is, stel het modem in op commandomodus

    :sldial                         ; Draai het nummer
    pause 1
    echo Bellen.
    output atdt9,550311\13\10               ; put phone number here
    assign \%x 0                    ; zero the time counter

    :look
    clear                           ; Verwijder ongelezen karakters uit de input buffer
    increment \%x                   ; Tel de seconden
    input 1 {CONNECT }
    if success goto sllogin
    reinput 1 {NO CARRIER\13\10}
    if success goto sldial
    reinput 1 {NO DIALTONE\13\10}
    if success goto slnodial
    reinput 1 {\255}
    if success goto slhup
    reinput 1 {\127}
    if success goto slhup
    if < \%x 60 goto look
    else goto slhup

    :sllogin                        ; login
    assign \%x 0                    ; Stel de tijd teller in op nul
    pause 1
    echo Zoeken naar de login prompt

    :slloop
    increment \%x                   ; Tel de seconden
    clear                           ; Verwijder ongelezen karakters uit de input buffer
    output \13
    ;
    ; Stel hier de verwachte login prompt in:
    ;
    input 1 {Username: }
    if success goto sluid
    reinput 1 {\255}
    if success goto slhup
    reinput 1 {\127}
    if success goto slhup
    if < \%x 10 goto slloop         ; Probeer 10 x om een login prompt te krijgen
    else goto slhup                 ; Hang op en probeer het nogmaals als er 10 mislukte pogingen zijn

    :sluid
    ;
    ; Vul hier uw gebruikersnaam in:
    ;
    output ppp-login\13
    input 1 {Password: }
    ;
    ; Vul hier uw wachtwoord in:
    ;
    output ppp-password\13
    input 1 {Entering SLIP mode.}
    echo
    quit

    :slnodial
    echo \7Er is geen kiestoon, controleer de telefoon lijn!\7
    exit 1

    ; local variables:
    ; mode: csh
    ; comment-start: "; "
    ; comment-start-skip: "; "
    ; end:

Terug | Begin | Volgende
Gebruik maken van gebruiker PPP | Omhoog | Het problemen oplossen van PPP-verbindingen