30.5 Πρωτόκολλο Δυναμικών Ρυθμίσεων Κόμβων (DHCP)

Συγγραφή του Greg Sutter.

30.5.1 Τι είναι το DHCP?

Το DHCP, Dynamic Host Configuration Protocol, περιγράφει τους τρόπους με τους οποίους ένα σύστημα μπορεί να συνδεθεί σε ένα δίκτυο και να λάβει τις απαραίτητες πληροφορίες για την επικοινωνία με αυτό. Πριν την έκδοση 6.0, όλες οι εκδόσεις του FreeBSD χρησιμοποιούσαν την υλοποίηση πελάτη DHCP (dhclient(8)) του ISC (Internet Software Consortium). Οι νεότερες εκδόσεις χρησιμοποιούν τον dhclient του OpenBSD που προέρχεται από την έκδοση OpenBSD 3.7. Όλες οι πληροφορίες που θα βρείτε εδώ σχετικά με τον dhclient, καλύπτουν εξίσου τους πελάτες DHCP του ISC και του OpenBSD. Ο εξυπηρετητής DHCP του FreeBSD είναι ο ίδιος που περιλαμβάνεται στην διανομή του ISC.

30.5.2 Τι Kαλύπτει Aυτή η Eνότητα

Αυτή η ενότητα περιγράφει τα μέρη και των δύο τύπων πελατών DHCP (του ISC και του OpenBSD) καθώς και τα μέρη του εξυπηρετητή DHCP του ISC. Το λογισμικό πελάτη, dhclient, προσφέρεται ενσωματωμένο στο FreeBSD, ενώ το κομμάτι του εξυπηρετητή διατίθεται από το port net/isc-dhcp31-server. Οι σελίδες manual dhclient(8), dhcp-options(5) και dhclient.conf(5) μαζί με τις παρακάτω αναφορές αποτελούν πολύ χρήσιμες πηγές.

30.5.3 Πως Λειτουργεί;

Όταν ο dhclient, ο πελάτης DHCP, εκτελείται στο μηχάνημα πελάτη, ξεκινάει η εκπομπή αιτημάτων για τη συλλογή των πληροφοριών ρύθμισης. Από προεπιλογή, αυτά τα αιτήματα χρήσιμοποιούν την UDP πόρτα 68. Ο εξυπηρετητής θα απαντήσει στην UDP 67, προσφέροντας στον πελάτη μία διεύθυνση IP και άλλες σχετικές δικτυακές πληροφορίες όπως τη μάσκα (netmask), τον δρομολογητή (router), και τους εξυπηρετητές DNS. Όλες αυτές οι πληροφορίες διατίθενται με τη μορφή DHCP «μίσθωσης (lease)» και ισχύουν μόνο για κάποιο συγκεκριμένο χρονικό διάστημα (το οποίο ρυθμίζεται από το διαχειριστή του εξυπηρετητή DHCP). Με αυτό τον τρόπο ανακυκλώνονται αυτόματα οι παλιές διευθύνσεις IP πελατών που δεν συνδέονται πια στο δίκτυο.

Οι πελάτες DHCP μπορούν να λάβουν σημαντικές πληροφορίες από τον εξυπηρετητή. Για μια πλήρη λίστα συμβουλευτείτε την dhcp-options(5).

30.5.4 Ενσωμάτωση στο FreeBSD

Το FreeBSD ενσωματώνει πλήρως τον πελάτη DHCP του ISC ή του OpenBSD, dhclient (ανάλογα με την έκδοση του FreeBSD που έχετε). Η υποστήριξη πελατών DHCP παρέχεται τόσο στο σύστημα εγκατάστασης όσο και στο βασικό σύστημα. Έτσι δεν χρειάζεται να γνωρίζετε λεπτομέρειες για τις ρυθμίσεις του δικτύου που διαθέτει τον εξυπηρετητή DHCP. Ο πελάτης dhclient συμπεριλαμβάνεται σε όλες τις διανομές FreeBSD από την 3.2 και μετά.

