Εδώ μαθαίνουμε πως δουλεύουν οι ρυθμίσεις - θα πρέπει να το γνωρίζετε πριν μάθουμε για την δικτύωση με μονάδες.
8.1
2009-02-12
Προχωρημένες Ρυθμίσεις
Η μεταβλητή config_eth0 είναι η καρδιά των ρυθμίσεων μιας διεπαφής. Είναι μια λίστα υψηλού επιπέδου οδηγιών για την ρύθμιση της διεπαφής (την eth0 στη συγκεκριμένη περίπτωση). Κάθε εντολή σε αυτή τη λίστα οδηγιών εκτελείται με την σειρά. Η διεπαφή θεωρείτε OK αν τουλάχιστον μια εντολή δουλεύει.
Ορίστε μια λίστα από ενσωματωμένες οδηγίες.
Εντολή |
Περιγραφή |
null
Μην κάνεις τίποτα
noop
Αν η διεπαφή είναι ενεργοποιημένη και υπάρχει μια διεύθυνση τότε ματαίωσε την ρύθμιση επιτυχώς
μια IPv4 ή IPv6 διεύθυνση
Πρόσθεσε την διεύθυνση στη διεπαφή
dhcp, adsl ή apipa (ή μια προσαρμοσμένη εντολή από μονάδα 3ου κατασκευαστή)
Εκτέλεσε την μονάδα που παρέχει την εντολή. Για παράδειγμα το dhcp θα εκτελέσει μία μονάδα που θα παρέχει DHCP η οποία μπορεί να είναι μια από τις dhcpcd, dhclient ή pump.
Αν μια εντολή αποτύχει, μπορείτε να ορίσετε μια εναλλακτική εντολή. Η εναλλακτική πρέπει να ταιριάζει στην δομή της ρύθμισης ακριβώς.
Μπορείτε να συνδέσετε αλυσιδωτά αυτές τις εντολές μεταξύ τους. Ορίστε κάποια παραδείγματα πραγματικής χρήσης.
# Προσθέτοντας τρεις IPv4 διευθύνσεις
config_eth0=(
"192.168.0.2/24"
"192.168.0.3/24"
"192.168.0.4/24"
)
# Προσθέτοντας μια IPv4 διεύθυνση και δύο IPv6 διευθύνσεις
config_eth0=(
"192.168.0.2/24"
"4321:0:1:2:3:4:567:89ab"
"4321:0:1:2:3:4:567:89ac"
)
# Κράτησε την διεύθυνση που έχει οριστεί από τον πυρήνα, εκτός αν η διεπαφή
# απενεργοποιηθεί οπότε ανάθεσε άλλη μέσω DHCP. Αν το DHCP αποτύχει τότε πρόσθεσε
# μια στατική διεύθυνση καθορισμένη από το APIPA
config_eth0=(
"noop"
"dhcp"
)
fallback_eth0=(
"null"
"apipa"
)
Όταν χρησιμοποιείται η μονάδα ifconfig και προστίθενται περισσότερες από μια διευθύνσεις, ψευδώνυμα διεπαφών δημιουργούνται για κάθε επιπλέον διεύθυνση. Οπότε με τα παραπάνω δύο παραδείγματα θα πάρετε τις διεπαφές eth0, eth0:1 και eth0:2. Δεν μπορείτε να κάνετε τίποτα ιδιαίτερο με αυτές τις διεπαφές καθώς ο πυρήνας και τα άλλα προγράμματα θα χειρίζονται τα eth0:1 και eth0:2 ως eth0.
Η σειρά της εναλλακτικής είναι σημαντική! Αν δεν είχαμε ορίσει την null επιλογή τότε η εντολή apipa θα εκτελούνταν μόνο αν η εντολή noop αποτύγχανε.
Η APIPA και το DHCP αναλύονται αργότερα.
Εξαρτήσεις Δικτύου
Τα σενάρια αρχικοποίησης στο /etc/init.d μπορεί να εξαρτώνται σε συγκεκριμένες διεπαφές δικτύου ή απλά σε net. Το net μπορεί να οριστεί στο /etc/conf.d/rc να σημαίνει διαφορετικά πράγματα χρησιμοποιώντας την μεταβλητή RC_NET_STRICT_CHECKING.
Τιμή |
Περιγραφή |
none
Η υπηρεσία net θεωρείται πάντα ενεργοποιημένη
no
Αυτό βασικά σημαίνει ότι τουλάχιστον μία υπηρεσία net.* εκτός της net.lo πρέπει να είναι ενεργοποιημένη. Αυτό μπορεί να χρησιμοποιηθεί από χρήστες φορητών που έχουν WIFI και στατικό NIC, και θέλουν μόνο ένα ενεργοποιημένο κάθε στιγμή για να φαίνεται η υπηρεσία net ως ενεργοποιημένη.
lo
Αυτή είναι ίδια με την επιλογή no, αλλά το net.lo μετράει επίσης. Αυτό θα ήταν χρήσιμο σε ανθρώπους που δεν ενδιαφέρονται για κάποια συγκεκριμένη διεπαφή να είναι ενεργοποιημένη κατά την εκκίνηση.
yes
Για αυτήν ΟΛΕΣ οι διεπαφές δικτύου θα ΠΡΕΠΕΙ να είναι ενεργοποιημένες για την υπηρεσία net να θεωρείται ενεργοποιημένη.
Τι γίνεται όμως με την net.br0 που εξαρτάται από την net.eth0 και την net.eth1; Η net.eth1 μπορεί να είναι μια ασύρματη ή PPP συσκευή που χρειάζεται ρύθμιση πριν να μπορεί να προστεθεί στην γέφυρα. Αυτό δεν μπορεί να γίνει στο /etc/init.d/net.br0 καθώς αυτό είναι συμβολικός δεσμός στο net.lo.
Η απάντηση είναι να φτιάξεις την δική σου συνάρτηση depend() μέσα στο /etc/conf.d/net.
# Μπορείτε να χρησιμοποιήσετε οποιαδήποτε εξάρτηση (use, after, before) όπως
# εμφανίζονται στα τρέχοντα σενάρια
depend_br0() {
need net.eth0 net.eth1
}
Για μια περισσότερο λεπτομερή συζήτηση περί εξαρτήσεων, συμβουλευτείτε την ενότητα Γράφοντας Σενάρια Αρχικοποίησης στο εγχειρίδιο χρήσης Gentoo.
Ονόματα μεταβλητών και τιμές
Τα ονόματα μεταβλητών είναι δυναμικά. Συνήθως ακολουθούν την δομή μεταβλητή_${διαπαφή|mac|essid|apmac}. Για παράδειγμα, η μεταβλητή dhcpcd_eth0 κρατά την τιμή για τις επιλογές του dhcpcd για την eth0 και η dhcpcd_essid κρατά την τιμή για τις επιλογές του dhcpcd όταν οποιαδήποτε διπαφή συνδεθεί στο ESSID "essid".
Ωστόσο, δεν υπάρχει αυστηρός και γρήγορος κανόνας ο οποίος να ορίζει ότι τα ονόματα των διεπαφών πρέπει να είναι ethx. Στην πραγματικότητα, πολλές ασύρματες διεπαφές έχουν ονόματα όπως wlanx, rax όπως και ethx. Επίσης, ορισμένες διεπαφές που έχουν οριστεί από τον χρήστη όπως γέφυρες μπορεί να τους έχει δωθεί οποιοδήποτε όνομα, όπως για παράδειγμα foo. Για να κάνουμε την ζωή πιο ενδιαφέρουσα, τα ασύρματα Σημεία Πρόσβασης μπορεί να έχουν ονόματα με μη αλφαριθμητικούς χαρακτήρες μέσα τους - αυτό είναι σημαντικό γιατί μπορείτε να ρυθμίσετε τις παραμέτρους δικτύου ανά ESSID.
Το μειωνέκτημα σε όλο αυτό είναι ότι το Gentoo χρησιμοποιεί μεταβλητές του bash για δικτύωση - και το bash δεν μπορεί να χρησιμοποιήσει τίποτε εκτός των Αγγλικών αλφαριθμητικών. Για να ξεπεράσουμε αυτόν τον περιορισμό αλλάζουμε κάθε χαρακτήρα που δεν είναι Αγγλικό αλφαριθμητικό σε έναν χαρακτήρα _.
Ένα ακόμη μειωνέκτημα του bash είναι το περιεχόμενο των μεταβλητών - ορισμένοι χαρακτήρες δεν μπορούν να χρησιμοποιηθούν αυτόνομοι. Για να χρησιμοποιηθούν πρέπει να συνοδεύονται από τον χαρακτήρα \ μπροστά τους. Η παρακάτω λίστα δίνει τους χαρακτήρες που πρέπει να συνοδεύονται με αυτόν τον τρόπο: ", ' και \.
Σε αυτό το παράδειγμα χρησιμοποιούμε ασύρματο ESSID καθώς μπορεί να περιέχουν το μεγαλύτερο εύρος χαρακτήρων. Θα χρησιμοποιήσουμε το ESSID My "\ NET:
(Αυτό δεν δουλεύει, αλλά το όνομα τομέα είναι έγκυρο)
dns_domain_My____NET="My \"\\ NET"
(Το παραπάνω ορίζει το dns τομέα σε My "\ NET όταν μια ασύρματη κάρτα
συνδέεται σε ένα AP του οποίου το ESSID είναι My "\ NET)