Monday, December 31, 2012

Ανακοίνωση Κυκλοφορίας: FreeBSD 9.1-RELEASE


Στις 30/12/2012, το FreeBSD Project ανακοίνωσε επίσημα την κυκλοφορία της έκδοσης 9.1-RELEASE. Το 9.1-RELEASE έρχεται να βελτιώσει με διορθώσεις και νέα χαρακτηριστικά το πολύ καλό 9.0-RELEASE. Mπορείτε να δείτε τα νέα χαρακτηριστικά του στη σχετική ανακοίνωση:

FreeBSD 9.1 Release Announcement

Μπορείτε να κατεβάσετε οποιαδήποτε διαθέσιμη έκδοση του FreeBSD από κάποιο από τα πολλά mirror sites. To 9.1-RELEASE έχει ήδη εμφανιστεί στους FTP servers μεγάλων ελληνικών ISPs.

Διαβάστε άρθρα σχετικά με το λειτουργικό ή κατεβάστε έτοιμο VirtualBox image με xfce desktop από το site του περιοδικού deltaHacker.

Τέλος, μην παραλείψετε να επισκεφθείτε την Δικτυακή Τοποθεσία της Ελληνικής Κοινότητας FreeBSD

Kαλή εγκατάσταση!

Friday, December 28, 2012

DHCP και Dynamic DNS Updates

Σε παλιότερο μας άρθρο είχαμε συζητήσει τη δημιουργία ενός DHCP server για την απόδοση διευθύνσεων και ρυθμίσεων δικτύου στα client μηχανήματα του δικτύου μας. Σε άλλο μας άρθρο είχαμε συζητήσει τη δημιουργία ενός DNS Server κατάλληλο για σχολικά εργαστήρια - αλλά γιατί όχι και για το οικιακό ή εταιρικό σας δίκτυο. Μάλιστα του είχαμε φτιάξει και μια ωραία... μαύρη τρύπα για να κόψουμε κάποιες διευθύνσεις.

Αν τώρα καταφέρουμε τον DHCP server μας να ενημερώνει το DNS κάθε φορά που αποδίδει μια νέα διεύθυνση (δημιουργεί / τροποποιεί ένα lease) θα έχουμε πετύχει το τέλειο. Πάμε να δούμε πως!

Το Σενάριο

Σε ένα δίκτυο έχετε ένα FreeBSD server με υπηρεσίες DHCP & DNS. Τα client μηχανήματα παίρνουν δυναμικές διευθύνσεις (και λοιπές ρυθμίσεις δικτύου) από τον DHCP server. Θέλετε να μπορείτε ανά πάσα στιγμή να έχετε πρόσβαση στα μηχανήματα αυτά από οποιοδήποτε άλλο μηχάνημα χρησιμοποιώντας το όνομα τους και όχι το IP τους - που έτσι και αλλιώς δεν ξέρετε.

Παράδειγμα: Το μηχάνημα workstation01.lab1.local πήρε χθες δυναμική IP 192.168.0.33. Μια βδομάδα μετά, πήρε την 192.168.0.24. Οι διευθύνσεις είναι αδιάφορες: Θέλουμε να μπορούμε να αναφερθούμε σε αυτό γράφοντας κάτι σαν:

# ping workstation01.lab1.local

Είναι φανερό, ότι ο DHCP server θα πρέπει να ενημερώνει τον DNS: Να δημιουργεί εγγραφές για νέα μηχανήματα της ζώνης αλλά και να ανανεώνει υπάρχουσες. Καλώς ήλθατε στα dynamic DNS updates! Για το παράδειγμα μας θα υποθέσουμε οτι ο DNS/DHCP server εκτελούνται στο ίδιο μηχάνημα με IP 192.168.0.1

Γενικές γνώσεις

Αν ψάξετε λίγο το αρχείο σας /etc/named.conf, θα βρείτε κάτι σαν το παρακάτω για τις ζώνες σας:

zone "lab1.local" {
        type master;
        file "/etc/namedb/master/lab1.local.db";
};

zone "0.168.192.in-addr.arpa" {
       type master;
       file "/etc/namedb/master/0.168.192.in-addr.arpa";
};

Παρατηρήστε ότι τα αρχεία αυτά βρίσκονται στον υποκατάλογο master στον οποίο ο χρήστης bind (με τα δικαιώματα του οποίου εκτελείται ο DNS server στο FreeBSD) δεν έχει δικαιώματα εγγραφής. Άρα ακόμα και αν στείλετε με κάποιο τρόπο μήνυμα "update" στον server, δεν θα μπορέσει να γράψει κάτι σε αυτό τον κατάλογο.

Μη βιαστείτε να αλλάξετε τα δικαιώματα: Αν αλλάξετε το χρήστη/group του καταλόγου σε bind:wheel, το bind θα τα αλλάξει ξανά στην επόμενη εκκίνηση της υπηρεσίας και θα δείτε και το παρακάτω μήνυμα:

Stopping named.
Waiting for PIDS: 6707.
etc/namedb/master changed
 user expected 0 found 53 modified
Starting named.

Το οποίο σε απλά ελληνικά σημαίνει: "μη πειράζετε τα δικαιώματα σε αυτό τον κατάλογο!". Και τι πρέπει να κάνουμε; Μα πολύ απλά. Θα μεταφέρετε τα αρχεία στον κατάλογο dynamic. Γιατί εκεί θα γίνονται οι δυναμικές ανανεώσεις και o bind έχει την κατάλληλη πρόσβαση.