Το DHCP υποστηρίζεται από το sysinstall. Όταν ρυθμίζετε μία διεπαφή δικτύου μέσα από το sysinstall, η δεύτερη ερώτηση που θα σας γίνει είναι: «Do you want to try DHCP configuration of the interface?». Εάν συμφωνήσετε, θα εκτελεστεί το dhclient, και αν η διαδικασία είναι επιτυχής, θα συμπληρώσει αυτόματα τα πεδία με τις κατάλληλες ρυθμίσεις δικτύου.

Υπάρχουν δύο πράγματα που πρέπει να κάνετε για να χρησιμοποιήσετε το DHCP κατά την εκκίνηση του συστήματος σας:

Ο εξυπηρετητής DHCP, dhcpd, περιέχεται ως μέρος του port net/isc-dhcp31-server στη Συλλογή των Ports. Το port αυτό περιλαμβάνει τον εξυπηρετητή DHCP του ISC και την τεκμηρίωση του.

30.5.5 Αρχεία

30.5.6 Περαιτέρω Ανάγνωση

Το πρωτόκολλο DHCP περιγράφεται πλήρως στο RFC 2131. Μια επιπλέον πηγή πληροφόρησης υπάρχει στη σελίδα http://www.dhcp.org/.

30.5.7 Εγκατάσταση και Ρύθμιση Ενός Εξυπηρετητή DHCP

30.5.7.1 Τι Περιλαμβάνει Αυτή η Ενότητα

Αυτή η ενότητα παρέχει πληροφορίες σχετικά με τις ρυθμίσεις ενός συστήματος FreeBSD ώστε να λειτουργεί ως εξυπηρετητής DHCP χρησιμοποιώντας την υλοποίηση εξυπηρετητών DHCP του ISC (Internet Software Consortium).

Ο εξυπηρετητής δεν παρέχεται σαν μέρος του FreeBSD, επομένως θα πρέπει να τον εγκαταστήσετε από το port net/isc-dhcp31-server για να μπορείτε να χρησιμοποιήσετε την υπηρεσία. Δείτε την ενότητα Κεφάλαιο 5 για περισσότερες πληροφορίες σχετικά με τη χρήση της Συλλογής των Ports.

30.5.7.2 Εγκατάσταση Εξυπηρετητή DHCP

Για να ρυθμίσετε το FreeBSD σύστημα σας να λειτουργεί ως εξυπηρετητής DHCP, θα χρειαστεί να επιβεβαιώσετε ότι ο πυρήνας σας περιέχει τη συσκευή bpf(4). Για να γίνει αυτό, προσθέστε device bpf στο αρχείο ρυθμίσεων του πυρήνα και επαναμεταγλωττίστε τον. Για περισσότερες πληροφορίες σχετικά με τη δημιουργία προσαρμοσμένου πυρήνα, δείτε το Κεφάλαιο 9.

Η συσκευή bpf είναι ήδη μέρος του πυρήνα GENERIC που παρέχεται με το FreeBSD, επομένως δε θα χρειαστεί να φτιάξετε δικό σας προσαρμοσμένο πυρήνα ειδικά για να λειτουργήσει το DHCP.

Σημείωση: Για όσους ενδιαφέρονται ιδιαίτερα για θέματα ασφαλείας, θα πρέπει να σημειωθεί ότι η bpf είναι η συσκευή που επιτρέπει στους sniffers πακέτων να δουλέψουν κανονικά (αν και προγράμματα αυτού του τύπου χρειάζονται προνομιακή πρόσβαση). Η bpf απαιτείται για να γίνει χρήση του DHCP, αλλά εάν βρίσκεστε σε πολύ ευαίσθητο περιβάλλον σχετικά με την ασφάλεια, πιθανώς να μην πρέπει να προσθέσετε την bpf στον πυρήνα σας αν απλώς σκοπεύετε να να χρησιμοποιήσετε μελλοντικά το DHCP.

