Friday, April 15, 2011

DHCP και άλλες ιστορίες!

Πριν λίγες μέρες και χωρίς καμιά προειδοποίηση, το Cisco router του σχολείου μας άφησε χρόνους. Για την ακρίβεια, έκανε το πιο εκνευριστικό πράγμα που μπορεί να κάνει μια συσκευή: άρχισε να δουλεύει εντελώς αναξιόπιστα. Και φυσικά χάλασε στη χειρότερη χρονική στιγμή, καθώς το σχολείο πλησιάζει στις εξετάσεις και διακινούνται πολλά υπηρεσιακά έγγραφα.

Μια γρήγορη κλήση στο ΠΛΗΝΕΤ προκειμένου να δούμε πόσο γρήγορα μπορούμε να κάνουμε κάτι για αυτό χωρίς να χρειαστεί να αγοράσουμε router. Ευτυχώς, μάθαμε ότι μπορούμε να χρησιμοποιήσουμε ένα κοινό router και το λογαριασμό του σχολείου για username/pass (τα Cisco προγραμματίζονται από την υπηρεσία υποστήριξης του ΠΣΔ και έχουν άλλους, άγνωστους σε μας κωδικούς). Γρήγορα εντόπισα το μικρό speedtouch που μας είχε αφήσει ο ΟΤΕ και οι ρυθμίσεις έγιναν, ουσιαστικά όμοιες με το Cisco.

Τα σχολικά routers έχουν τυπικά ενεργοποιημένο DHCP server και ορισμένες φορές αυτό δημιουργεί πρόβλημα σε μας που θέλουμε να... σκαλίσουμε το δίκτυο μας! Από την άλλη βέβαια είναι εύχρηστο να μπορεί καθένας να συνδέει ένα μηχάνημα και να μη μπλέκει με άλλες ρυθμίσεις. Το θέμα λοιπόν δεν είναι να απενεργοποιήσουμε το DHCP, αλλά να το φέρουμε στα μέτρα μας.

Ενας DHCP Server, αλλά ποιος;



Οι DHCP servers που ενσωματώνονται στα routers είναι υπερβολικά απλοί και με λίγες επιλογές. Μετά τη γρήγορη δοκιμή, αποφάσισα ότι μπορεί αυτή η λειτουργία να μεταφερθεί στο FreeBSD server μας. Έτσι θα έχουμε τα εξής πλεονεκτήματα:


  • Πολύ περισσότερες επιλογές ρυθμίσεων

  • Δυνατότητα να στείλουμε και άλλες χρήσιμες προσαρμοσμένες ρυθμίσεις (DNS, gateway κλπ)

  • Δυνατότητα αποστολή συγκεκριμένων ρυθμίσεων σε ειδικά μηχανήματα με βάση το MAC address



Τα παραπάνω είναι αρκετά εύκολα:

- Εγκαθιστούμε το port net/isc-dhcp41-server

- Χρησιμοποιούμε ένα αρχείο ρυθμίσεων όπως το παρακάτω:

option domain-name "lab1.local";
option domain-name-servers 10.14.28.10, 10.14.28.251;

default-lease-time 3600;
max-lease-time 86400;

authoritative;

ddns-update-style none;

subnet 10.14.28.0 netmask 255.255.255.0 {
range 10.14.28.129 10.14.28.250;
option routers 10.14.28.1;
}

host debian12 {
hardware ethernet 00:0e:a6:0a:d3:87;
fixed-address 10.14.28.128;
option routers 10.14.28.1;
}


To debian12 είναι σημαντικό να έχει πάντοτε την ίδια διεύθυνση. Αυτό επιτυγχάνεται με την οδηγία fixed-address και η αναγνώριση του μηχανήματος μέσω του MAC address, μέσω της oδηγίας hardware ethernet.

Το αρχείο ρυθμίσεων ορίζει δύο DNS servers, τον 10.14.28.10 και τον 10.14.28.251. Πρόκειται φυσικά για τους δύο FreeBSD servers του σχολείου που μεταξύ άλλων εκτελούν και το BIND.

Το αρχείο ρυθμίσεων αποθηκεύεται στη θέση:

/usr/local/etc/dhcpd.conf

Τα leases που παρέχει ο DHCP server μπορούμε να τα δούμε στον κατάλογο:

/var/db/dhcpd/

Το μόνο που χρειάζεται για να ενεργοποιήσουμε τον DHCP server είναι να προσθέσουμε τις παρακάτω γραμμές στο /etc/rc.conf:

dhcpd_enable="YES"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_ifaces="ale0"


Χρησιμοποιώντας φυσικά το σωστό για την περίπτωση μας όνομα interface (εδώ βέβαια το ale0). Τέλος ενεργοποιούμε την υπηρεσία:


# service isc-dhcpd start


και συνεχίζουμε να ψάχνουμε για άλλα ενδιαφέροντα πράγματα για τα επόμενα απογεύματα μας!

4 comments:

Marios Zindilis said...

Respect, και στους σελιδοδείκτες ολοταχώς για γρήγορη αναφορά στο μέλλον!

Καλτσίδης Χρήστος said...

Ρίξε μια ματιά και σε mikrotik πλευρά (π.χ. Routerboard 750). Φτηνή και αξιόπιστη λύση, ειδικά τώρα που υπάρχει "στενότητα" στα σχολεία. ;)

Manolis Kiagias said...

Ε βασικά η δική μου λύση ήταν zero cost ;) Αν για κάποιο λόγο χρειαστεί να αλλάξουμε βέβαια θα πάρω κάτι που να μου αρέσει :)

pkt said...

Καλή περίπτωση είναι και ο dnsmasq (λογικά θα υπάρχει και στο freebsd). Μικρός, ευέλικτος, απλό config file και κάνει όλα όσα περιέγραψες και παραπάνω.

Επίσης αν θέλετε και PXE στο gPXE (τώρα iPXE) υπάρχει σχετικός κώδικας ώστε να μη χρειάζεται ο dhcp server για την εύρεση του PXE server. Αυτή η λειτουργικότητα μάλιστα προστέθηκε εξαιτίας των cisco routers των ελληνικών σχολείων ...