28.3. Χρησιμοποιώντας το PPP του Πυρήνα
Προηγ | Κεφάλαιο 28. PPP και SLIP | Επόμενο

## 28.3. Χρησιμοποιώντας το PPP του Πυρήνα

Κάποια τμήματα προέρχονται από αρχική συνεισφορά των Gennady B. Sorokopud και Robert Huff.

### Προειδοποίηση:

Η ενότητα αυτή είναι έγκυρη και μπορεί να εφαρμοστεί μόνο σε συστήματα FreeBSD 7.X.

### 28.3.1. Ρυθμίζοντας το PPP του Πυρήνα

Πριν ξεκινήσετε να ρυθμίζετε το PPP στο μηχάνημα σας, βεβαιωθείτε ότι το `pppd` βρίσκεται στον κατάλογο `/usr/sbin` και ότι υπάρχει ο κατάλογος `/etc/ppp`.

Το `pppd` έχει δύο καταστάσεις λειτουργίας:

1. Ως πελάτης (&#x201C;client&#x201D;) — όταν θέλετε να συνδέσετε το μηχάνημα σας με τον έξω κόσμο μέσω σειριακής σύνδεσης σύνδεσης ή γραμμής modem.

2. Ως εξυπηρετητής (&#x201C;server&#x201D;) — το μηχάνημα σας είναι συνδεμένο στο δίκτυο και χρησιμοποιείται για να συνδέσει άλλους υπολογιστές, χρησιμοποιώντας το PPP.

Και στις δύο περιπτώσεις θα χρειαστεί να δημιουργήσετε ένα αρχείο επιλογών (`/etc/ppp/options` ή `~/.ppprc` αν στο μηχάνημα σας υπάρχουν περισσότεροι από ένας χρήστες που χρησιμοποιούν το PPP).

Θα χρειαστείτε επίσης και κάποιο λογισμικό για χρήση με modem και σειριακές συνδέσεις (κατά προτίμηση το `comms/kermit`), ώστε να μπορείτε να καλέσετε και να αποκαταστήσετε τη σύνδεση με τον απομακρυσμένο εξυπηρετητή.

### 28.3.2. Χρησιμοποιώντας το `pppd` ως Πελάτης

Βασισμένο σε πληροφορίες που παρείχε ο Trev Roydhouse.

Μπορείτε να χρησιμοποιήσετε το `/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

Για να συνδεθείτε:

1. Καλέστε τον απομακρυσμένο εξυπηρετητή χρησιμοποιώντας το Kermit (ή κάποιο άλλο πρόγραμμα για modem) και εισάγετε το όνομα χρήστη και τον κωδικό σας (ή ότι άλλο χρειάζεται για να ενεργοποιήσετε το PPP στον απομακρυσμένο υπολογιστή).

2. Βγείτε από το Kermit (χωρίς να κλείσετε τη γραμμή).

3. Πληκτρολογήστε τα παρακάτω:

   `#` `/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 ATDT`phone.number` CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: `login-id` TIMEOUT 5 sword: `password`

Μόλις τροποποιήσετε και εγκαταστήσετε σωστά τα παραπάνω αρχεία, το μόνο που χρειάζεται να κάνετε είναι να εκτελέσετε την εντολή `pppd`, με τον τρόπο που φαίνεται παρακάτω:

`#` `pppd`

### 28.3.3. Χρησιμοποιώντας το `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:

Προηγ | Πάνω | Επόμενο
28.2. Χρησιμοποιώντας το PPP Χρήστη | Αρχή | 28.4. Αντιμετώπιση Προβλημάτων σε Συνδέσεις PPP

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.