27.3. Kernel-PPP gebruiken
Delen origineel bijgedragen door Gennady B. Sorokopud en Robert Huff.
27.3.1. Het opzetten van kernel-PPP
Waarschuwing:
Deze 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:
Als een “cliënt” — u wilt uw
machine verbinden met de buitenwereld via een seriële
PPP-verbinding of een modemlijn.
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.
27.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:
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).
Stop Kermit (zonder de lijn
op te hangen).
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
27.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: