====== DNS - Ονοματοδοσία ======
* Είδαμε ότι όλοι οι Υπολογιστές έχουν μία **αριθμητική διεύθυνση** ώστε να μπορούν να επικοινωνούμε. Εμείς όμως χρησιμοποιούμε **ονομαστικές διευθύνσεις** όπως **www.google.com** που τις θυμόμαστε πιο εύκολα. Για να επικοινωνήσει τελικά όμως ο ΗΥ μας θα πρέπει κάποιος να τις **μετατρέψει σε αριθμητικές**. Αυτή την δουλειά την κάνει ο **DNS**
- **ΕΙΣΑΓΩΓΗ**
* Εκτελέστε nslookup www.debian.org
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: www.debian.org
Address: 5.153.231.4
Name: www.debian.org
Address: 130.89.148.14
- **ΕΥΡΕΣΗ ΟΛΩΝ ΤΩΝ DNS**
* Μας απάντησε ο **192.168.1.1** που είναι ο 1ος dns και μας έδωσε 2 αριθμητικές διευθύνσεις την **5.153.231.4** και την **130.89.148.14**. Δεν είναι όμως ο μοναδικός dns. Συνήθως υπάρχουν 2 ή και περισσότεροι dns. Εάν ο 1ος έχει κάποιο πρόβλημα τότε θα εξυπηρετήσει ο 2oς.
- Για να δούμε την λίστα με τους dns θα εκτελέσουμε
* Στο Linux cat /etc/resolv.conf
..
nameserver 192.168.1.1
nameserver 8.8.8.8
* Στα Windows ipconfig /all
..
Διακομιστές DNS . . . . . . : 192.168.1.1
8.8.8.8
..
* Βλέπουμε ότι έχουμε λοιπόν 2 dns τον **192.168.1.1** και τον **8.8.8.8**. Αν δεν λειτουργήσει ο 1ος θα απαντήσει ο 2ος.
- **ΕΡΩΤΗΣΗ ΑΛΛΟΥ DNS**
- Θα ζητήσουμε να μας απαντήσει ο 2ος με την εντολή ως εξής nslookup www.facebook.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.facebook.com canonical name = star.c10r.facebook.com.
Name: star.c10r.facebook.com
Address: 31.13.64.1
- Μας απάντησε ο **8.8.8.8** και μας έδωσε την IP **31.13.64.1**. Πάμε να ρωτήσουμε τον 1o dns nslookup www.facebook.com
Server: 192.168.1.200
Address: 192.168.1.200#53
Non-authoritative answer:
www.facebook.com canonical name = star.c10r.facebook.com.
Name: star.c10r.facebook.com
Address: 66.220.158.19
* Ο 192.168.1.200 μας έδωσε άλλη ip την **66.220.158.19**
Συνήθως τα domain έχουν **1-2 IP διευθύνσεις μόνο**. Όσα όμως έχουν πάρα πολύ κίνηση όπως το facebook.com μπορουν να έχουν **δεκάδες IP** δηλαδή δεκάδες εξυπηρετητές. Οι dns δίνουν **τυχαία** μία ή περισσότερες από αυτές ώστε να **μοιράζεται η κίνηση σε όλους τους εξυπηρετητές**.
- **ΛΕΙΤΟΥΡΓΙΑ DNS**
* Στο Internet υπάρχουν εκατοντάδες εκατομμύρια domains (περίπου **300 εκατομμύρια domains** μέχρι το 2015) και **αυξάνονται** συνέχεια. Όταν ρωτάμε έναν dns μπορεί να διαλέξουμε οποιοδήποτε από αυτά τα εκατομμύρια domains και μας απαντάει συνήθως ο dns από το router που έχουμε. Τι συμβαίνει έχει αποθηκευμένα το router που αγοράσαμε όλα αυτά τα domains;
* Όπως φαντάζεστε όχι. Άλλωστε τα **domains αλλάζουν κατά χιλιάδες κάθε μέρα**, αλλά και τα υπάρχοντα **αλλάζουν κατά καιρούς IP διευθύνσεις**. Δεν θα ήταν δυνατό να ενημερώνεται για όλες τις αλλαγές. Τι συμβαίνει λοιπόν;
* Αρχικά ο dns του router δεν γνωρίζει πληροφορίες από κανένα domain. Γνωρίζει όμως **2 άλλους dns** (συνήθως είναι οι dns της εταιρείας που μας παρέχει Internet π.χ. dns της otenet ή του Πανελλήνιου Σχολικού Δικτύου). Όταν εμείς ρωτάμε τον dns του router αυτός ρωτάει με την σειρά του τον 1ο από τους άλλους 2 dns, **μαθαίνει πληροφορίες και μας απαντάει**.
- Πάμε να το δούμε λοιπόν. **Στο Linux** θα βάλουμε μπροστά την εντολή **time** που μετράει χρόνο. Βρείτε την αριθμητική διεύθυνση για το domain **www.ubuntu.com** (ή αν είστε σε εργαστήριο **κάποιο άλλο τυχαίο domain** ώστε να μην το έχει ζητήσει και άλλος) time nslookup www.ubuntu.org
..
Address: 82.98.134.233
..
real 0m0.614s
user 0m0.008s
sys 0m0.004s
- Βλέπουμε ότι έκανε **0.614 δευτερόλεπτα** για να απαντήσει. Πάμε να τον ρωτήσουμε πάλι. Πατήστε πάνω βελάκι και εκτελέστε ξανά time nslookup www.ubuntu.org
..
Address: 82.98.134.233
..
real 0m0.018s
user 0m0.008s
sys 0m0.004s
* Τώρα απάντησε πολύ πιο γρήγορα σε **0.018 δευτερόλεπτα**. Την 1η φορά ρώτησε τους άλλους 2 dns για να μάθει. Την 2η ήξερε πλέον και απάντησε αμέσως.
- **ΧΡΟΝΟΣ ΕΝΗΜΕΡΩΣΗΣ DNS**
- Ακόμα και το domain **www.ubuntu.org** που γνωρίζει ο dns **μπορεί να αλλάξει IP**. Εκτελέστε στο Linux dig www.ubuntu.org
..
;; ANSWER SECTION:
www.ubuntu.org. 194 IN A 82.98.134.233
..
- Πατήστε πάνω βελάκι και εκτελέστε ξανά την εντολή **dig www.ubuntu.org** dig www.ubuntu.org
..
;; ANSWER SECTION:
www.ubuntu.org. 177 IN A 82.98.134.233
..
* Βλέπετε ένα νούμερο π.χ. εδώ το **194** που μειώθηκε και έγινε **177** - σε εσάς θα έχει άλλες τιμές. Όταν περάσουν αυτά τα δλ ο dns του router **192.168.1.1** θα ξαναρωτήσει πάλι τους άλλους dns μήπως έχει αλλάξει η IP.
Όταν ζητάμε ένα domain από τον dns συνήθως θα το **ξαναζητήσουμε πάλι αρκετές φορές αμέσως μετά**, π.χ. επειδή βλέπουμε ιστοσελίδες στο ίδιο site. **Μόνο την 1η φορά καθυστερεί λίγο** να μας απαντήσει. **Τις επόμενες απαντάει αμέσως**. Εάν περάσει ο χρόνος λήξης τότε το ξαναζητάει πάλι μία φορά.
- **ΛΕΙΤΟΥΡΓΙΑ ΟΛΩΝ ΤΩΝ DNS**
* Σύμφωνα με τα παραπάνω όταν τοπικός dns μας δεν γνωρίζει κάτι ρωτάει 2 άλλους. Μήπως λοιπόν αυτοί οι 2 άλλοι dns γνωρίζουν πληροφορίες για εκατοντάδες εκατομμύρια domain; Προφανώς και όχι. Και εκείνοι με την σειρά τους εάν δεν γνωρίζουν, ρωτάνε κάποιον άλλον dns, ο οποίος ρωτάει κάποιον άλλον κτλ. Πότε σταματάει όμως αυτό;
* Υπάρχει ένας DNS ο οποίος είναι **υπεύθυνος/εξουσιοδοτημένος (authoritative)** για ένα domain. Μόλις ρωτηθεί ενημερώνονται όλοι οι προηγούμενοι που ρωτούσαν ο ένας τον άλλον.
- Π.χ. εκτελέστε nslookup www.google.com
Server: 192.168.1.200
Address: 192.168.1.200#53
Non-authoritative answer:
Name: www.google.com
Address: 74.125.206.147
Name: www.google.com
Address: 74.125.206.99
..
- Βλέπετε ότι υπάρχει η γραμμή **Non-authoritative answer** (μή εξουσιοδοτημένη απάντηση). Αυτό σημαίνει ότι ο **192.168.1.200** απαντάει μεν αλλά δεν είναι αυτός ο υπεύθυνος για το domain. Ρώτησε και έμαθε. Εκτελέστε τώρα nslookup www.google.com 216.239.32.10
Server: 216.239.32.10
Address: 216.239.32.10#53
Name: www.google.com
Address: 74.125.206.106
Name: www.google.com
Address: 74.125.206.147
..
* Βλέπουμε ότι λείπει η γραμμή **Non-authoritative answer**. Ο **216.239.32.10** είναι **υπεύθυνος/εξουσιοδοτημένος (authoritative)** για το domain **www.google.com** και δεν χρειάζεται να ρωτήσει άλλον. Απαντάει ο ίδιος.
- **ΤΟΠΙΚΕΣ ΕΓΓΡΑΦΕΣ DNS**
* ΟΙ IP διευθύνσεις δεν είναι μόνο οι Διαδικτυακές είναι και οι τοπικές που συνήθως ξεκινάνε από 192.168.1.y ή γενικά από 192.168.x.y (το x έχει τιμές από 0..254 και το y από 1..254). Αυτές οι τοπικές IP είναι λίγες. Εάν κάποιος ΗΥ έχει πάντα την ίδια ip μπορούμε να αναφερόμαστε σε αυτόν με ένα όνομα. Π.χ. **pc1**, **server** κτλ. Στο εργαστήριο συνήθως ο DNS γνωρίζει τις IP από όλα τα μηχανήματα.
- Για να βρούμε το όνομα του ΗΥ μας εκτελούμε **hostname -s** hostname -s
pc1
- Ρωτήστε το όνομα του ΗΥ του διπλανού σας. Τώρα εκτελέστε την κατάλληλη εντολή **για να βρείτε την IP του**.
- **Δοκιμάστε επικοινωνία** με τον ΗΥ του διπλανού σας χρησιμοποιώντας **το όνομα του HY του**.
* FIXME note γιατί θέλουν 24-48 ώρες να φανούν στο Internet τα νέα domains
----
* **ΑΣΚΗΣΗ ΓΙΑ ΤΟ ΣΠΙΤΙ**
* FIXME