Το επόμενο πράγμα που θα χρειαστεί να κάνετε είναι να επεξεργαστείτε το υπόδειγμα του dhcpd.conf που έχει εγκατασταθεί από το port net/isc-dhcp31-server. Από προεπιλογή, το αρχείο αυτό βρίσκεται στο /usr/local/etc/dhcpd.conf.sample, και θα πρέπει να το αντιγράψετε στο /usr/local/etc/dhcpd.conf πριν ξεκινήσετε να κάνετε τις αλλαγές σας.

30.5.7.3 Ρυθμίσεις Εξυπηρετητή DHCP

Το dhcpd.conf περιέχει δηλώσεις για τα subnets και τα hosts και ίσως να είναι ευκολότερο να το εξηγήσουμε παρουσιάζοντας ένα παράδειγμα :

option domain-name "example.com";(1)
option domain-name-servers 192.168.4.100;(2)
option subnet-mask 255.255.255.0;(3)

default-lease-time 3600;(4)
max-lease-time 86400;(5)
ddns-update-style none;(6)

subnet 192.168.4.0 netmask 255.255.255.0 {
  range 192.168.4.129 192.168.4.254;(7)
  option routers 192.168.4.1;(8)
}

host mailhost {
  hardware ethernet 02:03:04:05:06:07;(9)
  fixed-address mailhost.example.com;(10)
}
(1)
Αυτή η επιλογή προσδιορίζει το χώρο (domain) που παρέχεται στους πελάτες ως προεπιλεγμένος χώρος αναζήτησης. Δείτε τη σελίδα manual resolv.conf(5) για περισσότερες πληροφορίες σχετικά με αυτό το θέμα.
(2)
Αυτή η επιλογή ορίζει τη λίστα εξυπηρετητών DNS - διαχωρίζονται μεταξύ τους με κόμμα - που θα πρέπει να χρησιμοποιούν οι πελάτες.
(3)
Η μάσκα (netmask) που παρέχεται στους πελάτες.
(4)
Ένας πελάτης μπορεί να ζητήσει μία συγκεκριμένη χρονική διάρκεια κατά την οποία θα είναι έγκυρη η μίσθωση. Σε διαφορετική περίπτωση, ο εξυπηρετητής παρέχει τον χρόνο μίσθωσης που καθορίζει αυτή η καταχώριση (σε δευτερόλεπτα).
(5)
Αυτός είναι ο μέγιστος επιτρεπτός χρόνος μίσθωσης του εξυπηρετητή. Αν ένας πελάτης αιτηθεί μεγαλύτερη διάρκεια, θα λάβει έγκυρη μίσθωση διάρκειας max-lease-time δευτερολέπτων.
(6)
Αυτή η επιλογή προσδιορίζει αν ο εξυπηρετητής DHCP θα πρέπει να επιχειρεί να ενημερώσει το DNS κάθε φορά που αιτείται ή γίνεται αποδεκτή μία εκμίσθωση. Η επιλογή αυτή απαιτείται στην υλοποίηση ΙSC του εξυπηρετητή.
(7)
Εδώ ορίζεται η περιοχή των διευθύνσεων IP (pool) που δεσμεύονται για να αποδοθούν στους πελάτες. Περιλαμβάνονται όλες οι ενδιάμεσες τιμές, καθώς και η αρχική και τελική που αναγράφονται.
(8)
Δηλώνει τη προεπιλεγμένη πύλη (gateway) που παρέχεται στους πελάτες.
(9)
Η διεύθυνση MAC ενός κόμβου (μέσω αυτής μπορεί ο εξυπηρετητής DHCP να αναγνωρίζει τον κόμβο που αποστέλλει το αίτημα).
(10)
Προσδιορίζει πως ο συγκεκριμένος κόμβος θα πρέπει πάντα να λαμβάνει την ίδια διεύθυνση IP. Να σημειωθεί πως η χρήση ονόματος κόμβου είναι σωστή σε αυτή την περίπτωση, καθώς ο εξυπηρετητής DHCP θα αναζητήσει την αντίστοιχη διεύθυνση πριν επιστρέψει την πληροφορία μίσθωσης.

