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

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

29.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 είναι αυτός που προσφέρεται με τη διανομή του ISC.

29.5.2 Τι καλύπτει αυτή η ενότητα

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

29.5.3 Πως Δουλεύει;

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

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

29.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-dhcp3-server στη Συλλογή των Ports. Το port αυτό περιλαμβάνει τον εξυπηρετητή DHCP του ISC και τεκμηρίωση.

29.5.5 Αρχεία

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

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

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

29.5.7.1 Τι περιλαμβάνει αυτή η ενότητα

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

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

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

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

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

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

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

29.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) αναζήτησης που παρέχεται στους πελάτες. Δείτε τη σελίδα resolv.conf(5) για περισσότερες πληροφορίες σχετικά με το θέμα.
(2)
Αυτή η επιλογή ορίζει τη λίστα εξυπηρετητών DNS - διαχωρίζονται με κόμμα - που οι πελάτες θα πρέπει να χρησιμοποιούν.
(3)
Η μάσκα (netmask) που παρέχεται στους πελάτες.
(4)
Ένας πελάτης μπορεί να ζητήσει μία συγκεκριμένη χρονική διάρκεια κατά την οποία η μίσθωση θα είναι έγκυρη. Σε διαφορετική περίπτωση ο εξυπηρετητής θα μισθώσει για αυτή την προεπιλεγμένη χρονική περίοδο (σε δευτερόλεπτα).
(5)
Αυτός είναι ο μέγιστος επιτρεπτός χρόνος εκμίσθωσης του εξυπηρετητή. Ένας πελάτης μπορεί να αιτηθεί μεγαλύτερη χρονική εκμίσθωση, αλλά θα έχει διάρκεια μόνο max-lease-time δευτερόλεπτα.
(6)
Αυτή η επιλογή προσδιορίζει αν ο εξυπηρετητής DHCP θα πρέπει να επιχειρεί να ενημερώσει το DNS κάθε φορά που αιτείται ή γίνεται αποδεκτή μία εκμίσθωση. Στην υλοποίηση του ISC, αυτή η επιλογή απαιτείται.
(7)
Εδώ ορίζεται ποιες διευθύνσεις IP από το pool θα πρέπει να χρησιμοποιούνται αποκλειστικά για τη μίσθωση πελατών. Οι διευθύνσεις IP που αναφέρονται, καθώς και οι ενδιάμεσες, είναι προς χρήση για τους πελάτες .
(8)
Δηλώνει το προεπιλεγμένο gateway που παρέχεται στους πελάτες.
(9)
Η διεύθυνση MAC του hardware ενός κόμβου (ώστε ο εξυπηρετητής DHCP να μπορεί να αναγνωρίζει τον κόμβο που αποστέλλει το αίτημα).
(10)
Προσδιορίζει πως ο συγκεκριμένος κόμβος πρέπει να έχει πάντα την ίδια διεύθυνση IP. Να σημειωθεί πως η χρήση ενός ονόματος κόμβου εδώ είναι σωστή, διότι ο εξυπηρετητής DHCP θα αναλύσει μόνος του το όνομα κόμβου, πριν επιστρέψει την πληροφορία μίσθωσης.

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

dhcpd_enable="YES"
dhcpd_ifaces="dc0"

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

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

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

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

29.5.7.4 Αρχεία

  • /usr/local/sbin/dhcpd

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

  • /usr/local/etc/dhcpd.conf

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

  • /var/db/dhcpd.leases

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

  • /usr/local/sbin/dhcrelay

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

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

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