---
title: Κεφάλαιο 27. PPP και SLIP
part: Μέρος IV. Δικτυακές Επικοινωνίες
prev: books/handbook/serialcomms
next: books/handbook/mail
showBookMenu: true
weight: 32
params:
  path: "/books/handbook/ppp-and-slip/"
---

[[ppp-and-slip]]
= PPP
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 27
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/network-servers/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[ppp-and-slip-synopsis]]
== Σύνοψη

Το FreeBSD διαθέτει πλήθος τρόπων για τη σύνδεση ενός υπολογιστή με ένα άλλο. Για να επιτύχετε σύνδεση μέσω modem στο Internet ή σε ένα άλλο δίκτυο, ή για να επιτρέψετε σε άλλους να συνδεθούν μέσω του συστήματος σας, απαιτείται η χρήση PPP ή SLIP. Το κεφάλαιο αυτό περιγράφει λεπτομερώς τον τρόπο ρύθμισης των παραπάνω υπηρεσιών για χρήση μέσω modem.

Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:

* Πως να ρυθμίσετε το PPP χρήστη (User PPP).
* Πως να ρυθμίσετε το PPP πυρήνα (Kernel PPP, μόνο για FreeBSD 7.X).
* Πως να ρυθμίσετε το PPPoE (PPP μέσω Ethernet).
* Πως να ρυθμίσετε το PPPoA (PPP μέσω ATM).
* Πως να ρυθμίσετε ένα πελάτη και εξυπηρετητή SLIP (μόνο για FreeBSD 7.X).

Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει:

* Να είστε εξοικειωμένος με τη βασική ορολογία των δικτύων.
* Να κατανοείτε τις βασικές έννοιες και το σκοπό των επιλογικών συνδέσεων και του PPP και/ή SLIP.

Μπορεί να αναρωτιέστε ποια είναι η βασική διαφορά μεταξύ του PPP χρήστη και του PPP πυρήνα. Η απάντηση είναι απλή: το PPP χρήστη επεξεργάζεται τα δεδομένα εισόδου και εξόδου μέσω προγραμμάτων χρήστη (userland) αντί διαμέσου του πυρήνα του λειτουργικού. Αυτό προκαλεί κάποιες επιβαρύνσεις λόγω της αντιγραφής δεδομένων μεταξύ του πυρήνα και της εφαρμογής χρήστη, αλλά επιτρέπει κατά πολύ πιο πλούσια (από άποψη δυνατοτήτων) υλοποίηση του PPP πρωτοκόλλου. Το PPP χρήστη χρησιμοποιεί τη συσκευή [.filename]#tun# για την επικοινωνία με τον έξω κόσμο, ενώ το PPP πυρήνα χρησιμοποιεί την συσκευή [.filename]#ppp#.

[NOTE]
====
Σε όλο το κεφάλαιο, το PPP χρήστη θα αναφέρεται απλά ως ppp εκτός και αν χρειάζεται να γίνει διάκριση σε σχέση με άλλο λογισμικό PPP όπως το pppd (μόνο για το FreeBSD 7.X). Εκτός αν αναφέρεται διαφορετικά, όλες οι εντολές που εξηγούνται στο κεφάλαιο αυτό θα πρέπει να εκτελούνται ως `root`.
====

[[userppp]]
== Χρησιμοποιώντας το PPP Χρήστη

[WARNING]
====

Από το FreeBSD 8.0 και μετά, τα ονόματα συσκευών για τις σειριακές θύρες μετονομάστηκαν από [.filename]#/dev/cuadN# σε [.filename]#/dev/cuauN# και από [.filename]#/dev/ttydN# σε [.filename]#/dev/ttyuN#. Οι χρήστες του FreeBSD 7.X θα χρειαστεί να προσαρμόσουν τις παρακάτω οδηγίες σύμφωνα με αυτές τις αλλαγές.
====

=== PPP Χρήστη

==== Προϋποθέσεις

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

* Λογαριασμό σε κάποιο Παροχέα Υπηρεσιών Internet (ISP) στον οποίο συνδέεστε χρησιμοποιώντας PPP.
* Ένα modem ή άλλη συσκευή συνδεμένη στο σύστημα σας, και ρυθμισμένη σωστά ώστε να σας επιτρέπει να συνδεθείτε στον ISP σας.
* Τους αριθμούς κλήσης για τον ISP σας.
* Το όνομα χρήστη (login) και τον κωδικό σας (password). Είτε κανονικό όνομα και κωδικό (τύπου UNIX(R)) ή ένα ζεύγος ονόματος / κωδικού τύπου PAP ή CHAP.
* Τις IP διευθύνσεις ενός ή περισσότερων διακομιστών ονομάτων (DNS). Φυσιολογικά, ο ISP σας θα σας δώσει δύο τέτοιες διευθύνσεις. Αν δεν έχετε τουλάχιστον μία, μπορείτε να ενεργοποιήσετε την εντολή `enable dns` στο [.filename]#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 σας.

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

==== Αυτόματη Ρύθμιση PPP

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

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

[[userppp-staticIP]]
===== PPP και Στατικές Διευθύνσεις IP

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

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

[.programlisting]
....
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) των παραμέτρων. Όταν οι ρυθμίσεις που έχουν γίνει λειτουργούν ικανοποιητικά, η γραμμή αυτή θα πρέπει να μικρύνει στην παρακάτω:
+
[.programlisting]
....
set log phase tun
....
+
για να αποφευχθούν μεγάλα μεγέθη στα αρχεία καταγραφής.

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

Γραμμή 4:::
Αναγνωρίζει τη συσκευή στην οποία είναι συνδεμένο το modem. Η συσκευή [.filename]#COM1# είναι η [.filename]#/dev/cuau0# και η [.filename]#COM2# είναι η [.filename]#/dev/cuau1#.

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

Γραμμές 6 & 7:::
Το αλφαριθμητικό που θα χρησιμοποιηθεί για την κλήση. Το PPP χρήστη χρησιμοποιεί σύνταξη expect-send παρόμοια με αυτή που χρησιμοποιεί το πρόγραμμα man:chat[8]. Δείτε τη σελίδα manual για πληροφορίες σχετικά με τις δυνατότητες αυτής της γλώσσας.
+
Σημειώστε ότι αυτή η εντολή συνεχίζει στην επόμενη γραμμή για λόγους αναγνωσιμότητας. Αυτό μπορεί να γίνει σε κάθε εντολή του [.filename]#ppp.conf#, εφόσον το `\` είναι ο τελευταίος χαρακτήρας της γραμμής.

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

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

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

Γραμμή 11:::
Αναγνωρίζει την καταχώριση ενός παροχέα με το όνομα "provider". Μπορείτε εδώ να χρησιμοποιήσετε το όνομα του ISP σας, ώστε αργότερα να ξεκινάτε τη σύνδεση σας με την επιλογή `load _ISP_`.

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

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

Γραμμή 15:::
Αν χρησιμοποιείτε PPP ή CHAP, δεν θα υπάρχει στο σημείο αυτό προτροπή εισόδου (login), και θα πρέπει να μετατρέψετε τη γραμμή αυτή σε σχόλιο ή να την αφαιρέσετε. Δείτε την <<userppp-PAPnCHAP,Πιστοποίηση PAP και CHAP>> για περισσότερες λεπτομέρειες.
+
Το αλφαριθμητικό εισόδου χρησιμοποιεί σύνταξη παρόμοια με το man:chat[8], όπως συμβαίνει και με το αλφαριθμητικό κλήσης. Στο παράδειγμα μας, το αλφαριθμητικό χρησιμοποιείται για μια υπηρεσία στην οποία η συνεδρία εισόδου μοιάζει με την παρακάτω:
+
[source,shell]
....
J. Random Provider
login: foo
password: bar
protocol: ppp
....
+
Θα χρειαστεί να αλλάξετε αυτό το script ανάλογα με τις ανάγκες σας. Όταν γράφετε αυτό το script την πρώτη φορά, βεβαιωθείτε ότι έχετε ενεργοποιήσει το αρχείο καταγραφής για το "chat" ώστε να μπορείτε να προσδιορίσετε αν η διαδικασία αναγνώρισης προχωράει σωστά.

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

Γραμμή 17:::
Θέτει τη διεύθυνση της διεπαφής. Το αλφαριθμητικό _x.x.x.x_ θα πρέπει να αντικατασταθεί με τη διεύθυνση IP που σας έχει αποδοθεί από τον παροχέα σας. Το αλφαριθμητικό _y.y.y.y_ θα πρέπει να αντικατασταθεί με την διεύθυνση IP που έχει καθορίσει ο ISP σας ως πύλη (gateway, το μηχάνημα στο οποίο συνδέεστε). Αν ο ISP σας δεν σας έχει δώσει διεύθυνση πύλης, χρησιμοποιήστε την `10.0.0.2/0`. Αν πρέπει να χρησιμοποιήσετε μια IP διεύθυνση που έχετε "μαντέψει", βεβαιωθείτε ότι έχετε δημιουργήσει μια καταχώριση στο [.filename]#/etc/ppp/ppp.linkup# σύμφωνα με τις οδηγίες για το <<userppp-dynamicIP,PPP και Δυναμικές IP Διευθύνσεις>>. Αν παραλείψετε αυτή τη γραμμή, το `ppp` δεν θα μπορεί να εκτελεστεί σε κατάσταση `-auto`.

Γραμμή 18:::
Προσθέστε μια προεπιλεγμένη διαδρομή (default route) προς το μηχάνημα πύλης (gateway) του ISP σας. Η ειδική λέξη `HISADDR` αντικαθίσταται με την διεύθυνση πύλης που καθορίζεται στη γραμμή 17. Είναι σημαντικό η γραμμή αυτή να εμφανίζεται μετά την γραμμή 17, διαφορετικά το `HISADDR` δεν θα έχει ακόμα λάβει αρχική τιμή.
+
Αν δεν επιθυμείτε να εκτελέσετε το ppp σε κατάσταση `-auto`, θα πρέπει να μετακινήσετε αυτή τη γραμμή στο αρχείο [.filename]#ppp.linkup#.

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

