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

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

Ενημερώθηκε και βελτιώθηκε από τον Tom Rhodes.
Αρχική συνεισφορά του Brian Somers.
Με τη βοήθεια των Nik Clayton, Dirk Frömberg και Peter Childs.

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

Από το FreeBSD 8.0 και μετά, τα ονόματα συσκευών για τις σειριακές θύρες μετονομάστηκαν από `/dev/cuad`N`` σε `/dev/cuau`N`` και από `/dev/ttyd`N`` σε `/dev/ttyu`N``. Οι χρήστες του FreeBSD 7.X θα χρειαστεί να προσαρμόσουν τις παρακάτω οδηγίες σύμφωνα με αυτές τις αλλαγές.

### 28.2.1. PPP Χρήστη

#### 28.2.1.1. Προϋποθέσεις

Το κείμενο αυτό προϋποθέτει ότι έχετε τα παρακάτω:

- Λογαριασμό σε κάποιο Παροχέα Υπηρεσιών Internet (ISP) στον οποίο συνδέεστε χρησιμοποιώντας PPP.

- Ένα modem ή άλλη συσκευή συνδεμένη στο σύστημα σας, και ρυθμισμένη σωστά ώστε να σας επιτρέπει να συνδεθείτε στον ISP σας.

- Τους αριθμούς κλήσης για τον ISP σας.

- Το όνομα χρήστη (login) και τον κωδικό σας (password). Είτε κανονικό όνομα και κωδικό (τύπου UNIX®) ή ένα ζεύγος ονόματος / κωδικού τύπου PAP ή CHAP.

- Τις IP διευθύνσεις ενός ή περισσότερων διακομιστών ονομάτων (DNS). Φυσιολογικά, ο ISP σας θα σας δώσει δύο τέτοιες διευθύνσεις. Αν δεν έχετε τουλάχιστον μία, μπορείτε να ενεργοποιήσετε την εντολή `enable dns` στο `ppp.conf` και το ppp θα ρυθμίσει τους διακομιστές ονομάτων για σας. Το χαρακτηριστικό αυτό εξαρτάται από την υποστήριξη της διαπραγμάτευσης DNS από τον ISP σας.

Ο ISP σας ενδεχομένως να σας δώσει και τις παρακάτω πληροφορίες, αλλά δεν είναι εντελώς απαραίτητες:

- Τη διεύθυνση IP για την πύλη (gateway) του ISP σας. Η πύλη είναι το μηχάνημα μέσω του οποίου συνδέεστε, και θα αποτελέσει την προεπιλεγμένη διαδρομή (default route) για το μηχάνημα σας. Αν δεν έχετε αυτή την πληροφορία, θα χρησιμοποιηθεί μια εικονική, και όταν συνδεθείτε θα λάβετε την κανονική διεύθυνση από τον διακομιστή PPP του ISP σας.

  Αυτή η διεύθυνση IP αναφέρεται ως `HISADDR` από το ppp.

- Τη μάσκα δικτύου (netmask) που πρέπει να χρησιμοποιήσετε. Αν ο ISP σας δε σας την παρέχει, μπορείτε με ασφάλεια να χρησιμοποιήσετε την τιμή `255.255.255.255`.

- Αν ο ISP σας παρέχει στατική διεύθυνση και όνομα υπολογιστή (hostname) μπορείτε να χρησιμοποιήσετε αυτά. Διαφορετικά, θα αφήσουμε τον απομακρυσμένο υπολογιστή να δώσει όποια διεύθυνση IP θεωρεί κατάλληλη.

Αν σας λείπουν κάποιες από τις απαιτούμενες πληροφορίες, επικοινωνήστε με τον ISP σας.

### Σημείωση:

Σε ολόκληρη την παρούσα ενότητα, πολλά από τα παραδείγματα που δείχνουν τα περιεχόμενα των αρχείων ρυθμίσεων, είναι αριθμημένα ανά γραμμή. Οι αριθμοί αυτοί εξυπηρετούν στην παρουσίαση και τη συζήτηση του κάθε παραδείγματος, και δεν πρέπει να γραφούν μέσα στο πραγματικό αρχείο. Είναι επίσης σημαντικό να τηρείτε η σωστή στοίχιση σε κάθε αρχείο, με τη χρήση στηλοθετών (tabs) και κενών διαστημάτων.

#### 28.2.1.2. Αυτόματη Ρύθμιση PPP

Τόσο το `ppp` όσο και το `pppd` (η υλοποίηση του PPP σε επίπεδο πυρήνα, μόνο στο FreeBSD 7.X) χρησιμοποιούν τα αρχεία ρυθμίσεων στον κατάλογο `/etc/ppp`. Μπορείτε να βρείτε παραδείγματα για το ppp χρήστη στον κατάλογο `/usr/share/examples/ppp/`.

H ρύθμιση του `ppp` απαιτεί την τροποποίηση ενός αριθμού από αρχεία, ανάλογα με τις απαιτήσεις σας. Το τι θα βάλετε σε αυτά, εξαρτάται σε ένα ποσοστό από το αν ο ISP σας αποδίδει στατικές διευθύνσεις IP (δηλ. σας παρέχει μια διεύθυνση IP η οποία δεν αλλάζει) ή δυναμικές (δηλ. η IP διεύθυνση σας αλλάζει κάθε φορά που συνδέεστε στον ISP σας).

##### 28.2.1.2.1. PPP και Στατικές Διευθύνσεις IP

