Αλήθεια, τι γνωρίζετε για το DNS;

Κάπου πήρε το αυτί μου ότι οι λεγεώνες των Anonymous σκοπεύουν να “κλείσουν” το Internet επιτιθέμενοι στους κεντρικούς DNS Servers του. Δεν με απασχολούν ιδιαίτερα οι λεπτομέρειες της επίθεσης (αν κατάλαβα καλά θα δημιουργήσουν ένα άνευ προηγουμένου bottleneck δρομολογώντας έναν απύθμενο αριθμό DNS αιτήσεων στους συγκεκριμένους servers) και το κατά πόσο αυτό είναι εφικτό μένει να αποδειχθεί. Ένα ερώτημα όμως είναι: πόσο καλά γνωρίζουμε το Domain Name Service, μια υπηρεσία που όλοι καθημερινά χρησιμοποιούμε και η οποία αποτελεί θεμελιώδη λίθο του Internet;

 

Λίγη Ιστορία

Το DNS είναι μια υπηρεσία ονοματοδοσίας (naming service) σχεδιασμένη ώστε να μπορεί να χρησιμοποιηθεί σε διάφορες υλοποιήσεις. Παρά το γεγονός, λοιπόν, ότι, αρχιτεκτονικά, μπορεί να υποστηρίξει πολλά και διάφορα σύνολα ονομάτων (name spaces), στην πραγματικότητα το DNS χρησιμοποιείται κυρίως στο Internet και η βάση δεδομένων του (δηλαδή, το σύνολο των ονομάτων τα οποία χειρίζεται) αποτελείται από τα γνωστά μας domain names. Η ανακάλυψή του αποδίδεται στον Mockapetris το 1987 και περιγράφεται στο RFC 1034.

 

Υπηρεσίες Ονοματοδοσίας και Ονόματα

Όπως κάθε κατανεμημένο σύστημα (distributed system) έτσι και το Internet περιλαμβάνει μια υπηρεσία ονοματοδοσίας, το DNS. Γενικά μιλώντας, χρησιμοποιούμε ένα όνομα κάθε φορά που θέλουμε να αναφερθούμε σε κάποιο πόρο (resource), π.χ. σε κάποιο αρχείο, σε κάποιον υπολογιστή ή ακόμα και σε κάποιον άλλο χρήστη του (δια)δικτύου. Προφανώς, όσο πιο εύκολα μπορούμε να θυμηθούμε ένα όνομα τόσο πιο πετυχημένο θεωρείται αυτό. Στην περίπτωση του Internet, τα domain names και τα URLs που χρησιμοποιούμε καθημερινά είναι απείρως πιο πετυχημένα σε σχέση με τις διευθύνσεις IP. Η δουλειά λοιπόν του DNS είναι να αντιστοιχεί ονόματα με υπολογιστές και πιο συγκεκριμένα με τις διευθύνσεις IP αυτών.

Για να το πετύχει αυτό και δεδομένου ότι πρόκειται για ένα παγκόσμιο σύστημα, χρησιμοποιεί ένα ιεραρχικό σύνολο ονομάτων (hierarchical name space). Θεωρητικά, ένα σύνολο ονομάτων είναι η συλλογή όλων των έγκυρων ονομάτων που μπορεί να αναγνωρίσει ένα σύστημα ονοματοδοσίας. Το DNS για παράδειγμα δεν θεωρεί ως έγκυρο όνομα υπολογιστή το “…”. Το οτι τα domain names είναι δομημένα ιεραρχικά έχει επίσης μεγάλη σημασία. Πρώτον, τα ιεραρχικά σύνολο ονομάτων επιτρέπουν στο σύστημα να μεγαλώσει χωρίς φραγμούς (θεωρητικά, άπειρα) και δεύτερον επιτρέπουν στα ίδια ονόματα να χρησιμοποιηθούν ξανά και ξανά υπό διαφορετικό πλαίσιο (context). Έτσι, το όνομα “www” αναφέρεται αλλού όταν είναι μέρος του domain “www.yahoo.com” και αλλού όταν πληκτρολογήσουμε “www.google.com”.

