Η ενότητα αυτή είναι έγκυρη και μπορεί να εφαρμοστεί μόνο σε συστήματα FreeBSD 7.X.
Πριν ξεκινήσετε να ρυθμίζετε το PPP στο μηχάνημα σας, βεβαιωθείτε
ότι το pppd βρίσκεται στον κατάλογο
/usr/sbin και ότι υπάρχει ο
κατάλογος /etc/ppp.
Το pppd έχει δύο καταστάσεις
λειτουργίας:
Και στις δύο περιπτώσεις θα χρειαστεί να δημιουργήσετε ένα αρχείο
επιλογών (/etc/ppp/options ή
~/.ppprc αν στο μηχάνημα σας υπάρχουν
περισσότεροι από ένας χρήστες που χρησιμοποιούν το PPP).
Θα χρειαστείτε επίσης και κάποιο λογισμικό για χρήση με modem και σειριακές συνδέσεις (κατά προτίμηση το comms/kermit), ώστε να μπορείτε να καλέσετε και να αποκαταστήσετε τη σύνδεση με τον απομακρυσμένο εξυπηρετητή.
Μπορείτε να χρησιμοποιήσετε το
/etc/ppp/options που φαίνεται παρακάτω, για να
συνδεθείτε σε μια γραμμή PPP ενός εξυπηρετητή τερματικών (terminal
server) της Cisco.
crtscts # enable hardware flow control
modem # modem control line
noipdefault # remote PPP server must supply your IP address
# if the remote host does not send your IP during IPCP
# negotiation, remove this option
passive # wait for LCP packets
domain ppp.foo.com # put your domain name here
:remote_ip # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to local_ip:remote_ip
defaultroute # put this if you want that PPP server will be your
# default routerΓια να συνδεθείτε:
Καλέστε τον απομακρυσμένο εξυπηρετητή χρησιμοποιώντας το Kermit (ή κάποιο άλλο πρόγραμμα για modem) και εισάγετε το όνομα χρήστη και τον κωδικό σας (ή ότι άλλο χρειάζεται για να ενεργοποιήσετε το PPP στον απομακρυσμένο υπολογιστή).
Βγείτε από το Kermit (χωρίς να κλείσετε τη γραμμή).
Πληκτρολογήστε τα παρακάτω:
#/usr/sbin/pppd /dev/tty01 19200
Βεβαιωθείτε ότι χρησιμοποιείτε το σωστό όνομα συσκευής και την κατάλληλη ταχύτητα.
Ο υπολογιστής σας είναι τώρα συνδεμένος μέσω PPP. Αν η σύνδεση
αποτύχει, μπορείτε να χρησιμοποιήσετε την επιλογή
debug στο αρχείο
/etc/ppp/options και να ελέγξετε τα μηνύματα στην
κονσόλα για να ανιχνεύσετε το πρόβλημα.
Το παρακάτω script /etc/ppp/pppup
αυτοματοποιεί και τα 3 στάδια:
#!/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 είναι ένα
script για το Kermit το οποίο κάνει την
κλήση και την πιστοποίηση του χρήστη στον απομακρυσμένο υπολογιστή
(στο τέλος αυτού του εγγράφου, θα βρείτε ένα παράδειγμα για ένα
τέτοιο script).
Χρησιμοποιήστε το παρακάτω script
/etc/ppp/pppdown για να αποσυνδέσετε την γραμμή
PPP:
#!/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Ελέγξτε αν εκτελείται ακόμα το pppd,
εκτελώντας το /usr/etc/ppp/ppptest, το οποίο θα
μοιάζει με το παρακάτω:
#!/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Για να κλείσετε την γραμμή, εκτελέστε το
/etc/ppp/kermit.hup, το οποίο θα πρέπει να
περιέχει:
set line /dev/tty01 ; put your modem device here 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
Μια εναλλακτική μέθοδος που χρησιμοποιεί το
chat αντί για το
kermit:
Τα παρακάτω δύο αρχεία επαρκούν για τη δημιουργία μιας σύνδεσης
pppd.
/etc/ppp/options:
/dev/cuad1 115200
crtscts # enable hardware flow control
modem # modem control line
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # remote PPP serve must supply your IP address
# if the remote host doesn't send your IP during
# IPCP negotiation, remove this option
passive # wait for LCP packets
domain your.domain # put your domain name here
: # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to local_ip:remote_ip
defaultroute # put this if you want that PPP server will be
# your default router/etc/ppp/login.chat.script:
Το παρακάτω θα πρέπει να γραφεί σε μια μόνο γραμμή.
ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTphone.numberCONNECT "" TIMEOUT 10 ogin:-\\r-ogin:login-idTIMEOUT 5 sword:password
Μόλις τροποποιήσετε και εγκαταστήσετε σωστά τα παραπάνω αρχεία,
το μόνο που χρειάζεται να κάνετε είναι να εκτελέσετε την εντολή
pppd, με τον τρόπο που φαίνεται παρακάτω:
#pppd
Το /etc/ppp/options θα πρέπει να περιέχει
κάτι αντίστοιχο με το παρακάτω:
crtscts # Hardware flow control
netmask 255.255.255.0 # netmask (not required)
192.114.208.20:192.114.208.165 # IP's of local and remote hosts
# local ip must be different from one
# you assigned to the Ethernet (or other)
# interface on your machine.
# remote IP is IP address that will be
# assigned to the remote machine
domain ppp.foo.com # your domain
passive # wait for LCP
modem # modem lineΤο script /etc/ppp/pppserv που φαίνεται
παρακάτω, θα πει στο pppd να λειτουργήσει
ως εξυπηρετητής:
#!/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Χρησιμοποιήστε το παρακάτω script
/etc/ppp/pppservdown για να σταματήσετε τον
εξυπηρετητή:
#!/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Το παρακάτω script για το Kermit
(/etc/ppp/kermit.ans) μπορεί να ενεργοποιεί και
να απενεργοποιεί την λειτουργία αυτόματης απάντησης στο modem
σας.
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 ; change this to out ATS0=0\13 if you want to disable
; autoanswer mode
inp 5 OK
echo \13
exitΣτον απομακρυσμένο υπολογιστή, χρησιμοποιείται το script
/etc/ppp/kermit.dial για κλήση και πιστοποίηση
του χρήστη. Θα πρέπει να το τροποποιήσετε σύμφωνα με τις ανάγκες σας.
Βάλτε το όνομα χρήστη και τον κωδικό σας σε αυτό το script.
Θα χρειαστεί επίσης να αλλάξετε την γραμμή για την είσοδο (input)
ανάλογα με τις απαντήσεις που δίνει το modem σας και ο απομακρυσμένος
υπολογιστής.
;
; put the com line attached to the modem here:
;
set line /dev/tty01
;
; put the modem speed here:
;
set speed 19200
set file type binary ; full 8 bit file 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 ; Then SET CARRIER if necessary,
set dial display on ; Then SET DIAL if necessary,
set input echo on
set input timeout proceed
set input case ignore
def \%x 0 ; login prompt counter
goto slhup
:slcmd ; put the modem in command mode
echo Put the modem in command mode.
clear ; Clear unread characters from input buffer
pause 1
output +++ ; hayes escape sequence
input 1 OK\13\10 ; wait for OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; if modem doesn't answer OK, try again
:slhup ; hang up the phone
clear ; Clear unread characters from input buffer
pause 1
echo Hanging up the phone.
output ath0\13 ; hayes command for on hook
input 2 OK\13\10
if fail goto slcmd ; if no OK answer, put modem in command mode
:sldial ; dial the number
pause 1
echo Dialing.
output atdt9,550311\13\10 ; put phone number here
assign \%x 0 ; zero the time counter
:look
clear ; Clear unread characters from input buffer
increment \%x ; Count the seconds
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 ; zero the time counter
pause 1
echo Looking for login prompt.
:slloop
increment \%x ; Count the seconds
clear ; Clear unread characters from input buffer
output \13
;
; put your expected login prompt here:
;
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 ; try 10 times to get a login prompt
else goto slhup ; hang up and start again if 10 failures
:sluid
;
; put your userid here:
;
output ppp-login\13
input 1 {Password: }
;
; put your password here:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone. Check the telephone line!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την
τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην
<doc@FreeBSD.org>.