Θα χρειαστεί να τροποποιήσετε το αρχείο ρυθμίσεων `/etc/ppp/ppp.conf`. Θα πρέπει να μοιάζει με αυτό που φαίνεται παρακάτω:

### Σημείωση:

Οι γραμμές που τελειώνουν με `:` ξεκινούν στην πρώτη στήλη (αρχή της γραμμής) — όλες οι άλλες γραμμές θα πρέπει να στοιχισθούν με τον τρόπο που φαίνεται, με τη χρήση κενών ή στηλοθετών.

1 default: 2 set log Phase Chat LCP IPCP CCP tun command 3 ident user-ppp VERSION (built COMPILATIONDATE) 4 set device /dev/cuau0 5 set speed 115200 6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ 7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" 8 set timeout 180 9 enable dns 10 11 provider: 12 set phone "(123) 456 7890" 13 set authname foo 14 set authkey bar 15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp" 16 set timeout 300 17 set ifaddr `x.x.x.x` `y.y.y.y` 255.255.255.255 0.0.0.0 18 add default HISADDR

Γραμμή 1:

  Αναγνωρίζει την προεπιλεγμένη καταχώριση. Οι εντολές σε αυτή την καταχώριση εκτελούνται αυτόματα, όταν εκτελείται το ppp.

Γραμμή 2:

  Ενεργοποιεί την καταγραφή (logging) των παραμέτρων. Όταν οι ρυθμίσεις που έχουν γίνει λειτουργούν ικανοποιητικά, η γραμμή αυτή θα πρέπει να μικρύνει στην παρακάτω:

  set log phase tun

  για να αποφευχθούν μεγάλα μεγέθη στα αρχεία καταγραφής.

Γραμμή 3:

  Λέει στο PPP πως να αναφέρει πληροφορίες για τον εαυτό του στην άλλη μεριά της σύνδεσης. Η διαδικασία αυτή γίνεται αν το PPP έχει πρόβλημα στην διαπραγμάτευση και ολοκλήρωση της σύνδεσης, παρέχοντας με αυτό τον τρόπο πληροφορίες στον απομακρυσμένο διαχειριστή. Οι πληροφορίες αυτές μπορεί να είναι χρήσιμες στην επίλυση του προβλήματος.

Γραμμή 4:

  Αναγνωρίζει τη συσκευή στην οποία είναι συνδεμένο το modem. Η συσκευή `COM1` είναι η `/dev/cuau0` και η `COM2` είναι η `/dev/cuau1`.

Γραμμή 5:

  Καθορίζει την ταχύτητα με την οποία επιθυμείτε να συνδεθείτε. Αν δεν λειτουργεί η τιμή 115200 (η οποία πρέπει να λειτουργεί με κάθε σχετικά σύγχρονο modem), δοκιμάστε με 38400.

Γραμμές 6 & 7:

  Το αλφαριθμητικό που θα χρησιμοποιηθεί για την κλήση. Το PPP χρήστη χρησιμοποιεί σύνταξη expect-send παρόμοια με αυτή που χρησιμοποιεί το πρόγραμμα chat(8). Δείτε τη σελίδα manual για πληροφορίες σχετικά με τις δυνατότητες αυτής της γλώσσας.

  Σημειώστε ότι αυτή η εντολή συνεχίζει στην επόμενη γραμμή για λόγους αναγνωσιμότητας. Αυτό μπορεί να γίνει σε κάθε εντολή του `ppp.conf`, εφόσον το `\` είναι ο τελευταίος χαρακτήρας της γραμμής.

Γραμμή 8:

  Καθορίζει το χρόνο τερματισμού λόγω αδράνειας της σύνδεσης. Τα 180 δευτερόλεπτα είναι η προεπιλεγμένη τιμή, έτσι η γραμμή αυτή είναι εδώ καθαρά διακοσμητική.

Γραμμή 9:

  Λέει στο PPP να ρωτήσει την άλλη πλευρά για να επιβεβαιώσει τις τοπικές ρυθμίσεις του resolver. Αν εκτελείτε τοπικό διακομιστή ονομάτων (DNS), θα πρέπει να μετατρέψετε αυτή τη γραμμή σε σχόλιο ή να την αφαιρέσετε.

Γραμμή 10:

  Κενή γραμμή ώστε η ανάγνωση του αρχείου να είναι πιο εύκολη. Οι κενές γραμμές αγνοούνται από το PPP.

Γραμμή 11:

  Αναγνωρίζει την καταχώριση ενός παροχέα με το όνομα &#x201C;provider&#x201D;. Μπορείτε εδώ να χρησιμοποιήσετε το όνομα του ISP σας, ώστε αργότερα να ξεκινάτε τη σύνδεση σας με την επιλογή `load `ISP``.

Γραμμή 12:

  Θέτει τον αριθμό κλήσης για αυτό τον παροχέα. Μπορείτε να καθορίσετε πολλαπλούς αριθμούς κλήσης χρησιμοποιώντας άνω-κάτω τελεία (`:`) ή τον χαρακτήρα (`|`) ως διαχωριστικό. Η διαφορά μεταξύ των δύο διαχωριστικών περιγράφεται στο ppp(8). Περιληπτικά, αν θέλετε να δοκιμάζονται κυκλικά όλοι οι αριθμοί, χρησιμοποιήστε την άνω-κάτω τελεία. Αν θέλετε να γίνεται πάντοτε απόπειρα κλήσης του πρώτου αριθμού και οι υπόλοιποι να δοκιμάζονται μόνο αν ο πρώτος αποτύχει, χρησιμοποιήστε το χαρακτήρα παροχέτευσης. Να γράφετε πάντοτε όλο το σύνολο των τηλεφωνικών αριθμών με τον τρόπο που φαίνεται.

  Αν ο αριθμός τηλεφώνου περιέχει κενά, θα πρέπει να τον περικλείσετε σε εισαγωγικά (`"`). Η παράλειψη τους, αν και είναι απλό σφάλμα, μπορεί να προκαλέσει προβλήματα που δεν μπορούν να εντοπιστούν εύκολα.