Μπορείτε να βρείτε παραδείγματα αρχείων ρυθμίσεων στον κατάλογο [.filename]#usr/shared/examples/ppp/#.

[[userppp-dynamicIP]]
===== PPP και Δυναμικές Διευθύνσεις IP

Αν ο παροχέας σας δεν δίνει στατικές διευθύνσεις, το `ppp` μπορεί να ρυθμιστεί να διαπραγματεύεται την τοπική και την απομακρυσμένη διεύθυνση. Αυτό γίνεται "μαντεύοντας" μια διεύθυνση IP, και επιτρέποντας στο `ppp` να την θέσει έπειτα σωστά, χρησιμοποιώντας το πρωτόκολλο IPCP (IP Configuration Protocol) μετά τη σύνδεση. Το αρχείο ρυθμίσεων [.filename]#ppp.conf# είναι το ίδιο όπως και στο <<userppp-staticIP,PPP και Στατικές Διευθύνσεις IP>>, με την παρακάτω μόνο αλλαγή:

[.programlisting]
....
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`, θα χρειαστεί να δημιουργήσετε μια καταχώριση στο αρχείο [.filename]#/etc/ppp/ppp.linkup#. Το αρχείο [.filename]#ppp.linkup# χρησιμοποιείται μετά την αποκατάσταση της σύνδεσης. Στο σημείο αυτό, το `ppp` θα έχει ήδη αποδώσει διεύθυνση στην διεπαφή και θα είναι πλέον δυνατόν να προσθέσετε τις καταχωρίσεις στον πίνακα δρομολόγησης:

[.programlisting]
....
1     provider:
2      add default HISADDR
....

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

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

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

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

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

[.programlisting]
....
gateway_enable="YES"
....

===== Ποιο getty;

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

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

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

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

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

===== Άδειες για το PPP

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

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

[.programlisting]
....
allow users fred mary
....

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

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

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

[.programlisting]
....
#!/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 αυτό θα πρέπει να γίνει εκτελέσιμο. Δημιουργήστε τώρα ένα συμβολικό δεσμό που να ονομάζεται [.filename]#ppp-dialup# χρησιμοποιώντας τις παρακάτω εντολές:

[source,shell]
....
# ln -s ppp-shell /etc/ppp/ppp-dialup
....

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

[.programlisting]
....
pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup
....

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

[source,shell]
....
-r--r--r--   1 root     wheel           0 May 27 02:23 .hushlogin
-r--r--r--   1 root     wheel           0 May 27 02:22 .rhosts
....

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

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

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

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

[source,shell]
....
# 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` θα πρέπει να είναι ο [.filename]#/etc/ppp/ppp-mary#).

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

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

[.programlisting]
....
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
....

[NOTE]
====
Η στοίχιση είναι σημαντική.
====

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

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

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

[.programlisting]
....
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
....

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

[.programlisting]
....
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
....

[[userppp-mgetty]]
===== `mgetty` και AutoPPP

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

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

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

[.programlisting]
....
/AutoPPP/ -     -		      /etc/ppp/ppp-pap-dialup
....

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

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

[.programlisting]
....
#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENT
....

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

[.programlisting]
....
pap:
  enable pap
  set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
  enable proxy
....

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

[.programlisting]
....
enable passwdauth
....

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

===== Επεκτάσεις MS

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

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

[.programlisting]
....
enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5
....

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

[.programlisting]
....
accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5
....

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

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

[[userppp-PAPnCHAP]]
===== Πιστοποίηση PAP και CHAP

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

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

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

[.programlisting]
....
13      set authname MyUserName
14      set authkey MyPassword
15      set login
....

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

Γραμμή 14:::
Η γραμμή αυτή καθορίζει τον κωδικό για τα PAP/CHAP. Θα χρειαστεί να εισάγετε την σωστή τιμή για το _MyPassword_. Ίσως θέλετε να προσθέσετε μια ακόμα γραμμή, όπως την παρακάτω:
+
[.programlisting]
....
16      accept PAP
....
+
ή
+
[.programlisting]
....
16      accept CHAP
....
+
για να είναι φανερή η πρόθεση σας, ωστόσο τόσο το PAP όσο και το CHAP γίνονται δεκτά από προεπιλογή.

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

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

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

[.programlisting]
....
set server /var/run/ppp-tun%d DiagnosticPassword 0177
....

Αυτό οδηγεί το PPP να "ακούει" στο καθορισμένο UNIX(R) socket του τομέα, και να ρωτάει τους πελάτες για τον κωδικό που έχει καθοριστεί πριν επιτρέψει την πρόσβαση. Το `%d` στο όνομα, αντικαθίσταται με τον αριθμό της συσκευής [.filename]#tun# που χρησιμοποιείται.

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

[[userppp-nat]]
==== Χρησιμοποιώντας τη Δυνατότητα Μετάφρασης Διευθύνσεων (NAT) του PPP

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

[.programlisting]
....
nat enable yes
....

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

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

[.programlisting]
....
nat port tcp 10.0.0.2:ftp ftp
nat port tcp 10.0.0.2:http http
....

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

[.programlisting]
....
nat deny_incoming yes
....

[[userppp-final]]
==== Τελικές Ρυθμίσεις Συστήματος

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

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

[.programlisting]
....
hostname="foo.example.com"
....

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

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

[.programlisting]
....
network_interfaces="lo0 tun0"
ifconfig_tun0=
....

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

[.programlisting]
....
ppp -auto mysystem
....

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

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

[.programlisting]
....
router_enable="NO"
....

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

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

[.programlisting]
....
sendmail_flags="-bd"
....

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

[source,shell]
....
# /usr/sbin/sendmail -q
....

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

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

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

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

[source,shell]
....
# ppp
....

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

[source,shell]
....
# ppp -auto provider
....

==== Περίληψη

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

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

[.procedure]
. Βεβαιωθείτε ότι περιλαμβάνεται στον πυρήνα σας η συσκευή [.filename]#tun#.
. Βεβαιωθείτε ότι υπάρχει το αρχείο της συσκευής [.filename]#tunN# στον κατάλογο [.filename]#/dev#.
. Δημιουργήστε μια καταχώριση στο αρχείο [.filename]#/etc/ppp/ppp.conf#. Το παράδειγμα για το [.filename]#pmdemand# θα πρέπει να είναι επαρκές για τους περισσότερους ISPs.
. Αν έχετε δυναμική διεύθυνση IP, δημιουργήστε μια καταχώριση στο [.filename]#/etc/ppp/ppp.linkup#.
. Ενημερώστε το αρχείο [.filename]#/etc/rc.conf#.
. Δημιουργήστε το script [.filename]#start_if.tun0# αν χρειάζεστε κλήση κατά απαίτηση.

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

[.procedure]
. Βεβαιωθείτε ότι περιλαμβάνεται στον πυρήνα σας η συσκευή [.filename]#tun#.
. Βεβαιωθείτε ότι υπάρχει το αρχείο της συσκευής [.filename]#tunN# στον κατάλογο [.filename]#/dev#.
. Δημιουργήστε μια καταχώριση στο [.filename]#/etc/passwd# (χρησιμοποιώντας το πρόγραμμα man:vipw[8]).
. Δημιουργήστε ένα αρχείο profile στον προσωπικό κατάλογο του χρήστη, το οποίο να εκτελεί την εντολή `ppp -direct direct-server` ή κάποια αντίστοιχη.
. Δημιουργήστε μια καταχώριση στο [.filename]#/etc/ppp/ppp.conf#. Το παράδειγμα για το [.filename]#direct-server# θα πρέπει να είναι επαρκές.
. Δημιουργήστε μια καταχώριση στο [.filename]#/etc/ppp/ppp.linkup#.
. Ενημερώστε το αρχείο [.filename]#/etc/rc.conf#.

[[ppp]]
== Χρησιμοποιώντας το PPP του Πυρήνα

[WARNING]
====

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

=== Ρυθμίζοντας το PPP του Πυρήνα

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

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

. Ως πελάτης ("client") - όταν θέλετε να συνδέσετε το μηχάνημα σας με τον έξω κόσμο μέσω σειριακής σύνδεσης σύνδεσης ή γραμμής modem.
. Ως εξυπηρετητής ("server") - το μηχάνημα σας είναι συνδεμένο στο δίκτυο και χρησιμοποιείται για να συνδέσει άλλους υπολογιστές, χρησιμοποιώντας το PPP.

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

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

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

Μπορείτε να χρησιμοποιήσετε το [.filename]#/etc/ppp/options# που φαίνεται παρακάτω, για να συνδεθείτε σε μια γραμμή PPP ενός εξυπηρετητή τερματικών (terminal server) της Cisco.

[.programlisting]
....
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
....

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

[.procedure]
. Καλέστε τον απομακρυσμένο εξυπηρετητή χρησιμοποιώντας το Kermit (ή κάποιο άλλο πρόγραμμα για modem) και εισάγετε το όνομα χρήστη και τον κωδικό σας (ή ότι άλλο χρειάζεται για να ενεργοποιήσετε το PPP στον απομακρυσμένο υπολογιστή).
. Βγείτε από το Kermit (χωρίς να κλείσετε τη γραμμή).
. Πληκτρολογήστε τα παρακάτω:
+

[source,shell]
....
# /usr/sbin/pppd /dev/tty01 19200
....

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

Ο υπολογιστής σας είναι τώρα συνδεμένος μέσω PPP. Αν η σύνδεση αποτύχει, μπορείτε να χρησιμοποιήσετε την επιλογή `debug` στο αρχείο [.filename]#/etc/ppp/options# και να ελέγξετε τα μηνύματα στην κονσόλα για να ανιχνεύσετε το πρόβλημα.

Το παρακάτω script [.filename]#/etc/ppp/pppup# αυτοματοποιεί και τα 3 στάδια:

[.programlisting]
....
#!/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
....

Το αρχείο [.filename]#/etc/ppp/kermit.dial# είναι ένα script για το Kermit το οποίο κάνει την κλήση και την πιστοποίηση του χρήστη στον απομακρυσμένο υπολογιστή (στο τέλος αυτού του εγγράφου, θα βρείτε ένα παράδειγμα για ένα τέτοιο script).