Τέλος, το σύνολο ονομάτων του DNS είναι χωρισμένο τόσο γεωγραφικά (π.χ. uk, gr κοκ) όσο και βάση μιας θεματικής οργάνωσης (π.χ. com, net, org, edu κοκ). Επειδή δεν υπάρχει μόνο μια διαχειριστική αρχή για το σύνολο των ονομάτων αλλά πολλές κάθε μια εκ των οποίων είναι υπεύθυνη για το δικό της υποσύνολο, τα ονόματα χωρίζονται σε χώρους ονομάτων (naming domains), δηλαδή χώρους ευθύνης διαχείρισης και συντήρησης του αντίστοιχου τμήματος της βάσης ονομάτων του DNS.

 

DNS Name Servers

Εκτός όμως από την προαναφερθείσα οργάνωση των ονομάτων ένα σύστημα τόσο μεγάλης κλίμακας χρειάζεται και άλλες τεχνικές για να μπορεί να ανταποκρίνεται. Η τεράστια βάση ονομάτων του DNS είναι κατανεμημένη σε ένα λογικό δίκτυο από servers. Για να ικανοποιηθεί και πρακτικά ο ένας από τους βασικούς στόχους του DNS που είναι η απαίτηση κάθε τοπική αρχή να διαχειρίζεται το δικό της χώρο ονομάτων, η βάση αναπαράγεται τμηματικά με την ύπαρξη τοπικών servers. Για κάθε τμήμα της βάσης δεν υπάρχει μόνο ένας server αλλά τουλάχιστον δυο (replication).Τα δεδομένα που διατηρεί κάθε server είναι κυρίως τα ονόματα του τοπικού χώρου. Η κάθε διαχειριστική αρχή είναι υπεύθυνη για την ενημέρωση αυτών των δεδομένων τα οποία θεωρούνται επίσημα δεδομένα (authoritative data) για τον εκάστοτε χώρο και οι servers στους οποίους αποθηκεύονται ονομάζονται authoritative ή primary ή master servers. Τα δεδομένα αυτά αναπαράγονται περαιτέρω σε ένα σύνολο από secondary servers. Με λίγα λόγια, για κάθε χώρο ονομάτων υπάρχει ένα σύνολο από servers που παρέχει επίσημα δεδομένα ονοματοδοσίας.

Εκτός από τους τοπικούς servers υπάρχουν servers τόσο για τους ευρύτερους χώρους (π.χ. για το yahoo.com ή το ac.uk) όσο και για τον αρχικό χώρο (root domain). Ο,τι αναφέρθηκε στην προηγούμενη παράγραφο για την αναπαραγωγή των δεδομένων ισχύει και εδώ.

 

Αναζήτηση και Εύρεση (Name Resolution)

Όπως φαίνεται και από την οργάνωση των name servers, κάθε αίτηση αντιστοίχισης ονόματος σε IP ικανοποιείται από τους τοπικούς servers του χώρου ονομάτων στον οποίο ανήκει και το εν λόγω όνομα. Αυτός άλλωστε είναι και ο στόχος: το φόρτο εργασίας να κατανέμεται έτσι ώστε να μην χρειάζεται οι αιτήσεις να φτάνουν στους servers του αρχικού χώρου (rοοt servers) προς διεκπεραίωση αν και υπάρχουν αναφορές ότι οι τελευταίοι εξακολουθούν να εξυπηρετούν πάνω από 1000 αιτήσεις το δευτερόλεπτο. Βέβαια, όπως άλλωστε υπονοείται από τον καταμερισμό των δεδομένων, οι τοπικοί servers δεν μπορούν να ικανοποιήσουν όλες τις αιτήσεις χωρίς την βοήθεια άλλων name servers. Για την διεκπεραίωση των αιτήσεων που αφορούν ονόματα εκτός του χώρου δικαιοδοσίας τους οι τοπικοί servers διατηρούν συνδέσεις με άλλους name servers και οπωσδήποτε με έναν ή περισσότερους root servers. Επίσης, γνωρίζουν την διεύθυνση ενός επίσημου server του γονικού χώρου (για παράδειγμα, γονικός χώρος για τα ac.uk και co.uk θεωρείται ο uk).