Γραμμές 13 & 14:

  Αναγνωρίζει το όνομα χρήστη και τον κωδικό του. Όταν συνδέεστε χρησιμοποιώντας προτροπή τύπου UNIX®, οι τιμές αυτές αναφέρονται από την εντολή `set login` χρησιμοποιώντας τις μεταβλητές \U και \P. Όταν συνδέεστε με χρήση PAP ή CHAP, οι τιμές αυτές χρησιμοποιούνται την ώρα της πιστοποίησης ταυτότητας του χρήστη.

Γραμμή 15:

  Αν χρησιμοποιείτε PPP ή CHAP, δεν θα υπάρχει στο σημείο αυτό προτροπή εισόδου (login), και θα πρέπει να μετατρέψετε τη γραμμή αυτή σε σχόλιο ή να την αφαιρέσετε. Δείτε την Πιστοποίηση PAP και CHAP για περισσότερες λεπτομέρειες.

  Το αλφαριθμητικό εισόδου χρησιμοποιεί σύνταξη παρόμοια με το chat(8), όπως συμβαίνει και με το αλφαριθμητικό κλήσης. Στο παράδειγμα μας, το αλφαριθμητικό χρησιμοποιείται για μια υπηρεσία στην οποία η συνεδρία εισόδου μοιάζει με την παρακάτω:

  J. Random Provider login: `foo` password: `bar` protocol: ppp

  Θα χρειαστεί να αλλάξετε αυτό το script ανάλογα με τις ανάγκες σας. Όταν γράφετε αυτό το script την πρώτη φορά, βεβαιωθείτε ότι έχετε ενεργοποιήσει το αρχείο καταγραφής για το &#x201C;chat&#x201D; ώστε να μπορείτε να προσδιορίσετε αν η διαδικασία αναγνώρισης προχωράει σωστά.

Γραμμή 16:

  Θέτει το χρόνο αδράνειας (σε δευτερόλεπτα) για τη σύνδεση. Εδώ, η σύνδεση θα κλείσει αυτόματα αν δεν υπάρχει κίνηση για 300 δευτερόλεπτα. Αν δεν θέλετε να γίνεται ποτέ τερματισμός της σύνδεσης λόγω αδράνειας, θέστε αυτή τη τιμή σε μηδέν, ή χρησιμοποιήστε την επιλογή `-ddial` στη γραμμή εντολής.

Γραμμή 17:

  Θέτει τη διεύθυνση της διεπαφής. Το αλφαριθμητικό `x.x.x.x` θα πρέπει να αντικατασταθεί με τη διεύθυνση IP που σας έχει αποδοθεί από τον παροχέα σας. Το αλφαριθμητικό `y.y.y.y` θα πρέπει να αντικατασταθεί με την διεύθυνση IP που έχει καθορίσει ο ISP σας ως πύλη (gateway, το μηχάνημα στο οποίο συνδέεστε). Αν ο ISP σας δεν σας έχει δώσει διεύθυνση πύλης, χρησιμοποιήστε την `10.0.0.2/0`. Αν πρέπει να χρησιμοποιήσετε μια IP διεύθυνση που έχετε &#x201C;μαντέψει&#x201D;, βεβαιωθείτε ότι έχετε δημιουργήσει μια καταχώριση στο `/etc/ppp/ppp.linkup` σύμφωνα με τις οδηγίες για το PPP και Δυναμικές IP Διευθύνσεις. Αν παραλείψετε αυτή τη γραμμή, το `ppp` δεν θα μπορεί να εκτελεστεί σε κατάσταση `-auto`.

Γραμμή 18:

  Προσθέστε μια προεπιλεγμένη διαδρομή (default route) προς το μηχάνημα πύλης (gateway) του ISP σας. Η ειδική λέξη `HISADDR` αντικαθίσταται με την διεύθυνση πύλης που καθορίζεται στη γραμμή 17. Είναι σημαντικό η γραμμή αυτή να εμφανίζεται μετά την γραμμή 17, διαφορετικά το `HISADDR` δεν θα έχει ακόμα λάβει αρχική τιμή.

  Αν δεν επιθυμείτε να εκτελέσετε το ppp σε κατάσταση `-auto`, θα πρέπει να μετακινήσετε αυτή τη γραμμή στο αρχείο `ppp.linkup`.

Δεν είναι απαραίτητο να προσθέσετε καταχώριση στο αρχείο `ppp.linkup` όταν έχετε στατική διεύθυνση IP και εκτελείτε το ppp σε κατάσταση `-auto`. Στην περίπτωση αυτή, οι καταχωρίσεις σας στον πίνακα δρομολόγησης είναι σωστές πριν καν συνδεθείτε. Ίσως ωστόσο να θέλετε να δημιουργήσετε μια καταχώριση για να εκτελέσετε κάποια προγράμματα μετά την αποκατάσταση της σύνδεσης. Θα το εξηγήσουμε αυτό αργότερα σε ένα παράδειγμα με το sendmail.