# service named stop
# cd /etc/namedb/master
# mv lab1.local.db   ../dynamic
# mv 0.168.192.in-addr.arpa   ../dynamic

Και πριν επανεκκίνησετε, φυσικά θα αλλάξετε και τις καταχωρίσεις ώστε να δείχνουν στον κατάλογο dynamic:

zone "lab1.local" {
        type master;
        file "/etc/namedb/dynamic/lab1.local.db";
};

zone "0.168.192.in-addr.arpa" {
       type master;
       file "/etc/namedb/dynamic/0.168.192.in-addr.arpa";
};

Μπορείτε τώρα να επανεκκινήσετε την υπηρεσία όση ώρα θα ψάχνετε πως γίνεται το dynamic DNS update από τον DHCP server. Όχι τίποτα, άλλο μη γκρινιάζουν και οι χρήστες που δεν θα έχουν δίκτυο στο μεταξύ :)

# service named start

Δημιουργία... μυστικών

Για να γίνεται το DNS update, θα πρέπει ο DHCP server να στέλνει το κατάλληλο μήνυμα στον DNS κάθε φορά που απαιτείται να δημιουργηθεί ή να τροποποιηθεί μια εγγραφή. Όμως δεν μπορούμε να αφήσουμε τον DNS να δέχεται updates από παντού. Οι εποχές είναι πονηρές! Πρέπει να δημιουργήσουμε ένα μυστικό κλειδί που θα γνωρίζουν ο DNS και ο DHCP για να συννενοούνται:

# dnssec-keygen -a hmac-md5 -b 128 -n USER dhcpupdatekey
Kdhcpupdatekey.+157+10817

Δείτε το περιεχόμενο του αρχείου με κατάληξη .key που δημιουργήθηκε:

# more Kdhcpupdatekey.+157+10817.key 
dhcpupdatekey. IN KEY 0 3 157 dw5akl5zJw8Rc/8za61TLA==

Το κλειδί που θέλετε είναι αυτό το τελευταίο πεδίο:

dw5akl5zJw8Rc/8za61TLA==

Τροποποιήστε το /etc/named.conf όπως φαίνεται παρακάτω:

key "dhcpupdatekey" {
  algorithm hmac-md5;
  secret "dw5akl5zJw8Rc/8za61TLA==";
};

zone "lab1.local" {
        type master;
        file "/etc/namedb/dynamic/lab1.local.db";
        allow-update { key "dhcpupdatekey"; };
};

zone "0.168.192.in-addr.arpa" {
       type master;
       file "/etc/namedb/dynamic/0.168.192.in-addr.arpa";
       allow-update { key "dhcpupdatekey"; };
};

Κάντε restart το bind και για να πείσετε τον εαυτό σας ότι το dynamic update λειτουργεί, δοκιμάστε να του στείλετε ένα update χειροκίνητα. Επιλέξτε μια διεύθυνση που γνωρίζετε και περάστε την:

# service named restart
# nsupdate
> server 192.168.0.1
> key dhcpupdatekey dw5akl5zJw8Rc/8za61TLA==
> zone lab1.local
> update add workstation01.lab1.local. 600 IN A 192.168.0.24
> send
> quit

Δεν θα πρέπει να δείτε κανένα μήνυμα μετά το send. Μπορείτε να επιβεβαιώσετε την εγγραφή τρέχοντας την nslookup:

# nslookup
> workstation01.lab1.local

Server:  192.168.0.1
Address: 192.168.0.1#53

Name:  workstation01.lab1.local
Address: 192.168.0.24
> exit

Αφού λειτουργεί, δεν μένει παρά να βάλουμε τον DHCP να κάνει τη δουλειά που κάναμε εμείς χειροκίνητα! Πάμε λοιπόν να επεξεργαστούμε το /usr/local/etc/dhcpd.conf

Αλλαγή του dhcpd.conf

Και εδώ πρόκειται για πολύ απλές και αναμενόμενες αλλαγές. Προσθέτουμε το ίδιο μυστικό κλειδί (προσέξτε εδώ χωρίς εισαγωγικά!):

key dhcpupdatekey {
  algorithm hmac-md5;
  secret dw5akl5zJw8Rc/8za61TLA==;
}

Προσθέτουμε τη γραμμή που ενημερώνει το DHCP server ότι θα κάνει πλέον dynamic dns updates:

ddns-update-style interim;

Και τέλος τα στοιχεία για τις ζώνες που θα ενημερώνονται:

zone lab1.local. {
  primary 192.168.0.1;
  key dhcpupdatekey;
}

zone 0.168.192.in-addr.arpa. {
  primary 192.168.0.1;
  key dhcpupdatekey;
}

Κάντε και μια επανεκκίνηση το DHCP σας και είμαστε έτοιμοι:

# service isc-dhcpd restart

Μπορείτε να διαβάσετε και αυτό το σχετικό άρθρο με το οποίο ξεκινήσαμε και εμείς τις αναζητήσεις μας.

Ελπίζουμε να περάσετε ένα ευχάριστο χειμωνιάτικο απόγευμα. Καλές γιορτές!