Μετά την ολοκλήρωση των ρυθμίσεων του dhcpd.conf, θα πρέπει να ενεργοποιήσετε τον εξυπηρετητή DHCP στο /etc/rc.conf προσθέτοντας π.χ. τις γραμμές:

dhcpd_enable="YES"
dhcpd_ifaces="dc0"

Θα πρέπει να αντικαταστήσετε το όνομα διεπαφής dc0 με τη διεπαφή (ή διεπαφές, διαχωρίζοντας τις με κενά διαστήματα) στην οποία ο εξυπηρετητής DHCP θα λαμβάνει τα αιτήματα των πελατών.

Τέλος, μπορείτε να ξεκινήσετε τον εξυπηρετητή εκτελώντας την ακόλουθη εντολή:

# /usr/local/etc/rc.d/isc-dhcpd start

Σε περίπτωση που χρειαστεί μελλοντικά να κάνετε αλλαγές στις ρυθμίσεις του εξυπηρετητή σας, είναι σημαντικό να θυμάστε ότι η αποστολή σήματος SIGHUP στο dhcpd δεν ξαναφορτώνει τις ρυθμίσεις, όπως γίνεται με τους περισσότερους δαίμονες. Θα πρέπει να στείλετε το σήμα SIGTERM για να σταματήσει η διεργασία και έπειτα να εκτελέσετε την παραπάνω εντολή για να την ξεκινήσετε εκ νέου.

30.5.7.4 Αρχεία

  • /usr/local/sbin/dhcpd

    Το dhcpd είναι στατικό εκτελέσιμο και βρίσκεται στο /usr/local/sbin. Περισσότερες πληροφορίες για το dhcpd, θα βρείτε στη σελίδα βοήθειας dhcpd(8) που εγκαθίσταται από το port.

  • /usr/local/etc/dhcpd.conf

    Το dhcpd απαιτεί ένα αρχείο ρυθμίσεων, το /usr/local/etc/dhcpd.conf πριν ξεκινήσει να παρέχει υπηρεσίες στους πελάτες. Αυτό το αρχείο χρειάζεται να περιλαμβάνει όλες τις πληροφορίες που θα παρέχονται στους πελάτες, καθώς και πληροφορίες σχετικά με τη λειτουργία του εξυπηρετητή. Το αρχείο ρυθμίσεων περιγράφεται στην εγκατεστημένη - από το port - σελίδα manual dhcpd.conf(5).

  • /var/db/dhcpd.leases

    Ο εξυπηρετητής DHCP διατηρεί μια βάση δεδομένων με τις μισθώσεις που έχουν πραγματοποιηθεί σε αυτό αρχείο, το οποίο έχει μορφή αρχείου καταγραφής. Μπορείτε να διαβάσετε μια ελαφρώς εκτενέστερη περιγραφή στη σελίδα manual που εγκαταστάθηκε με το port, dhcpd.leases(5).

  • /usr/local/sbin/dhcrelay

    Το dhcrelay χρησιμοποιείται σε πιο προχωρημένες περιπτώσεις, όταν ο εξυπηρετητής DHCP προωθεί ένα αίτημα από ένα πελάτη σε έναν άλλο εξυπηρετητή DHCP διαφορετικού δικτύου. Αν χρειάζεστε αυτή τη δυνατότητα, εγκαταστήστε το port net/isc-dhcp31-relay. Η σελίδα manual dhcrelay(8) που συνοδεύει το port, περιέχει περισσότερες λεπτομέρειες.

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

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