Η εύρεση λοιπόν μιας διεύθυνσης IP περιλαμβάνει την αναζήτηση δεδομένων σε έναν ή περισσότερους name servers. Το DNS υποστηρίζει δυο μεθόδους αναζήτησης, την αναδρομική (recursive) και την επαναληπτική (iterative) αν και οι name servers εγγυώνται μόνο για την λειτουργία της δεύτερης. Η διαφορά τους (βλέπε Σχήμα 1) είναι οτι στην επαναληπτική, ο client επικοινωνεί αρχικά με τον τοπικό name server και αν αυτός δεν γνωρίζει το όνομα προς εύρεση τότε προτείνει την διεύθυνση ενός άλλου name server. Είναι στην ευθύνη του ίδιου του client να επικοινωνήσει εν συνεχεία με τον καινούργιο αυτό name server σε αντίθεση με την αναδρομική μέθοδο όπου ο κάθε name server λειτουργεί ως client μέχρι να ολοκληρωθεί να αναζήτηση και να επιστραφεί το αποτέλεσμα. Στην δεύτερη αυτή περίπτωση ο αρχικός client επικοινωνεί μία φορά μόνο με τον τοπικό server.

imageimage

Σχήμα 1

Σε κάθε περίπτωση, για την δραματική βελτίωση της απόκρισης του συστήματος, οι name servers διατηρούν προσωρινά τα αποτελέσματα των προηγούμενων αναζητήσεων (caching). Καθώς τα αποτελέσματα αυτά περιλαμβάνουν δεδομένα εκτός του χώρου δικαιοδοσίας τους –με άλλα λόγια τα δεδομένα δεν είναι επίσημα (authoritative), η διατήρησή τους στην cache γίνεται για ένα συγκεκριμένο χρονικό διάστημα μετά το πέρας του οποίου ο name server εκτελεί και πάλι την αναζήτηση με τις μεθόδους που αναφέρθηκαν παραπάνω. Για τους ίδιους λόγους βελτίωσης, το DNS επιτρέπει το “πακετάρισμα” πολλαπλών αιτημάτων σε ένα καθώς και το “πακετάρισμα” πολλών αποτελεσμάτων σε μια απάντηση από τους name servers.

 

Περισσότερες Πληροφορίες

Υπάρχουν άπειρες πηγές για το DNS που καλύπτουν με πολύ πιο τεχνικό τρόπο όλες τις πτυχές του συστήματος. Σκοπός αυτού του άρθρου δεν ήταν φυσικά η πλήρης ανάλυση του DNS –αυτό θα απαιτούσε πολλές σελίδες με πολλές τεχνικές λεπτομέρειες. Αν πάντως θέλετε να διαβάσετε περισσότερα για τον τρόπο αποθήκευσης των δεδομένων στους servers (ζώνες δεδομένων, resource records κοκ) καθώς επίσης για τα Aliases και την ανάστροφη αναζήτηση (reverse resolution) τότε μια έγκυρη πηγή είναι το Distributed Systems Concept and Design των Coulouris, Dollimore, Kindberg απο τις εκδόσεις Addison Wesley.

Share


Έχουν δημοσιευτεί Κυριακή, 26 Φεβρουαρίου 2012 11:04 πμ από το μέλος dpant
Καταχώρηση στις κατηγορίες:

Σχόλια:

Χωρίς Σχόλια