Χρησιμοποιήστε το παρακάτω script [.filename]#/etc/ppp/pppdown# για να αποσυνδέσετε την γραμμή PPP:

[.programlisting]
....
#!/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`, εκτελώντας το [.filename]#/usr/etc/ppp/ppptest#, το οποίο θα μοιάζει με το παρακάτω:

[.programlisting]
....
#!/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
....

Για να κλείσετε την γραμμή, εκτελέστε το [.filename]#/etc/ppp/kermit.hup#, το οποίο θα πρέπει να περιέχει:

[.programlisting]
....
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`.

[.filename]#/etc/ppp/options#:

[.programlisting]
....
/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
....

[.filename]#/etc/ppp/login.chat.script#:

[NOTE]
====
Το παρακάτω θα πρέπει να γραφεί σε μια μόνο γραμμή.
====

[.programlisting]
....
ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTphone.number
  CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id
  TIMEOUT 5 sword: password
....

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

[source,shell]
....
# pppd
....

=== Χρησιμοποιώντας το `pppd` ως Εξυπηρετητή

Το [.filename]#/etc/ppp/options# θα πρέπει να περιέχει κάτι αντίστοιχο με το παρακάτω:

[.programlisting]
....
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 [.filename]#/etc/ppp/pppserv# που φαίνεται παρακάτω, θα πει στο pppd να λειτουργήσει ως εξυπηρετητής:

[.programlisting]
....
#!/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 [.filename]#/etc/ppp/pppservdown# για να σταματήσετε τον εξυπηρετητή:

[.programlisting]
....
#!/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 ([.filename]#/etc/ppp/kermit.ans#) μπορεί να ενεργοποιεί και να απενεργοποιεί την λειτουργία αυτόματης απάντησης στο modem σας.

[.programlisting]
....
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 [.filename]#/etc/ppp/kermit.dial# για κλήση και πιστοποίηση του χρήστη. Θα πρέπει να το τροποποιήσετε σύμφωνα με τις ανάγκες σας. Βάλτε το όνομα χρήστη και τον κωδικό σας σε αυτό το script. Θα χρειαστεί επίσης να αλλάξετε την γραμμή για την είσοδο (input) ανάλογα με τις απαντήσεις που δίνει το modem σας και ο απομακρυσμένος υπολογιστής.

[.programlisting]
....
;
; 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:
....

[[ppp-troubleshoot]]
== Αντιμετώπιση Προβλημάτων σε Συνδέσεις PPP

[WARNING]
====

Από το FreeBSD 8.0 και μετά, το πρόγραμμα οδήγησης man:sio[4] αντικαταστάθηκε από το man:uart[4]. Τα ονόματα συσκευών των σειριακών θυρών έχουν αλλάξει από [.filename]#/dev/cuadN# σε [.filename]#/dev/cuauN# και από [.filename]#/dev/ttydN# σε [.filename]#/dev/ttyuN#. Οι χρήστες του FreeBSD 7.X θα πρέπει να προσαρμόσουν τις παρακάτω οδηγίες σύμφωνα με αυτές τις αλλαγές.
====

Η ενότητα αυτή καλύπτει μερικά από τα προβλήματα που μπορεί να παρουσιαστούν όταν γίνεται χρήση του PPP μέσω σύνδεσης modem. Για παράδειγμα, θα πρέπει να ξέρετε με ακρίβεια τα μηνύματα εισόδου που θα εμφανίσει το σύστημα το οποίο καλείτε. Μερικοί ISP δίνουν την προτροπή `ssword`, ενώ άλλοι δίνουν την `password`. Αν δεν έχετε γράψει σωστά το script για το `ppp`, η απόπειρα εισόδου θα αποτύχει. Ο πιο συνηθισμένος τρόπος να εκσφαλματώσετε μια σύνδεση `ppp`, είναι να συνδεθείτε χειροκίνητα. Οι πληροφορίες που εμφανίζονται παρακάτω, θα σας οδηγήσουν βήμα προς βήμα στη χειροκίνητη αποκατάσταση της σύνδεσης.

=== Ελέγξτε τα Αρχεία Συσκευών

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

[.programlisting]
....
device   uart
....

Αν χρησιμοποιείτε τον πυρήνα `GENERIC`, δεν χρειάζεται να κάνετε κάποια αλλαγή, καθώς η συσκεύη [.filename]#uart# περιλαμβάνεται ήδη σε αυτόν. Απλώς ελέγξτε τα μηνύματα της `dmesg` για την συσκευή modem, χρησιμοποιώντας την παρακάτω εντολή:

[source,shell]
....
# dmesg | grep uart
....

Θα πρέπει να δείτε κάποια έξοδο σχετική με τις συσκευές [.filename]#uart#. Πρόκειται για τις θύρες COM που χρειαζόμαστε. Αν το modem σας λειτουργεί ως τυποποιημένη σειριακή θύρα, θα πρέπει να το δείτε να αναφέρεται ως [.filename]#uart1#, ή [.filename]#COM2#. Αν συμβαίνει αυτό, δεν χρειάζεται να επαναμεταγλωττίσετε τον πυρήνα σας. Αν η σειριακή θύρα που αντιστοιχεί στο modem σας είναι η [.filename]#uart1# ή [.filename]#COM2# στο DOS, η αντίστοιχη συσκευή modem θα είναι η [.filename]#/dev/cuau1#.

=== Χειροκίνητη Σύνδεση

Η χειροκίνητη σύνδεση στο Internet με χρήση της `ppp`, είναι ένας γρήγορος και εύκολος τρόπος να εντοπίσετε τυχόν προβλήματα σύνδεσης, ή απλώς να πάρετε πληροφορίες σχετικά με το πως ο ISP σας αντιμετωπίζει τις συνδέσεις πελατών `ppp`. Θα ξεκινήσουμε την εφαρμογή PPP από την γραμμή εντολών. Σημειώστε ότι σε όλα μας τα παραδείγματα, θα χρησιμοποιούμε το _example_ ως το όνομα του υπολογιστή που εκτελεί το PPP. Μπορείτε να ξεκινήσετε το `ppp`, γράφοντας απλώς `ppp`:

[source,shell]
....
# ppp
....

Έχουμε τώρα ξεκινήσει το `ppp`.

[source,shell]
....
ppp ON example> set device /dev/cuau1
....

Θέτουμε τη συσκευή modem. Στο παράδειγμα μας, είναι η [.filename]#cuau1#.

[source,shell]
....
ppp ON example> set speed 115200
....

Θέτουμε την ταχύτητα σύνδεσης, σε αυτή την περίπτωση χρησιμοποιούμε 115,200 kbps.

[source,shell]
....
ppp ON example> enable dns
....

Λέμε στο `ppp` να ρυθμίσει τον resolver και προσθέτουμε τις κατάλληλες γραμμές για το διακομιστή ονομάτων στο [.filename]#/etc/resolv.conf#. Αν το `ppp` δεν μπορεί να καθορίσει το όνομα του διακομιστή, μπορούμε να το καθορίσουμε με χειροκίνητο τρόπο αργότερα.

[source,shell]
....
ppp ON example> term
....

Αλλάζουμε σε κατάσταση "terminal" ώστε να μπορούμε να ελέγξουμε το modem χειροκίνητα.

[.programlisting]
....
deflink: Entering terminal mode on /dev/cuau1
type '~h' for help
....

[source,shell]
....
at
OK
atdt123456789
....

Χρησιμοποιούμε το `at` για να αρχικοποιήσουμε το modem, και έπειτα χρησιμοποιούμε το `atdt` και τον αριθμό του ISP για να ξεκινήσουμε τη διαδικασία της κλήσης.

[source,shell]
....
CONNECT
....

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

[source,shell]
....
ISP Login:myusername
....

Η προτροπή αυτή είναι για να δώσουμε το όνομα χρήστη. Χρησιμοποιήστε το όνομα χρήστη που σας έχει δοθεί από τον ISP σας.

[source,shell]
....
ISP Pass:mypassword
....

Η προτροπή αυτή είναι για τον κωδικό πρόσβασης. Απαντήστε με τον κωδικό που σας έχει δοθεί από τον ISP σας. Ο κωδικός αυτός δεν θα εμφανιστεί στην οθόνη σας, όπως ακριβώς συμβαίνει και με τον κωδικό σας όταν τον γράφετε στην προτροπή εισόδου του FreeBSD συστήματος σας.

[source,shell]
....
Shell or PPP:ppp
....

Ανάλογα με τον ISP σας, μπορεί να μην δείτε και καθόλου την παραπάνω προτροπή. Στην παραπάνω περίπτωση μας ρωτάει αν επιθυμούμε να εκτελέσουμε κάποιο κέλυφος (shell) στο μηχάνημα του παροχέα, ή αν θέλουμε να εκκινήσουμε το `ppp`. Στο παράδειγμα μας επιλέξαμε να χρησιμοποιήσουμε `ppp` καθώς θέλουμε να συνδεθούμε στο Internet.

[source,shell]
....
Ppp ON example>
....

Παρατηρήστε ότι στο παράδειγμα το πρώτο `p` είναι κεφαλαίο. Αυτό δείχνει ότι έχουμε συνδεθεί επιτυχώς με τον ISP.

[source,shell]
....
PPp ON example>
....

Έχουμε πιστοποιηθεί με επιτυχία από τον ISP μας, και περιμένουμε να μας αποδοθεί διεύθυνση IP.

[source,shell]
....
PPP ON example>
....

Έχει πλέον καθοριστεί διεύθυνση IP, και έχουμε ολοκληρώσει τη σύνδεση με επιτυχία.

[source,shell]
....
PPP ON example>add default HISADDR
....

Εδώ προσθέτουμε την προεπιλεγμένη διαδρομή (default route). Το βήμα αυτό είναι απαραίτητο πριν μπορέσουμε να επικοινωνήσουμε με τον έξω κόσμο, καθώς τη δεδομένη στιγμή η μόνη σύνδεση που έχουμε είναι με ένα υπολογιστή από την άλλη μεριά της γραμμής. Αν το παραπάνω αποτύχει επειδή υπάρχουν ήδη καθορισμένες διαδρομές, μπορείτε να βάλετε ένα θαυμαστικό `!` μπροστά από το `add`. Εναλλακτικά, μπορείτε να κάνετε αυτή τη ρύθμιση πριν επιχειρήσετε τη σύνδεση, και θα γίνει αυτόματα διαπραγμάτευση της νέας διαδρομής.

Αν όλα πήγαν καλά, θα πρέπει τώρα να έχετε ενεργή σύνδεση με το Internet, την οποία μπορείτε να μετακινήσετε στο παρασκήνιο χρησιμοποιώντας το συνδυασμό πλήκτρων kbd:[CTRL+z]. Αν παρατηρήσετε το `PPP` να γίνεται ξανά `ppp`, η σύνδεση έχει διακοπεί. Με τον τρόπο αυτό μπορείτε να παρακολουθείτε την κατάσταση της σύνδεση σας. Τα κεφαλαία P δείχνουν ότι υπάρχει σύνδεση με τον ISP ενώ τα μικρά p δείχνουν ότι για κάποιο λόγο η σύνδεση έχει χαθεί. Το `ppp` έχει μόνο αυτές τις δύο καταστάσεις.

==== Αντιμετώπιση Προβλημάτων

Αν έχετε απευθείας γραμμή και δεν φαίνεται να μπορείτε να αποκαταστήσετε τη σύνδεση, απενεργοποιήστε τον έλεγχο ροής μέσω υλικού (CTS/RTS) χρησιμοποιώντας την επιλογή `set ctsrts off`. Το παραπάνω συμβαίνει συνήθως αν είστε συνδεμένος σε κάποιο εξυπηρετητή τερματικών με δυνατότητα PPP, όπου το PPP σταματάει να αποκρίνεται όταν προσπαθεί να γράψει δεδομένα στη σύνδεση σας. Στην περίπτωση αυτή, συνήθως περιμένει για κάποιο σήμα CTS (Clear To Send) το οποίο δεν έρχεται ποτέ. Αν ωστόσο χρησιμοποιήσετε αυτή την επιλογή, θα πρέπει επίσης να χρησιμοποιήσετε και την επιλογή `set accmap` η οποία ενδεχομένως απαιτείται για να απομονωθεί το υλικό που εξαρτάται από τη μετάδοση συγκεκριμένων χαρακτήρων από τη μια άκρη στην άλλη, συνήθως μέσω του XON/XOFF. Δείτε τη σελίδα manual του man:ppp[8] για περισσότερες πληροφορίες σχετικά με αυτή την επιλογή και πως μπορείτε να την χρησιμοποιήσετε.

Αν διαθέτετε ένα παλαιότερο modem, ίσως χρειαστεί να χρησιμοποιήσετε την επιλογή `set parity even`. Η προεπιλεγμένη ρύθμιση είναι να μην υπάρχει ισοτιμία (parity none), αλλά σε παλιά modems (και σε κάποιους ISP) χρησιμοποιείται για έλεγχο λαθών (η χρήση της προκαλεί ωστόσο μεγάλη αύξηση στη μετακίνηση δεδομένων). Ίσως χρειαστείτε αυτή την επιλογή, αν ο ISP σας είναι η Compuserve.

Το PPP ίσως να μην επανέλθει στην κατάσταση εντολών, το οποίο είναι συνήθως σφάλμα διαπραγμάτευσης, καθώς ο ISP περιμένει από τη δική σας μεριά να ξεκινήσει τη διαπραγμάτευση. Στο σημείο αυτό, η χρήση της εντολής `~p` θα εξαναγκάσει το ppp να αρχίσει να στέλνει τις πληροφορίες σχετικά με τη ρύθμιση.

Αν δεν πάρετε ποτέ προτροπή εισόδου, το πιθανότερο είναι να πρέπει να χρησιμοποιήσετε πιστοποίηση PAP ή CHAP αντί για την τύπου UNIX(R) πιστοποίηση που περιγράψαμε στο παραπάνω παράδειγμα. Για να χρησιμοποιήσετε PAP ή CHAP απλώς προσθέστε τις παρακάτω επιλογές στην εφαρμογή PPP πριν βρεθείτε σε κατάσταση τερματικού:

[source,shell]
....
ppp ON example> set authname myusername
....

Θα πρέπει να αντικαταστήσετε το _myusername_ με το όνομα χρήστη που σας έχει δοθεί από τον ISP σας.

[source,shell]
....
ppp ON example> set authkey mypassword
....

Θα πρέπει να αντικαταστήσετε το _mypassword_ με τον κωδικό χρήστη που σας έχει δοθεί από τον ISP σας.

Αν συνδέεστε κανονικά, αλλά δεν φαίνεται να μπορείτε να επικοινωνήσετε με καμιά διεύθυνση, προσπαθήστε να χρησιμοποιήσετε την εντολή man:ping[8] με μια διεύθυνση IP για να δείτε αν θα λάβετε απάντηση. Αν βλέπετε απώλεια πακέτων 100%, το πιο πιθανό είναι ότι δεν έχετε καθορίσει κάποια προεπιλεγμένη διαδρομή. Ελέγξτε ξανά ότι έχετε ρυθμίσει την επιλογή `add default HISADDR` κατά τη διάρκεια της σύνδεσης. Αν μπορείτε να επικοινωνήσετε με μια απομακρυσμένη διεύθυνση IP, το πιθανότερο είναι ότι δεν έχετε βάλει τη διεύθυνση κάποιου διακομιστή ονομάτων στο αρχείο [.filename]#/etc/resolv.conf#. Το αρχείο αυτό θα πρέπει να μοιάζει με το παρακάτω:

[.programlisting]
....
domain example.com
nameserver x.x.x.x
nameserver y.y.y.y
....

Όπου τα _x.x.x.x_ και _y.y.y.y_ θα πρέπει να αντικατασταθούν με τις διευθύνσεις IP των διακομιστών DNS του ISP σας. Ενδεχομένως οι πληροφορίες αυτές να σας έχουν δοθεί κατά την εγγραφή σας στην υπηρεσία. Αν όχι, θα μπορέσετε να τις βρείτε εύκολα με ένα τηλεφώνημα στον ISP σας.

Μπορείτε επίσης να ενεργοποιήσετε την καταγραφή συμβάντων για την PPP σύνδεση σας, μέσω του man:syslog[3]. Απλώς προσθέστε:

[.programlisting]
....
!ppp
*.*     /var/log/ppp.log
....

στο [.filename]#/etc/syslog.conf#. Τις περισσότερες φορές, αυτή η λειτουργία υπάρχει ήδη.

[[pppoe]]
== Χρησιμοποιώντας PPP μέσω Ethernet (PPPoE)

Η ενότητα αυτή περιγράφει πως να ρυθμίσετε μια σύνδεση PPP μέσω Ethernet (PPPoE).

=== Ρύθμιση του Πυρήνα

Δεν απαιτείται πλέον ειδική ρύθμιση του πυρήνα για τη λειτουργία PPPoE. Αν ο πυρήνας σας δεν περιλαμβάνει την απαραίτητη υποστήριξη netgraph, το ppp θα την φορτώσει αυτόματα ως άρθρωμα.

=== Ρύθμιση του [.filename]#ppp.conf#

Παρακάτω φαίνεται ένα υπόδειγμα αρχείου [.filename]#ppp.conf#:

[.programlisting]
....
default:
  set log Phase tun command # you can add more detailed logging if you wish
  set ifaddr 10.0.0.1/0 10.0.0.2/0

name_of_service_provider:
  set device PPPoE:xl1 # replace xl1 with your Ethernet device
  set authname YOURLOGINNAME
  set authkey YOURPASSWORD
  set dial
  set login
  add default HISADDR
....

=== Εκτέλεση του ppp

Ως χρήστης `root`, μπορείτε να εκτελέσετε:

[source,shell]
....
# ppp -ddial name_of_service_provider
....

=== Εκκίνηση του ppp κατά την Εκκίνηση

Προσθέστε τις παρακάτω γραμμές στο αρχείο [.filename]#/etc/rc.conf#:

[.programlisting]
....
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"	# if you want to enable nat for your local network, otherwise NO
ppp_profile="name_of_service_provider"
....

=== Χρήση μιας Ετικέτας Υπηρεσίας PPPoE

Μερικές φορές θα χρειαστεί να χρησιμοποιήσετε μια ετικέτα υπηρεσίας (service tag) για την αποκατάσταση της σύνδεσης σας. Οι ετικέτες υπηρεσιών χρησιμοποιούνται για τον διαχωρισμό μεταξύ διαφορετικών εξυπηρετητών PPPoE που βρίσκονται στο ίδιο δίκτυο.

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

Ως τελευταία λύση, θα μπορούσατε να δοκιμάσετε την μέθοδο που συνίσταται στο πρόγραμμα http://www.roaringpenguin.com/pppoe/[Roaring Penguin PPPoE] το οποίο μπορείτε να βρείτε στην crossref:ports[ports,Συλλογή των Ports]. Να έχετε υπόψη σας, ότι αυτό μπορεί να αποπρογραμματίσει και να αχρηστεύσει το modem σας, έτσι σκεφτείτε το καλά πριν το κάνετε. Απλώς εγκαταστήστε το πρόγραμμα που δίνει ο παροχέας σας μαζί με το modem. Έπειτα, εισέλθετε στο μενού menu:System[] του προγράμματος. Εκεί θα πρέπει να είναι το όνομα του προφίλ σας. Συνήθως γράφει _ISP_.

Το όνομα του προφίλ (ετικέτα υπηρεσίας) θα χρησιμοποιηθεί στην καταχώριση για την ρύθμιση του PPPoE στο αρχείο [.filename]#ppp.conf#, ως το τμήμα που δηλώνει τον παροχέα στην εντολή `set device` (δείτε τη σελίδα manual του man:ppp[8] για πλήρεις λεπτομέρειες). θα δείχνει όπως το παρακάτω:

[.programlisting]
....
set device PPPoE:xl1:ISP
....

Μην ξεχάσετε να αλλάξετε το _xl1_ με τη σωστή συσκευή που αντιστοιχεί στην κάρτα Ethernet που χρησιμοποιείτε.

Μην ξεχάσετε να αλλάξετε το _ISP_ με το προφίλ που βρήκατε παραπάνω.

Για περισσότερες πληροφορίες, δείτε:

* http://renaud.waldura.com/doc/freebsd/pppoe/[Φθηνότερες Ευρυζωνικές Συνδέσεις μέσω FreeBSD σε Γραμμή DSL] από τον Renaud Waldura.

[[ppp-3com]]
=== Το PPPoE σε Modem 3Com(R) HomeConnect(TM) ADSL Dual Link

Αυτό το modem δεν ακολουθεί το http://www.faqs.org/rfcs/rfc2516.html[RFC 2516] (_Μια μέθοδος για μετάδοση PPP μέσω Ethernet (PPPoE)_, γραμμένο από τους L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone, και R. Wheeler). Αντίθετα, χρησιμοποιεί διαφορετικούς τύπους κωδικών πακέτων για τα πλαίσια Ethernet. Παρακαλούμε να εκφράσετε τα παράπονα σας στην http://www.3com.com/[3Com] αν νομίζετε ότι θα πρέπει να συμμορφωθεί με τις προδιαγραφές του PPPoE.

Για να μπορεί το FreeBSD να επικοινωνεί με αυτή τη συσκευή, θα πρέπει να τεθεί ένα κατάλληλο sysctl. Αυτό μπορεί να γίνεται αυτόματα κατά την εκκίνηση, με την ενημέρωση του αρχείου [.filename]#/etc/sysctl.conf#:

[.programlisting]
....
net.graph.nonstandard_pppoe=1
....

ή μπορεί να γίνει άμεσα με την εντολή:

[source,shell]
....
# sysctl net.graph.nonstandard_pppoe=1
....

Δυστυχώς, επειδή πρόκειται για μια ρύθμιση που επηρεάζει ολόκληρο το σύστημα, δεν είναι δυνατόν να επικοινωνείτε ταυτόχρονα με ένα κανονικό πελάτη ή εξυπηρετητή PPPoE και με ένα ADSL modem 3Com(R) HomeConnect(TM).

[[pppoa]]
== Χρησιμοποιώντας PPP μέσω ATM (PPPoA)

Ή ενότητα που ακολουθεί, περιγράφει πως να ρυθμίσετε το PPP για λειτουργία μέσω ATM (PPPoA). Το PPPoA είναι μια δημοφιλής επιλογή στους παροχείς υπηρεσιών DSL στην Ευρώπη.

=== Χρησιμοποιώντας PPPoA με το Alcatel SpeedTouch(TM) USB

Η υποστήριξη PPPooA για αυτή τη συσκευή, παρέχεται ως port στο FreeBSD, καθώς το firmware της συσκευής διανέμεται υπό την άδεια http://www.speedtouchdsl.com/disclaimer_lx.htm[Alcatel's license agreement] και δεν μπορεί να διανεμηθεί ελεύθερα με το βασικό σύστημα του FreeBSD.

Για να εγκαταστήσετε το λογισμικό, απλά χρησιμοποιήστε την crossref:ports[ports,Συλλογή των Ports]. Εγκαταστήστε το port package:net/pppoa[] και ακολουθήστε τις οδηγίες που περιλαμβάνονται σε αυτό.

Όπως πολλές συσκευές USB, το Alcatel SpeedTouch(TM) χρειάζεται να κατεβάσει το firmware του από τον υπολογιστή στο οποίο είναι συνδεμένο, προκειμένου να λειτουργήσει σωστά. Η διαδικασία αυτή μπορεί να αυτοματοποιηθεί στο FreeBSD, ώστε η μεταφορά να γίνεται κάθε φορά που συνδέεται η συσκευή στη θύρα USB. Μπορείτε να προσθέσετε τις παρακάτω πληροφορίες στο αρχείο [.filename]#/etc/usbd.conf# για να ενεργοποιήσετε την αυτόματη μεταφορά του firmware. Θα πρέπει να επεξεργαστείτε αυτό το αρχείο ως χρήστης `root`.

[.programlisting]
....
device "Alcatel SpeedTouch USB"
    devname "ugen[0-9]+"
    vendor 0x06b9
    product 0x4061
    attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o"
....

Για να ενεργοποιήσετε το usbd, το δαίμονα USB, προσθέστε την παρακάτω γραμμή στο αρχείο [.filename]#/etc/rc.conf#:

[.programlisting]
....
usbd_enable="YES"
....

Μπορεί επίσης να ρυθμίσετε το ppp ώστε να εκτελεί αυτόματα κλήση κατά την εκκίνηση του συστήματος. Για να γίνει αυτό, προσθέστε τις παρακάτω γραμμές στο [.filename]#/etc/rc.conf#. Θα πρέπει και πάλι να εκτελέσετε τη διαδικασία αυτή ως `root`.

[.programlisting]
....
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="adsl"
....

Για να λειτουργήσει σωστά το παραπάνω, θα πρέπει να έχετε χρησιμοποιήσει το υπόδειγμα του αρχείου [.filename]#ppp.conf# το οποίο παρέχεται με το port package:net/pppoa[].

=== Χρησιμοποιώντας το mpd

Μπορείτε να χρησιμοποιήσετε το mpd για να συνδεθείτε σε ένα πλήθος υπηρεσιών, και ειδικότερα υπηρεσίες PPTP. Μπορείτε να βρείτε το mpd στην Συλλογή των Ports, στο package:net/mpd[]. Πολλά ADSL modem απαιτούν τη δημιουργία ενός PPTP τούνελ μεταξύ του modem και του υπολογιστή. Ένα τέτοιο modem είναι το Alcatel SpeedTouch(TM) Home.

Πρώτα πρέπει να εγκαταστήσετε το port, και μετά μπορείτε να ρυθμίσετε το mpd ώστε να καλύπτει τις απαιτήσεις σας και τις ρυθμίσεις του παροχέα σας. Το port εγκαθιστά κάποια παραδείγματα αρχείων ρυθμίσεων στον κατάλογο [.filename]#PREFIX/etc/mpd/#. Τα αρχεία αυτά περιέχουν αρκετά καλή τεκμηρίωση των ρυθμίσεων. Σημειώστε εδώ, ότι το _PREFIX_ είναι ο κατάλογος στον οποίο εγκαθίστανται τα ports, και από προεπιλογή είναι ο [.filename]#/usr/local/#. Μετά την εγκατάσταση του port, θα βρείτε ένα πλήρη οδηγό για τη ρύθμιση του mpd σε μορφή HTML. Η τεκμηρίωση εγκαθίσταται στον κατάλογο [.filename]#PREFIX/shared/doc/mpd/#. Παρακάτω φαίνεται ένα υπόδειγμα ρυθμίσεων για σύνδεση σε μια υπηρεσία ADSL μέσω του mpd. Οι ρυθμίσεις χωρίζονται σε δύο αρχεία, πρώτα δείχνουμε το [.filename]#mpd.conf#:

[NOTE]
====
Το παρακάτω υπόδειγμα [.filename]#mpd.conf# λειτουργεί μόνο με την έκδοση 4.X του mpd.
====

[.programlisting]
....
default:
    load adsl

adsl:
    new -i ng0 adsl adsl
    set bundle authname username <.>
    set bundle password password <.>
    set bundle disable multilink

    set link no pap acfcomp protocomp
    set link disable chap
    set link accept chap
    set link keep-alive 30 10

    set ipcp no vjcomp
    set ipcp ranges 0.0.0.0/0 0.0.0.0/0

    set iface route default
    set iface disable on-demand
    set iface enable proxy-arp
    set iface idle 0

    open
....

<.> Το όνομα χρήστη με το οποίο γίνεται η πιστοποίηση στον ISP σας.

<.> Ο κωδικός με τον οποίο γίνεται η πιστοποίηση στον ISP σας.

Το αρχείο [.filename]#mpd.links# περιέχει πληροφορίες σχετικά με τη σύνδεση ή τις συνδέσεις που θα πραγματοποιηθούν. Για παράδειγμα, το [.filename]#mpd.links# που συνοδεύει το παραπάνω παράδειγμα, φαίνεται παρακάτω:

[.programlisting]
....
adsl:
    set link type pptp
    set pptp mode active
    set pptp enable originate outcall
    set pptp self 10.0.0.1 <.>
    set pptp peer 10.0.0.138 <.>
....

<.> Η διεύθυνση IP του FreeBSD υπολογιστή σας, στον οποίο θα χρησιμοποιήσετε το mpd.

<.> Η διεύθυνση IP του ADSL modem σας. Για το Alcatel SpeedTouch(TM) Home, η διεύθυνση αυτή είναι από προεπιλογή η `10.0.0.138`.

Είναι δυνατόν να αρχικοποιήσετε τη σύνδεση εύκολα, δίνοντας την παρακάτω εντολή ως `root`:

[source,shell]
....
# mpd -b adsl
....

Μπορείτε να δείτε την κατάσταση της σύνδεσης με την παρακάτω εντολή:

[source,shell]
....
% ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
     inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff
....

Το mpd αποτελεί τον συνιστώμενο τρόπο σύνδεσης του FreeBSD με μια υπηρεσία ADSL.

=== Χρησιμοποιώντας το pptpclient

Μπορείτε επίσης να χρησιμοποιήσετε το FreeBSD για να συνδεθείτε σε άλλες υπηρεσίες PPPoA χρησιμοποιώντας το package:net/pptpclient[].

Για να χρησιμοποιήσετε το package:net/pptpclient[] για να συνδεθείτε σε μια υπηρεσία DSL, εγκαταστήστε το port ή το πακέτο, και επεξεργαστείτε το αρχείο [.filename]#/etc/ppp/ppp.conf#. Θα χρειαστεί να είστε `root` για να κάνετε και τις δύο παραπάνω διαδικασίες. Παρακάτω φαίνεται ένα παράδειγμα μιας ενότητας του [.filename]#ppp.conf#. Για περισσότερες πληροφορίες σχετικά με τις επιλογές του [.filename]#ppp.conf#, δείτε τη σελίδα manual του ppp, man:ppp[8].

[.programlisting]
....
adsl:
 set log phase chat lcp ipcp ccp tun command
 set timeout 0
 enable dns
 set authname username <.>
 set authkey password <.>
 set ifaddr 0 0
 add default HISADDR
....

<.> Το όνομα χρήστη για τον λογαριασμό σας στον παροχέα DSL.

<.> Ο κωδικός για τον λογαριασμό σας.

[WARNING]
====

Καθώς θα πρέπει να γράψετε τον κωδικό σας μορφή απλού κειμένου στο αρχείο [.filename]#ppp.conf#, θα πρέπει να βεβαιωθείτε ότι κανένας άλλος δεν θα μπορεί να διαβάσει τα περιεχόμενα αυτού του αρχείου. Με τις παρακάτω εντολές, μπορείτε να εξασφαλίσετε ότι το αρχείο θα μπορεί να διαβαστεί μόνο μέσα από το λογαριασμό του `root`. Δείτε τις σελίδες manual των man:chmod[1] και man:chown[8] για περισσότερες πληροφορίες.

[source,shell]
....
# chown root:wheel /etc/ppp/ppp.conf
# chmod 600 /etc/ppp/ppp.conf
....

====

Αυτό θα ανοίξει ένα τούνελ για μια συνεδρία PPP με τον DSL δρομολογητή σας. Τα DSL modem τύπου ethernet έχουν μια προκαθορισμένη διεύθυνση IP στο τοπικό σας δίκτυο, στην οποία μπορείτε να συνδεθείτε. Στην περίπτωση του Alcatel SpeedTouch(TM) Home, η διεύθυνση αυτή είναι `10.0.0.138`. Η τεκμηρίωση που διαθέτει ο δρομολογητής σας, θα αναφέρει ποια διεύθυνση χρησιμοποιεί η συσκευή σας. Για να ανοίξετε το τούνελ και να ξεκινήσετε μια συνεδρία PPP, εκτελέστε την ακόλουθη εντολή:

[source,shell]
....
# pptp address adsl
....

[TIP]
====

Είναι καλή ιδέα να προσθέσετε ένα "&" στο τέλος της προηγούμενης εντολής, διαφορετικά το pptp δεν θα σας επιστρέψει τον έλεγχο (προτροπή) του τερματικού σας.
====

Θα δημιουργηθεί μια συσκευή [.filename]#tun# (εικονικό τούνελ) για την αλληλεπίδραση μεταξύ των διεργασιών pptp και ppp. Μόλις επιστρέψει η προτροπή στο τερματικό σας, ή το pptp επιβεβαιώσει τη σύνδεση, μπορείτε να εξετάσετε το τούνελ με τον τρόπο που φαίνεται παρακάτω:

[source,shell]
....
% ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
        Opened by PID 918
....

Αν δεν μπορέσετε να συνδεθείτε, ελέγξτε τις ρυθμίσεις του δρομολογητή σας, οι οποίες συνήθως είναι προσβάσιμες μέσω telnet ή μέσω κάποιου φυλλομετρητή. Αν ακόμα δεν μπορείτε να συνδεθείτε, θα πρέπει να εξετάσετε την έξοδο της εντολής `pptp` και τα περιεχόμενα του αρχείου καταγραφής του ppp, [.filename]#/var/log/ppp.log# για πιθανά στοιχεία.

[[slip]]
== Χρησιμοποιώντας το SLIP

[WARNING]
====

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

[[slipc]]
=== Ρυθμίζοντας ένα Πελάτη SLIP

Παρακάτω παρουσιάζουμε ένα τρόπο να ρυθμίσετε ένα μηχάνημα FreeBSD ως πελάτη SLIP σε ένα δίκτυο με στατικές διευθύνσεις. Για μηχανήματα τα οποία λαμβάνουν όνομα δυναμικά (η διεύθυνση τους αλλάζει κάθε φορά που συνδέονται), πιθανόν να χρειαστεί να κάνετε πιο πολύπλοκες ρυθμίσεις.

Αρχικά, θα πρέπει να καθορίσετε σε ποια σειριακή θύρα είναι συνδεμένο το modem σας. Αρκετοί χρήστες δημιουργούν ένα συμβολικό δεσμό π.χ. [.filename]#/dev/modem#, το οποίο δείχνει στην πραγματική συσκευή [.filename]#/dev/cuadN#. Αυτό σας επιτρέπει να συνεχίσετε να χρησιμοποιείτε το ίδιο όνομα συσκευής, ακόμα και αν μετακινήσετε το modem σε διαφορετική θύρα. Είναι μάλλον άβολο να πρέπει να αλλάξετε πλήθος αρχείων στο [.filename]#/etc# καθώς και τα αρχεία [.filename]#.kermrc# σε όλο το σύστημα!

[NOTE]
====
Το [.filename]#/dev/cuad0# είναι η [.filename]#COM1#, το [.filename]#/dev/cuad1# είναι η [.filename]#COM2#, κ.ο.κ.
====

Βεβαιωθείτε ότι το αρχείο ρυθμίσεων του πυρήνα σας περιέχει τα παρακάτω:

[.programlisting]
....
device   sl
....

Το παραπάνω περιλαμβάνεται στον πυρήνα [.filename]#GENERIC#, και αν δεν το έχετε διαγράψει, δεν θα έχετε πρόβλημα.

==== Ρυθμίσεις που θα Χρειαστεί να Κάνετε Μόνο μια Φορά

[.procedure]
. Προσθέστε το μηχάνημα σας, την πύλη (gateway) και τους διακομιστές ονομάτων (nameservers) στο αρχείο [.filename]#/etc/hosts#. Στο παράδειγμα μας, το αρχείο αυτό μοιάζει με το παρακάτω:
+
[.programlisting]
....
127.0.0.1               localhost loghost
136.152.64.181          water.CS.Example.EDU water.CS water
136.152.64.1            inr-3.CS.Example.EDU inr-3 slip-gateway
128.32.136.9            ns1.Example.EDU ns1
128.32.136.12           ns2.Example.EDU ns2
....

. Βεβαιωθείτε ότι η ενότητα `files` βρίσκεται πριν το `dns` στην ενότητα `hosts:` του αρχείου [.filename]#/etc/nsswitch.conf#. Αν δεν υπάρχουν αυτές οι παράμετροι, μπορεί να εμφανιστούν παράξενα συμπτώματα.
. Τροποποιήστε το αρχείο [.filename]#/etc/rc.conf#.
.. Ορίστε το όνομα του υπολογιστή σας, τροποποιώντας τη γραμμή που γράφει:
+
[.programlisting]
....
hostname="myname.my.domain"
....
+ 
Θα πρέπει εδώ να τοποθετήσετε το πλήρες όνομα του υπολογιστή σας.
.. Ορίστε τον προεπιλεγμένο δρομολογητή, αλλάζοντας τη γραμμή:
+
[.programlisting]
....
defaultrouter="NO"
....
+ 
σε:
+
[.programlisting]
....
defaultrouter="slip-gateway"
....

. Δημιουργήστε ένα αρχείο [.filename]#/etc/resolv.conf# το οποίο θα περιέχει:
+
[.programlisting]
....
domain CS.Example.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12
....
+ 
Όπως μπορείτε να δείτε, το παραπάνω ορίζει τους διακομιστές DNS. Φυσικά, τα πραγματικά ονόματα και οι διευθύνσεις των τομέων εξαρτώνται από το περιβάλλον σας.
. Ρυθμίστε κωδικό πρόσβασης για τους χρήστες `root` και `toor` (καθώς και για όσους άλλους λογαριασμούς δεν έχουν κωδικό).
. Επανεκκινήστε το μηχάνημα σας, και βεβαιωθείτε ότι έχει τεθεί σωστά το όνομα υπολογιστή.

==== Δημιουργώντας μια Σύνδεση SLIP

[.procedure]
. Μετά την κλήση, γράψτε την εντολή `slip` στην προτροπή, γράψτε το όνομα του μηχανήματος σας και τον κωδικό. Το τι ακριβώς χρειάζεται να γράψετε, εξαρτάται από το περιβάλλον σας. Αν χρησιμοποιείτε το Kermit, μπορείτε να χρησιμοποιήσετε ένα script όπως το ακόλουθο:
+
[.programlisting]
....
# kermit setup
set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# The next macro will dial up and login
define slip dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0a
....

+ 
Φυσικά, θα πρέπει να αλλάξετε το όνομα χρήστη και τον κωδικό ώστε να ταιριάζουν με τα δικά σας. Μετά από αυτό, μπορείτε απλώς να πληκτρολογήσετε `slip` στην προτροπή σύνδεσης του Kermit.
+
[NOTE]
====
Η ύπαρξη του κωδικού σας σε μορφή απλού κειμένου σε οποιοδήποτε σημείο ενός συστήματος αρχείων, είναι γενικά _κακή_ ιδέα. Προχωρήστε με δική σας ευθύνη.
====

. Αφήστε το Kermit εκεί (μπορείτε να το στείλετε στο παρασκήνιο χρησιμοποιώντας τα πλήκτρα kbd:[Ctrl+z]) και ως `root`, γράψτε:
+

[source,shell]
....
# slattach -h -c -s 115200 /dev/modem
....

+ 
Αν μπορείτε να κάνετε `ping` σε υπολογιστές στην άλλη μεριά του δρομολογητή, είστε συνδεμένοι! Αν αυτό δεν δουλεύει, δοκιμάστε την επιλογή `-a` αντί για την `-c` ως όρισμα στην `slattach`.

==== Πως να Τερματίσετε την Σύνδεση

Κάντε τα ακόλουθα:

[source,shell]
....
# kill -INT `cat /var/run/slattach.modem.pid`
....

για να τερματίσετε το `slattach`. Θυμηθείτε ότι πρέπει να είστε `root` για να εκτελέσετε το παραπάνω. Έπειτα επανέλθετε στο `kermit` (εκτελώντας την `fg` αν το είχατε στείλει στο παρασκήνιο) και τερματίστε το (πιέζοντας kbd:[q]).

Η σελίδα manual του man:slattach[8] αναφέρει ότι μπορείτε να χρησιμοποιήσετε την εντολή `ifconfig sl0 down` για να διακόψετε τη σύνδεση, αλλά αυτό δεν φαίνεται να έχει κανένα αποτέλεσμα. (To `ifconfig sl0` αναφέρει το ίδιο πράγμα.)

Μερικές φορές, το modem σας μπορεί να αρνηθεί να κλείσει τη γραμμή. Στις περιπτώσεις αυτές, ξεκινήστε ξανά το `kermit` και τερματίστε το ξανά. Τη δεύτερη φορά συνήθως πετυχαίνει.

==== Αντιμετώπιση Προβλημάτων

Αν το παραπάνω δεν λειτουργήσει, ρωτήστε στη λίστα link:{freebsd-net-url}[freebsd-net]. Μερικά από τα συνηθισμένα προβλήματα τα οποία έχουμε μέχρι στιγμής αντιμετωπίσει:

* Να μην έχει χρησιμοποιηθεί η επιλογή `-c` ή `-a` στην `slattach` (Αυτό κανονικά δεν είναι κρίσιμο σφάλμα, αλλά μερικοί χρήστες ανέφεραν ότι αυτό έλυσε τα προβλήματα τους.)
* Χρήση του `s10` αντί για `sl0` (η διαφορά μπορεί να είναι πολύ μικρή σε μερικές γραμματοσειρές).
* Δοκιμάστε την εντολή `ifconfig sl0` για να δείτε την κατάσταση της διεπαφής. Για παράδειγμα, μπορεί να δείτε το παρακάτω:
+
[source,shell]
....
# ifconfig sl0
sl0: flags=10<POINTOPOINT>
        inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00
....

* Αν η εντολή man:ping[8] δίνει μηνύματα `no route to host`, ίσως υπάρχει πρόβλημα με τον πίνακα δρομολόγησης σας. Μπορείτε να χρησιμοποιήσετε την εντολή `netstat -r` για να δείτε την τρέχουσα δρομολόγηση:
+
[source,shell]
....
# netstat -r
Routing tables
Destination      Gateway            Flags     Refs     Use  IfaceMTU    Rtt    Netmasks:

(root node)
(root node)

Route Tree for Protocol Family inet:
(root node) =>
default          inr-3.Example.EDU  UG          8   224515  sl0 -      -
localhost.Exampl localhost.Example. UH          5    42127  lo0 -       0.438
inr-3.Example.ED water.CS.Example.E UH          1        0  sl0 -      -
water.CS.Example localhost.Example. UGH        34 47641234  lo0 -       0.438
(root node)
....
+ 
Τα παραπάνω παραδείγματα είναι από ένα σχετικά απασχολημένο σύστημα. Οι αριθμοί θα διαφέρουν στο σύστημα σας, ανάλογα με τη δραστηριότητα του δικτύου.

[[slips]]
=== Ρυθμίζοντας Ένα Εξυπηρετητή SLIP

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

[[slips-prereqs]]
==== Προϋποθέσεις

Η ενότητα αυτή είναι ιδιαίτερα τεχνικής φύσεως, και για το λόγο αυτό απαιτείται να έχετε τις αντίστοιχες γνώσεις για να την κατανοήσετε. Υποθέτουμε ότι έχετε μια εξοικείωση με το πρωτόκολλο TCP/IP και ειδικότερα με τη διευθυνσιοδότηση κόμβων, τις μάσκες δικτύων, τα υποδίκτυα, τη δρομολόγηση και τα πρωτόκολλα δρομολόγησης όπως το RIP. Η ρύθμιση των υπηρεσιών SLIP σε ένα εξυπηρετητή επιλογικών συνδέσεων απαιτεί γνώση αυτών των εννοιών, και αν δεν είστε εξοικειωμένος με αυτές, σας παρακαλούμε να διαβάσετε είτε το _TCP/IP Network Administration_ του Craig Hunt (εκδόσεις O'Reilly & Associates, Inc, Αριθμός ISBN 0-937175-82-X) ή κάποιο από τα βιβλία του Douglas Comer σχετικά με το πρωτόκολλο TCP/IP.

Επιπλέον, υποθέτουμε ότι ήδη έχετε ρυθμίσει το modem σας και έχετε τροποποιήσει τα κατάλληλα αρχεία ρυθμίσεων του συστήματος ώστε να επιτρέπεται η είσοδος στο σύστημα μέσω των modem. Αν δεν έχετε ακόμα προετοιμάσει το σύστημα για αυτό, παρακαλούμε δείτε το crossref:serialcomms[dialup,Υπηρεσία Εισόδου μέσω Επιλογικής Σύνδεσης (dial-in)] για λεπτομέρειες σχετικά με τη ρύθμιση των επιλογικών συνδέσεων. Ενδεχομένως να θέλετε επίσης να δείτε τις σελίδες manual της man:sio[4] για πληροφορίες σχετικά με το πρόγραμμα οδήγησης της σειριακής θύρας, τα man:ttys[5], man:gettytab[5], man:getty[8], και man:init[8] για πληροφορίες που σχετίζονται με τη ρύθμιση του συστήματος ώστε να δέχεται είσοδο χρηστών μέσω modem, και ίσως και τη man:stty[1] για πληροφορίες σχετικά με τις παραμέτρους σειριακών θυρών (όπως την `clocal` για σειριακές διεπαφές που είναι απευθείας συνδεμένες).

==== Γρήγορη Επισκόπηση

Τυπικά, ένας εξυπηρετητής SLIP που χρησιμοποιεί FreeBSD λειτουργεί με τον εξής τρόπο: ένας χρήστης SLIP καλεί τον εξυπηρετητή SLIP, και εισέρχεται στο σύστημα μέσω ενός ειδικού αναγνωριστικού εισόδου για το SLIP. Το κέλυφος του χρήστη είναι το [.filename]#/usr/sbin/sliplogin#. Το πρόγραμμα `sliplogin` διαβάζει το αρχείο [.filename]#/etc/sliphome/slip.hosts# για να βρει μια γραμμή που να ταιριάζει με τον χρήστη, και αν υπάρχει, συνδέει την σειριακή γραμμή σε μια διαθέσιμη διεπαφή SLIP και έπειτα εκτελεί το script του κελύφους [.filename]#/etc/sliphome/slip.login# για να ρυθμίσει τη διεπαφή SLIP.

===== Ένα Παράδειγμα Εισόδου σε Εξυπηρετητή SLIP

Για παράδειγμα, για ένα χρήστη SLIP με ID `Shelmerg`, η αντίστοιχη καταχώριση στο [.filename]#/etc/master.passwd# θα έμοιαζε με την παρακάτω:

[.programlisting]
....
Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin
....

Όταν εισέλθει ο `Shelmerg`, το `sliplogin` θα ψάξει το [.filename]#/etc/sliphome/slip.hosts# για μια γραμμή με ID χρήστη που να ταιριάζει. Για παράδειγμα, μπορεί να υπάρχει μια γραμμή στο [.filename]#/etc/sliphome/slip.hosts# που να γράφει:

[.programlisting]
....
Shelmerg        dc-slip sl-helmer       0xfffffc00		  autocomp
....

Το `sliplogin` θα βρει τη γραμμή αυτή, θα συνδέσει τη σειριακή γραμμή στην επόμενη διαθέσιμη διεπαφή SLIP, και έπειτα θα εκτελέσει το [.filename]#/etc/sliphome/slip.login# όπως φαίνεται παρακάτω:

[.programlisting]
....
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
....

Αν όλα πάνε καλά, το [.filename]#/etc/sliphome/slip.login# θα εκτελέσει μια εντολή `ifconfig` για τη διεπαφή SLIP στην οποία έχει συνδεθεί η `sliplogin` (η διεπαφή 0 στο παραπάνω παράδειγμα, η πρώτη παράμετρος της λίστας που δίνεται στο [.filename]#slip.login#) ώστε να ρυθμιστούν η τοπική διεύθυνση IP (`dc-slip`), η απομακρυσμένη διεύθυνση IP (`sl-helmer`), η μάσκα δικτύου για τη διεπαφή SLIP (`0xfffffc00`), και οποιεσδήποτε πρόσθετες επιλογές (`autocomp`). Αν κάτι πάει στραβά, θα μπορέσετε να το εντοπίσετε από τα αρχεία καταγραφής της `sliplogin`. Η `sliplogin` καταγράφει τα μηνύματα χρησιμοποιώντας το δαίμονα syslogd ο οποίος συνήθως χρησιμοποιεί το αρχείο [.filename]#/var/log/messages# (δείτε τις σελίδες βοήθειας για τα man:syslogd[8] και man:syslog.conf[5] και ενδεχομένως ελέγξτε το [.filename]#/etc/syslog.conf# για να δείτε την τοποθεσία και το αρχείο που χρησιμοποιεί το syslogd για την καταγραφή).

==== Ρύθμιση του Πυρήνα

Ο προεπιλεγμένος πυρήνας του FreeBSD (ο [.filename]#GENERIC#) διαθέτει ενσωματωμένη υποστήριξη SLIP (man:sl[4]). Στην περίπτωση που θέλετε να δημιουργήσετε προσαρμοσμένο πυρήνα, προσθέστε την παρακάτω γραμμή στο αρχείο ρυθμίσεων του πυρήνα σας:

[.programlisting]
....
device   sl
....

Το FreeBSD, από προεπιλογή, δεν προωθεί πακέτα. Αν θέλετε ο εξυπηρετητής σας να ενεργεί ως δρομολογητής, θα πρέπει να επεξεργαστείτε το αρχείο [.filename]#/etc/rc.conf# και να αλλάξετε τη ρύθμιση της μεταβλητής `gateway_enable` σε `YES`. Με τον τρόπο αυτό, θα είναι σίγουρο ότι η επιλογή της δρομολόγησης θα διατηρηθεί μετά από μια επανεκκίνηση.

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

Για να εφαρμόσετε αυτές τις ρυθμίσεις άμεσα, μπορείτε να εκτελέσετε την παρακάτω εντολή ως `root`:

[source,shell]
....
# /etc/rc.d/routing start
....

Παρακαλούμε δείτε το crossref:kernelconfig[kernelconfig,Ρυθμίζοντας τον Πυρήνα του FreeBSD] για περισσότερες πληροφορίες σχετικά με την ρύθμιση του πυρήνα του FreeBSD.

==== Ρύθμιση του Sliplogin

Όπως αναφέρθηκε και πριν, υπάρχουν τρία αρχεία στον κατάλογο [.filename]#/etc/sliphome# τα οποία χρησιμοποιούνται στη ρύθμιση του [.filename]#/usr/sbin/sliplogin# (δείτε και τη σελίδα manual του man:sliplogin[8]): το [.filename]#slip.hosts#, το οποίο ορίζει τους χρήστες SLIP και τις αντίστοιχες IP διευθύνσεις τους, το [.filename]#slip.login# το οποίο συνήθως ρυθμίζει απλά την διεπαφή SLIP, και προαιρετικά το [.filename]#slip.logout#, το οποίο αναιρεί τις αλλαγές του [.filename]#slip.login# όταν τερματίσει η σειριακή σύνδεση.

===== Ρύθμιση του [.filename]#slip.hosts#

Το [.filename]#/etc/sliphome/slip.hosts# περιέχει γραμμές με τέσσερα πεδία που χωρίζονται μεταξύ τους με κενά διαστήματα:

* Το αναγνωριστικό εισόδου του χρήστη SLIP
* Την τοπική διεύθυνση (τοπική ως προς τον εξυπηρετητή SLIP) της διασύνδεσης SLIP
* Την απομακρυσμένη διεύθυνση της διασύνδεσης SLIP
* Τη μάσκα του δικτύου

Η τοπική και η απομακρυσμένη διεύθυνση, μπορεί να είναι ονόματα υπολογιστών (τα οποία να μετατρέπονται σε διευθύνσεις IP μέσω του [.filename]#/etc/hosts# ή μέσω του DNS, ανάλογα με τις καταχωρίσεις που υπάρχουν στο αρχείο [.filename]#/etc/nsswitch.conf#), και η μάσκα δικτύου μπορεί να είναι ένα όνομα το οποίο να μπορεί να διευκρινιστεί μέσω αναζήτησης στο [.filename]#/etc/networks#. Σε ένα δοκιμαστικό σύστημα, το [.filename]#/etc/sliphome/slip.hosts# μοιάζει με το παρακάτω:

[.programlisting]
....
#
# login local-addr      remote-addr     mask            opt1    opt2
#                                               (normal,compress,noicmp)
#
Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp
....

Στο τέλος της γραμμής, βρίσκονται μια ή περισσότερες από τις παρακάτω επιλογές:

* `normal` - χωρίς συμπίεση των επικεφαλίδων
* `compress` - με συμπίεση των επικεφαλίδων
* `autocomp` - με συμπίεση των επικεφαλίδων, αν επιτρέπεται από τον απομακρυσμένο υπολογιστή
* `noicmp` - απενεργοποίηση των πακέτων ICMP (με τον τρόπο αυτό τα πακέτα "ping" θα απορρίπτονται αντί να καταναλώνουν το εύρος ζώνης της σύνδεσης σας)

Οι επιλογές που έχετε για τις τοπικές και απομακρυσμένες διευθύνσεις των SLIP συνδέσεων σας, εξαρτώνται από το αν πρόκειται να αφιερώσετε ένα υποδίκτυο TCP/IP ή αν πρόκειται να χρησιμοποιήσετε "proxy ARP" στο SLIP εξυπηρετητή σας (δεν είναι "πραγματικό" proxy ARP, αλλά στην ενότητα αυτή περιγράφεται με αυτό τον όρο). Αν δεν είστε σίγουρος ποια μέθοδο να επιλέξετε ή πως να αποδίδετε διευθύνσεις IP, παρακαλούμε ανατρέξτε στα βιβλία του TCP/IP που αναφέρονται στις Προϋποθέσεις SLIP (<<slips-prereqs>>) ή/και συμβουλευθείτε το διαχειριστή δικτύου σας.

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

Διαφορετικά, αν χρησιμοποιήσετε τη μέθοδο "proxy ARP", θα χρειαστεί να αποδίδετε στους SLIP πελάτες σας διευθύνσεις IP που ανήκουν στο υποδίκτυο Ethernet στο οποίο ανήκει ο εξυπηρετητής SLIP, και θα χρειαστεί επίσης να ρυθμίσετε τα scripts [.filename]#/etc/sliphome/slip.login# και [.filename]#/etc/sliphome/slip.logout# να χρησιμοποιούν το man:arp[8] για να χειρίζονται τις καταχωρίσεις "proxy ARP" στον πίνακα ARP του εξυπηρετητή SLIP.

===== Ρύθμιση του [.filename]#slip.login#

Ένα τυπικό [.filename]#/etc/sliphome/slip.login# μοιάζει με το παρακάτω:

[.programlisting]
....
#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90

#
# generic login file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
....

Το αρχείο [.filename]#slip.login# εκτελεί απλώς το `ifconfig` για την κατάλληλη διεπαφή SLIP, με τις τοπικές και απομακρυσμένες διευθύνσεις και τη μάσκα δικτύου της διεπαφής αυτής.

Αν έχετε αποφασίσει να χρησιμοποιήσετε την μέθοδο "proxy ARP" (αντί να χρησιμοποιήσετε διαφορετικό υποδίκτυο για τους πελάτες SLIP), το αρχείο [.filename]#/etc/sliphome/slip.login# θα μοιάζει με το παρακάτω:

[.programlisting]
....
#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90

#
# generic login file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pub
....

Η πρόσθετη γραμμή σε αυτό το [.filename]#slip.login#, η `arp -s $5 00:11:22:33:44:55 pub`, δημιουργεί μια καταχώριση ARP στον πίνακα ARP του εξυπηρετητή SLIP. Αυτή η καταχώριση ARP κάνει τον εξυπηρετητή SLIP να απαντά με την διεύθυνση Ethernet MAC όταν κάποιος άλλος κόμβος IP στο Ethernet επιθυμεί να επικοινωνήσει με την διεύθυνση IP του πελάτη SLIP.

Όταν χρησιμοποιείτε το παραπάνω παράδειγμα, βεβαιωθείτε ότι έχετε αντικαταστήσει την διεύθυνση MAC του Ethernet (`00:11:22:33:44:55`) με την αντίστοιχη της δικής σας κάρτας Ethernet, διαφορετικά το "proxy ARP" σίγουρα δεν θα λειτουργήσει! Μπορείτε να ανακαλύψετε τη διεύθυνση MAC του δικού σας εξυπηρετητή SLIP κοιτάζοντας τα αποτελέσματα της εντολής `netstat -i`. Η δεύτερη γραμμή της εξόδου θα μοιάζει με την παρακάτω:

[source,shell]
....
ed0   1500  <Link>0.2.c1.28.5f.4a         191923	0   129457     0   116
....

Αυτό δείχνει ότι στο συγκεκριμένο σύστημα η διεύθυνση MAC του Ethernet είναι `00:02:c1:28:5f:4a`. Οι τελείες στην διεύθυνση που δείχνει η `netstat -i` πρέπει να αντικατασταθούν με άνω-κάτω τελείες, και κάθε μονό δεκαεξαδικό ψηφίο πρέπει να μετατραπεί σε διπλό προσθέτοντας από μπροστά ένα μηδενικό. Η διεύθυνση μετατρέπεται με αυτό τον τρόπο σε μια μορφή που μπορεί να χρησιμοποιήσει η man:arp[8]. Δείτε τη σελίδα manual της man:arp[8] για περισσότερες πληροφορίες σχετικά με τη χρήση της εντολής αυτής.

[NOTE]
====
Όταν δημιουργείτε το [.filename]#/etc/sliphome/slip.login# και το [.filename]#/etc/sliphome/slip.logout#, θα πρέπει να θέσετε το bit "εκτέλεσης" (π.χ. `chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout`), διαφορετικά η `sliplogin` δεν θα μπορεί να τα εκτελέσει.
====

===== Ρύθμιση του [.filename]#slip.logout#

Το [.filename]#/etc/sliphome/slip.logout# δεν είναι απόλυτα απαραίτητο (εκτός αν πρόκειται να υλοποιήσετε "proxy ARP"), αλλά αν σκοπεύετε να το δημιουργήσετε, μπορείτε να χρησιμοποιήσετε ως υπόδειγμα το παρακάτω απλό παράδειγμα:

[.programlisting]
....
#!/bin/sh -
#
#       slip.logout

#
# logout file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
....

Αν χρησιμοποιείτε "proxy ARP", θα θέλετε το [.filename]#/etc/sliphome/slip.logout# να διαγράφει την καταχώριση ARP του πελάτη SLIP:

[.programlisting]
....
#!/bin/sh -
#
#       @(#)slip.logout

#
# logout file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5
....

Η `arp -d $5` διαγράφει την καταχώριση ARP που προστέθηκε με την εκτέλεση του [.filename]#slip.login# του "proxy ARP", κατά την είσοδο του πελάτη SLIP.

Πρέπει να το επαναλάβουμε άλλη μια φορά: Βεβαιωθείτε ότι το [.filename]#/etc/sliphome/slip.logout# έχει οριστεί ως εκτελέσιμο μετά την δημιουργία του (π.χ., `chmod 755 /etc/sliphome/slip.logout`).

==== Παράγοντες που Πρέπει να Λάβετε Υπόψη σας στη Δρομολόγηση

Αν δεν χρησιμοποιείτε την μέθοδο "proxy ARP" για να δρομολογείτε πακέτα μεταξύ των πελατών SLIP και του υπόλοιπου δικτύου σας (και ενδεχομένως και του Internet), θα πρέπει μάλλον να προσθέσετε στατικές διαδρομές προς τον πλησιέστερο σας προεπιλεγμένο δρομολογητή για να δρομολογείτε το υποδίκτυο των SLIP πελατών σας διαμέσου του εξυπηρετητή SLIP.

===== Στατικές Διαδρομές

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