Μπορείτε να βρείτε παραδείγματα αρχείων ρυθμίσεων στον κατάλογο `usr/share/examples/ppp/`.

##### 28.2.1.2.2. PPP και Δυναμικές Διευθύνσεις IP

Αν ο παροχέας σας δεν δίνει στατικές διευθύνσεις, το `ppp` μπορεί να ρυθμιστεί να διαπραγματεύεται την τοπική και την απομακρυσμένη διεύθυνση. Αυτό γίνεται &#x201C;μαντεύοντας&#x201D; μια διεύθυνση IP, και επιτρέποντας στο `ppp` να την θέσει έπειτα σωστά, χρησιμοποιώντας το πρωτόκολλο IPCP (IP Configuration Protocol) μετά τη σύνδεση. Το αρχείο ρυθμίσεων `ppp.conf` είναι το ίδιο όπως και στο PPP και Στατικές Διευθύνσεις IP, με την παρακάτω μόνο αλλαγή:

17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0

Όπως και προηγουμένως, δεν πρέπει να περιλάβετε τον αριθμό γραμμής. Απαιτείται εσοχή ενός τουλάχιστον κενού διαστήματος.

Γραμμή 17:

  Ο αριθμός μετά το χαρακτήρα `/` είναι το πλήθος των bits της διεύθυνσης για το οποίο θα επιμείνει το ppp. Ίσως θέλετε να χρησιμοποιήσετε αριθμούς IP πιο κατάλληλους για την περίσταση, αλλά το παράδειγμα που δίνουμε παραπάνω θα λειτουργήσει πάντα.

  Το τελευταίο όρισμα (το `0.0.0.0`) λέει στο PPP να αρχίσει τις διαπραγματεύσεις με την διεύθυνση `0.0.0.0` αντί για την `10.0.0.1`. Αυτό είναι απαραίτητο σε ορισμένους ISP. Μη χρησιμοποιήσετε το `0.0.0.0` ως πρώτο όρισμα στην `set ifaddr`, καθώς θα εμποδίσει την PPP να ρυθμίσει την αρχική διαδρομή στην κατάσταση `-auto` .

Αν δεν χρησιμοποιείτε την επιλογή `-auto`, θα χρειαστεί να δημιουργήσετε μια καταχώριση στο αρχείο `/etc/ppp/ppp.linkup`. Το αρχείο `ppp.linkup` χρησιμοποιείται μετά την αποκατάσταση της σύνδεσης. Στο σημείο αυτό, το `ppp` θα έχει ήδη αποδώσει διεύθυνση στην διεπαφή και θα είναι πλέον δυνατόν να προσθέσετε τις καταχωρίσεις στον πίνακα δρομολόγησης:

1 provider: 2 add default HISADDR

Γραμμή 1:

  Με την αποκατάσταση της σύνδεσης, το `ppp` θα ψάξει για μια καταχώριση στο `ppp.linkup` σύμφωνα με τους παρακάτω κανόνες: Αρχικά θα προσπαθήσει να ταιριάξει την πρώτη ετικέτα που έχει χρησιμοποιηθεί στο αρχείο `ppp.conf`. Αν αυτό αποτύχει, θα ψάξει για μια καταχώριση για την διεύθυνση IP της πύλης. Η καταχώριση αυτή είναι μια ετικέτα μορφής IP διεύθυνσης, με τέσσερις οκτάδες. Αν δεν έχει ακόμα βρεθεί η σωστή καταχώριση, θα γίνει ανίχνευση για την καταχώριση `MYADDR`.

Γραμμή 2:

  Η γραμμή αυτή λέει στο `ppp` να προσθέσει μια προεπιλεγμένη διαδρομή η οποία να δείχνει στο `HISADDR`. Το `HISADDR` θα αντικατασταθεί με τη διεύθυνση IP της πύλης όπως αυτή αποδόθηκε μέσω του πρωτοκόλλου IPCP.

Δείτε την καταχώριση `pmdemand` στα αρχεία `/usr/share/examples/ppp/ppp.conf.sample` και `/usr/share/examples/ppp/ppp.linkup.sample` για ένα πιο λεπτομερές παράδειγμα.

##### 28.2.1.2.3. Λήψη Εισερχόμενων Κλήσεων

Όταν ρυθμίζετε το ppp να λαμβάνει εισερχόμενες κλήσεις σε ένα μηχάνημα που συνδέεται σε ένα τοπικό δίκτυο (LAN), θα πρέπει να αποφασίσετε αν θέλετε να προωθούνται πακέτα προς αυτό. Αν ναι, θα πρέπει να αποδώσετε στο μηχάνημα μια διεύθυνση IP η οποία να ανήκει στο ίδιο υποδίκτυο με το LAN, και να χρησιμοποιήσετε την εντολή `enable proxy` στο αρχείο `/etc/ppp/ppp.conf`. Θα πρέπει επίσης να επιβεβαιώσετε ότι το αρχείο `/etc/rc.conf` περιέχει τα παρακάτω:

gateway_enable="YES"

##### 28.2.1.2.4. Ποιο getty;

Η ενότητα Υπηρεσία Εισόδου μέσω Επιλογικής Σύνδεσης (dial in) παρέχει μια καλή περιγραφή σχετικά με την ενεργοποίηση υπηρεσιών επιλογικών κλήσεων χρησιμοποιώντας την getty(8).

Μια εναλλακτική στην `getty` είναι η mgetty (από το πακέτο `comms/mgetty+sendfax`), μια πιο έξυπνη έκδοση της `getty`, η οποία έχει σχεδιαστεί για να λαμβάνει υπόψιν τις επιλογικές γραμμές.

Τα πλεονεκτήματα της `mgetty` είναι ότι επικοινωνεί ενεργά με τα modem, το οποίο σημαίνει ότι αν η θύρα είναι απενεργοποιημένη στο `/etc/ttys`, το modem σας δεν θα απαντήσει στην κλήση.

Μεταγενέστερες εκδόσεις της `mgetty` (από την 0.99beta και μετά) υποστηρίζουν επίσης αυτόματη ανίχνευση PPP streams, επιτρέποντας στους πελάτες σας πρόσβαση στον εξυπηρετητή χωρίς χρήση scripts.

Διαβάστε την ενότητα Mgetty και AutoPPP για περισσότερες πληροφορίες σχετικά με την `mgetty`.

##### 28.2.1.2.5. Άδειες για το PPP

Φυσιολογικά, η εκτέλεση της εντολής `ppp` πρέπει να γίνεται ως χρήστης `root`. Αν ωστόσο θέλετε να επιτρέψετε την εκτέλεση του `ppp` σε κατάσταση εξυπηρετητή ως κανονικός χρήστης (με τον τρόπο που περιγράφεται παρακάτω) θα πρέπει να δώσετε σε αυτό το χρήστη τα κατάλληλα δικαιώματα για να εκτελεί το `ppp`, προσθέτοντας τον στην ομάδα `network` στο αρχείο `/etc/group`.

Θα πρέπει επίσης να τους δώσετε πρόσβαση σε ένα ή περισσότερα τμήματα του αρχείου ρυθμίσεων, χρησιμοποιώντας την εντολή `allow`:

allow users fred mary

Αν χρησιμοποιήσετε την επιλογή αυτή στο τμήμα `default`, θα δώσετε σε αυτούς τους χρήστες πρόσβαση σε όλες τις ρυθμίσεις.

##### 28.2.1.2.6. Κελύφη PPP για Χρήστες με Δυναμικά IP

Δημιουργήστε ένα αρχείο με το όνομα `/etc/ppp/ppp-shell` το οποίο να περιέχει τα παρακάτω:

#!/bin/sh IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'` CALLEDAS="$IDENT" TTY=`tty` if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY` fi echo "PPP for $CALLEDAS on $TTY" echo "Starting PPP for $IDENT" exec /usr/sbin/ppp -direct $IDENT

Το script αυτό θα πρέπει να γίνει εκτελέσιμο. Δημιουργήστε τώρα ένα συμβολικό δεσμό που να ονομάζεται `ppp-dialup` χρησιμοποιώντας τις παρακάτω εντολές:

`#` `ln -s ppp-shell /etc/ppp/ppp-dialup`

Θα πρέπει να χρησιμοποιήσετε αυτό το script ως το κέλυφος για όλους τους dialup χρήστες. Εδώ φαίνεται ένα παράδειγμα του `/etc/passwd` για ένα χρήστη dialup με όνομα `pchilds` (θυμηθείτε ότι δεν πρέπει να τροποποιείτε άμεσα το αρχείο των κωδικών, αλλά μέσω της εντολής vipw(8)).

pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup

Δημιουργήστε ένα κατάλογο `/home/ppp` προσβάσιμο για ανάγνωση από όλους, ο οποίος θα περιέχει τα παρακάτω κενά αρχεία:

-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts

τα οποία εμποδίζουν την εμφάνιση του μηνύματος από το αρχείο `/etc/motd`.

##### 28.2.1.2.7. Κελύφη PPP για Χρήστες με Στατικό IP

Δημιουργήστε το αρχείο `ppp-shell` όπως φαίνεται παραπάνω, και για κάθε λογαριασμό με στατικό IP, δημιουργήστε ένα συμβολικό δεσμό προς το `ppp-shell`.

Για παράδειγμα, αν έχετε τρεις πελάτες dialup, τους `fred`, `sam`, και `mary`, στους οποίους εκτελείτε δρομολόγηση /24 CIDR, θα πρέπει να γράψετε τα παρακάτω:

`#` `ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred` `#` `ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam` `#` `ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary`

Για κάθε λογαριασμό χρήστη dialup, θα πρέπει να ρυθμιστεί το κέλυφος στο συμβολικό δεσμό που δημιουργήθηκε παραπάνω (για παράδειγμα ο συμβολικός δεσμός για το κέλυφος του χρήστη `mary` θα πρέπει να είναι ο `/etc/ppp/ppp-mary`).

##### 28.2.1.2.8. Ρύθμιση του `ppp.conf` για Χρήστες με Δυναμικό IP

Το αρχείο `/etc/ppp/ppp.conf` θα πρέπει να περιέχει κάτι αντίστοιχο με το παρακάτω:

default: set debug phase lcp chat set timeout 0 ttyu0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyu1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy

### Σημείωση:

Η στοίχιση είναι σημαντική.

Για κάθε συνεδρία, φορτώνεται η ενότητα `default:`. Για κάθε γραμμή dialup που ενεργοποιείται στο `/etc/ttys`, θα πρέπει να δημιουργήσετε μια καταχώριση όμοια με αυτή που φαίνεται παραπάνω για το `ttyu0:`. Κάθε γραμμή θα πρέπει να παίρνει μια μοναδική διεύθυνση IP από το απόθεμα των IP διευθύνσεων που προορίζονται για τους δυναμικούς χρήστες.

##### 28.2.1.2.9. Ρύθμιση του `ppp.conf` για Χρήστες με Στατικό IP

Εκτός από τα περιεχόμενα του υποδείγματος `/usr/share/examples/ppp/ppp.conf` θα πρέπει να προσθέσετε μια ενότητα για καθένα από τους χρήστες dialup στους οποίους έχει αποδοθεί στατικό IP. Θα συνεχίσουμε με το παράδειγμα μας με τους χρήστες `fred`, `sam`, και `mary`.

fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255

Το αρχείο `/etc/ppp/ppp.linkup` θα πρέπει επίσης να περιέχει πληροφορίες δρομολόγησης για κάθε χρήστη με στατικό IP (αν απαιτείται). Η παρακάτω γραμμή θα προσθέσει μια διαδρομή προς τη διεύθυνση δικτύου `203.14.101.0/24` μέσω της σύνδεσης ppp του πελάτη.

fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR

##### 28.2.1.2.10. `mgetty` και AutoPPP

Το port `comms/mgetty+sendfax`, έρχεται με προεπιλεγμένη την επιλογή `AUTO_PPP`, επιτρέποντας έτσι στην `mgetty` να ανιχνεύει την φάση LCP των συνδέσεων PPP και να εκτελεί αυτόματα ένα κέλυφος ppp. Ωστόσο, καθώς με αυτό τον τρόπο δεν ενεργοποιείται η προεπιλεγμένη ακολουθία ονόματος χρήστη και κωδικού, είναι απαραίτητο να γίνει πιστοποίηση των χρηστών με τη χρήση PAP ή CHAP.

Η ενότητα αυτή προϋποθέτει ότι ο χρήστης έχει ρυθμίσει, μεταγλωττίσει και εγκαταστήσει με επιτυχία το port `comms/mgetty+sendfax` στο σύστημα του.

Βεβαιωθείτε ότι το αρχείο σας `/usr/local/etc/mgetty+sendfax/login.config` περιέχει τα παρακάτω:

/AutoPPP/ - - /etc/ppp/ppp-pap-dialup

Αυτό θα πει στην `mgetty` να εκτελέσει το script `ppp-pap-dialup` για τις PPP συνδέσεις που ανιχνεύθηκαν.

Δημιουργήστε ένα αρχείο με το όνομα `/etc/ppp/ppp-pap-dialup` το οποίο θα περιέχει τα ακόλουθα (το αρχείο θα πρέπει να είναι εκτελέσιμο):

#!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT

Για κάθε γραμμή dialup που είναι ενεργοποιημένη στο `/etc/ttys`, δημιουργήστε μια αντίστοιχη καταχώριση στο αρχείο `/etc/ppp/ppp.conf`. Η καταχώριση αυτή μπορεί να συνυπάρχει χωρίς πρόβλημα με αυτές που ορίσαμε παραπάνω.

pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy

Κάθε χρήστης που εισέρχεται με αυτό τον τρόπο, θα πρέπει να διαθέτει όνομα χρήστη/κωδικό στο αρχείο `/etc/ppp/ppp.secret`. Εναλλακτικά, μπορείτε να προσθέσετε την παρακάτω επιλογή ώστε να γίνεται πιστοποίηση των χρηστών μέσω PAP με βάση τα στοιχεία του αρχείου `/etc/passwd`.

enable passwdauth

Αν θέλετε να αποδώσετε στατικό IP σε κάποιους χρήστες, μπορείτε να καθορίσετε την διεύθυνση ως τρίτο όρισμα στο αρχείο `/etc/ppp/ppp.secret`. Για παραδείγματα, δείτε το αρχείο `/usr/share/examples/ppp/ppp.secret.sample`.

##### 28.2.1.2.11. Επεκτάσεις MS

Είναι δυνατόν να ρυθμίσετε το PPP ώστε να παρέχει διευθύνσεις DNS και NetBIOS κατά απαίτηση.

Για να ενεργοποιήσετε αυτές τις επεκτάσεις με την έκδοση 1.x του PPP, θα πρέπει να προσθέσετε τις παρακάτω γραμμές στο σχετικό τμήμα του `/etc/ppp/ppp.conf`.

enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5

Για το PPP από την έκδοση 2 και πάνω:

accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5

Το παραπάνω θα ενημερώσει τους πελάτες για τον κύριο και δευτερεύοντα εξυπηρετητή DNS, και για τον εξυπηρετητή ονομάτων NetBIOS.

Από την έκδοση 2 και πάνω, αν παραλειφθεί η γραμμή `set dns`, το PPP θα χρησιμοποιήσει τις γραμμές που θα βρει στο `/etc/resolv.conf`.

##### 28.2.1.2.12. Πιστοποίηση PAP και CHAP

Κάποιοι ISP ρυθμίζουν τα συστήματα τους με τέτοιο τρόπο, ώστε το κομμάτι της σύνδεσης που ασχολείται με την πιστοποίηση του χρήστη να γίνεται μέσω των μηχανισμών PAP ή CHAP. Αν συμβαίνει αυτό στη δική σας περίπτωση, ο ISP σας δεν θα σας στείλει προτροπή login όταν συνδεθείτε, αλλά θα αρχίσει απευθείας τη μετάδοση PPP.

Το PAP είναι λιγότερο ασφαλές από το CHAP, αλλά η ασφάλεια εδώ δεν είναι τόσο σπουδαίο θέμα, καθώς οι κωδικοί (αν και στέλνονται ως κανονικό κείμενο) μεταδίδονται μόνο μέσω σειριακής γραμμής. Έτσι δεν υπάρχει πραγματική δυνατότητα των crackers να &#x201C;κρυφακούσουν&#x201D;.

Χρησιμοποιώντας ως αναφορά τις ενότητες PPP και Στατικές Διευθύνσεις IP ή PPP και Δυναμικές Διευθύνσεις IP, θα πρέπει να γίνουν οι παρακάτω αλλαγές:

13 set authname `MyUserName` 14 set authkey `MyPassword` 15 set login

Γραμμή 13:

  Η γραμμή αυτή καθορίζει το όνομα χρήστη για τα PAP/CHAP. Θα χρειαστεί να εισάγετε την σωστή τιμή για το `MyUserName`.

Γραμμή 14:

  Η γραμμή αυτή καθορίζει τον κωδικό για τα PAP/CHAP. Θα χρειαστεί να εισάγετε την σωστή τιμή για το `MyPassword`. Ίσως θέλετε να προσθέσετε μια ακόμα γραμμή, όπως την παρακάτω:

  16 accept PAP

  ή

  16 accept CHAP

  για να είναι φανερή η πρόθεση σας, ωστόσο τόσο το PAP όσο και το CHAP γίνονται δεκτά από προεπιλογή.

Γραμμή 15:

  Ο ISP σας δεν θα απαιτεί φυσιολογικά να εισέλθετε στον εξυπηρετητή αν χρησιμοποιείτε PAP ή CHAP. Για το λόγο αυτό, θα πρέπει να απενεργοποιήσετε το αλφαριθμητικό &#x201C;set login&#x201D;.

##### 28.2.1.2.13. Αλλάζοντας Άμεσα τις Ρυθμίσεις του `ppp`

Είναι δυνατόν να επικοινωνήσετε με το πρόγραμμα `ppp` καθώς εκτελείται στον παρασκήνιο, αλλά μόνο αν έχετε ρυθμίσει μια κατάλληλη διαγνωστική θύρα για αυτό το σκοπό. Για να το κάνετε αυτό, προσθέστε την παρακάτω γραμμή στις ρυθμίσεις σας:

set server /var/run/ppp-tun`%d` DiagnosticPassword 0177

Αυτό οδηγεί το PPP να &#x201C;ακούει&#x201D; στο καθορισμένο UNIX® socket του τομέα, και να ρωτάει τους πελάτες για τον κωδικό που έχει καθοριστεί πριν επιτρέψει την πρόσβαση. Το `%d` στο όνομα, αντικαθίσταται με τον αριθμό της συσκευής `tun` που χρησιμοποιείται.

Από τη στιγμή που ρυθμιστεί το socket, το πρόγραμμα pppctl(8) μπορεί να χρησιμοποιηθεί σε scripts με τα οποία επιθυμείτε να διαχειριστείτε το πρόγραμμα `ppp` το οποίο εκτελείται ήδη.

#### 28.2.1.3. Χρησιμοποιώντας τη Δυνατότητα Μετάφρασης Διευθύνσεων (NAT) του PPP

Το PPP έχει την ικανότητα να χρησιμοποιήσει δικό του εσωτερικό NAT, χωρίς να απαιτούνται οι ικανότητες ανακατεύθυνσης του πυρήνα. Μπορείτε να ενεργοποιήσετε αυτή τη λειτουργία με την ακόλουθη γραμμή στο `/etc/ppp/ppp.conf`:

nat enable yes

Εναλλακτικά, το NAT του PPP μπορεί να ενεργοποιηθεί με την επιλογή `-nat` στην γραμμή εντολών. Μπορείτε ακόμα να βάλετε την επιλογή `ppp_nat` στο αρχείο `/etc/rc.conf`. Η επιλογή αυτή είναι ενεργοποιημένη από προεπιλογή.

Αν χρησιμοποιήσετε αυτό το χαρακτηριστικό, μάλλον θα βρείτε χρήσιμες και τις παρακάτω επιλογές για το `/etc/ppp/ppp.conf`, με τις οποίες ενεργοποιείται η προώθηση εισερχόμενων συνδέσεων:

nat port tcp 10.0.0.2:ftp ftp nat port tcp 10.0.0.2:http http

ή αν δεν εμπιστεύεστε καθόλου το εξωτερικό δίκτυο:

nat deny_incoming yes

#### 28.2.1.4. Τελικές Ρυθμίσεις Συστήματος

Έχετε πλέον ρυθμίσει το `ppp`, αλλά υπάρχουν μερικά ακόμα πράγματα που πρέπει να κάνετε πριν να είναι έτοιμο για λειτουργία. Όλα περιλαμβάνουν την επεξεργασία του αρχείου `/etc/rc.conf`.

Ξεκινώντας από την αρχή του αρχείου αυτού, βεβαιωθείτε ότι είναι ορισμένη η γραμμή `hostname=`, π.χ.:

hostname="foo.example.com"

Αν ο ISP σας παρέχει στατική IP διεύθυνση και όνομα, είναι μάλλον καλύτερο να χρησιμοποιήσετε αυτό το όνομα ως όνομα για το μηχάνημα σας.

Ψάξτε για τη μεταβλητή `network_interfaces`. Αν θέλετε να ρυθμίσετε το σύστημα σας να καλεί τον ISP σας κατά απαίτηση, βεβαιωθείτε ότι υπάρχει στη λίστα η συσκευή `tun0`, διαφορετικά αφαιρέστε την.

network_interfaces="lo0 tun0" ifconfig_tun0=

### Σημείωση:

Η μεταβλητή `ifconfig_tun0` θα πρέπει να είναι άδεια, και θα πρέπει να δημιουργηθεί ένα αρχείο με όνομα `/etc/start_if.tun0`. Το αρχείο αυτό θα πρέπει να περιέχει την παρακάτω γραμμή:

ppp -auto mysystem

Το script αυτό εκτελείται κατά τη διάρκεια ρύθμισης του δικτύου, ξεκινώντας έτσι το δαίμονα ppp σε κατάσταση αυτόματης λειτουργίας. Αν διαθέτετε κάποιο τοπικό δίκτυο (LAN) για το οποίο το μηχάνημα αυτό έχει το ρόλο της πύλης, ίσως να θέλετε επίσης να χρησιμοποιήσετε την επιλογή `-alias`. Δείτε τη σελίδα manual για περισσότερες λεπτομέρειες.

Βεβαιωθείτε ότι η μεταβλητή για το πρόγραμμα router έχει τεθεί στο `NO` μέσω της επόμενης γραμμής στο `/etc/rc.conf`:

router_enable="NO"

Είναι σημαντικό να μην ξεκινήσει ο δαίμονας `routed`, ο οποίος συνήθως διαγράφει τις προεπιλεγμένες τιμές του πίνακα δρομολόγησης που δημιουργούνται από το `ppp`.

Είναι μάλλον καλή ιδέα να εξασφαλίσετε ότι η γραμμή `sendmail_flags` δεν περιλαμβάνει την επιλογή `-q`, διαφορετικά το `sendmail` θα προσπαθεί κάθε τόσο να κάνει αναζήτηση του δικτύου, με πιθανό αποτέλεσμα το μηχάνημα σας να εκτελεί τηλεφωνική σύνδεση (dial out). Μπορείτε να δοκιμάσετε:

sendmail_flags="-bd"

Το μειονέκτημα του παραπάνω, είναι ότι πρέπει να εξαναγκάσετε το `sendmail` να επανεξετάσει την ουρά των μηνυμάτων, κάθε φορά που αποκαθίσταται η σύνδεση ppp, γράφοντας:

`#` `/usr/sbin/sendmail -q`

Ίσως θέλετε να χρησιμοποιήσετε την εντολή `!bg` στο `ppp.linkup` για να γίνεται το παραπάνω αυτόματα:

1 provider: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m

Αν αυτό δεν σας αρέσει, είναι δυνατόν να ρυθμίσετε ένα &#x201C;dfilter&#x201D; το οποίο να αποκόπτει την κίνηση SMTP. Δείτε τα υποδείγματα για περισσότερες λεπτομέρειες.

Το μόνο που μένει είναι να επανεκκινήσετε το μηχάνημα. Μετά την επανεκκίνηση, μπορείτε είτε να γράψετε:

`#` `ppp`

και έπειτα `dial provider` για να ξεκινήσετε τη συνεδρία PPP, ή αν θέλετε το `ppp` να αποκαθιστά τις συνεδρίες αυτόματα κάθε φορά που υπάρχει κίνηση προς το εξωτερικό δίκτυο (και δεν έχετε δημιουργήσει το script `start_if.tun0`) μπορείτε να γράψετε:

`#` `ppp -auto provider`

#### 28.2.1.5. Περίληψη

Για να ανακεφαλαιώσουμε, τα παρακάτω βήματα είναι απαραίτητα όταν εγκαθιστάτε το ppp για πρώτη φορά:

Από τη μεριά του μηχανήματος-πελάτη:

1. Βεβαιωθείτε ότι περιλαμβάνεται στον πυρήνα σας η συσκευή `tun`.

2. Βεβαιωθείτε ότι υπάρχει το αρχείο της συσκευής `tun`N`` στον κατάλογο `/dev`.

3. Δημιουργήστε μια καταχώριση στο αρχείο `/etc/ppp/ppp.conf`. Το παράδειγμα για το `pmdemand` θα πρέπει να είναι επαρκές για τους περισσότερους ISPs.

4. Αν έχετε δυναμική διεύθυνση IP, δημιουργήστε μια καταχώριση στο `/etc/ppp/ppp.linkup`.

5. Ενημερώστε το αρχείο `/etc/rc.conf`.

6. Δημιουργήστε το script `start_if.tun0` αν χρειάζεστε κλήση κατά απαίτηση.

Από τη μεριά του εξυπηρετητή:

1. Βεβαιωθείτε ότι περιλαμβάνεται στον πυρήνα σας η συσκευή `tun`.

2. Βεβαιωθείτε ότι υπάρχει το αρχείο της συσκευής `tun`N`` στον κατάλογο `/dev`.

3. Δημιουργήστε μια καταχώριση στο `/etc/passwd` (χρησιμοποιώντας το πρόγραμμα vipw(8)).

4. Δημιουργήστε ένα αρχείο profile στον προσωπικό κατάλογο του χρήστη, το οποίο να εκτελεί την εντολή `ppp -direct direct-server` ή κάποια αντίστοιχη.

5. Δημιουργήστε μια καταχώριση στο `/etc/ppp/ppp.conf`. Το παράδειγμα για το `direct-server` θα πρέπει να είναι επαρκές.

6. Δημιουργήστε μια καταχώριση στο `/etc/ppp/ppp.linkup`.

7. Ενημερώστε το αρχείο `/etc/rc.conf`.

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

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

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