Πως να ρυθμίσω το δικό μου dns server με τη δική μου στατική ip.

djemos | Παρ, 06/01/2012 - 10:39 | 8' | 4

Πως να ρυθμίσω το δικό μου dns server με τη δική μου στατική ip.

Επειδή ένας φίλος χρειάστηκε να σετάρει το δικό του dns server χρησιμοποιώντας τη στατική ip του και επειδή εγκατέστησε το UBUNTU στο server,
του ρύθμισα λοιπόν το server.
Οπότε ακολουθούν οι παρακάτω οδηγίες για οποιοδήποτε τυχόν χρειαστεί να κάνει το ίδιο.
Το domain εδω είναι my-domain.gr εσείς αντικαταστήστε το με το δικό σας.

Οι παρακάτω ρυθμίσεις ισχύουν για το Ubuntu, στο slackware, slackel, salix κάνουμε τα ίδια στα αντίστοιχα αρχεία.
Οι οδηγίες είναι απλές και όχι με τη σωστή τεχνική ορολογία για να καταλαβαίνουν όλοι.
Τα παρακάτω δουλεύουν και φυσικά κάποιος άλλος μπορεί να χρησιμοποιήσει διαφορετικές ρυθμίσεις.


Υποτίθεται ότι στον registrar έχουμε κατοχυρώσει το domain name έχουμε δημιουργήσει ένα εξυπηρετητή ονοματοδοσίας Π.Χ. ns0.my-domain.gr δίνοντάς του την στατική ip μας x1.x2.x3.x4
Μπορούμε να ορίσουμε και δεύτερο με την ίδια σταtική ip ns1.my-domain.gr
Κατόπιν στο domain name που έχουμε κατοχυρώσει στο παράδειγμα my-domain.gr βάζουμε σαν Εξυπηρετητές Ονοματοδοσίας (nameservers) τον ns0.my-domain.gr και ns1.my-domain.gr

Και θα πρέπει να περάσουν από μερικές ώρες έως και 48 ώρες για να ενημερωθούν οι nameservers servers με το ip μας που αντιστοιχεί στο ns0.my-domain.gr.
Δηλαδή εάν αλλάξετε τους nameservers του domain σας, η μετάβαση στο νέο server φιλοξενίας θα ολοκληρωθεί μέσα σε περίπου 3 με 48 ώρες, ανάλογα με την εταιρία που σας παρέχει τη σύνδεση του Internet.
Δηλαδή κάνοντας dig από οποιοδήποτε pc δεν θα σας βρει το domain σας αν πρώτα δεν ενημερωθούν οι nameservers σε όλο το κόσμο.


Τα παρακάτω τα κάνουμε στο δικό μας server αν τον τρέχουμε από το σπίτι και έχουμε static ip ή αφού πρώτα κάνουμε login με ssh στο server που έχουμε στην ταδε εταιρία.
Εδώ σαν παράδειγμα χρησιμοποιούμε το domain my-domain.gr. Εσεις βάλτε το δικό σας, το οποίο πρώτα το έχετε κατοχυρώσει.
H στατική ip είναι x1.x2.x3.x4. αντικαταστήστε τα x1.x2.x3.x4 με την στατική ip σας.
Η ip των nameservers της εταιρίας είναι k1.k2.k3.k4 και m1.m2.m3.m4

Οπου παρακάτω υπάρχει x1,x2,x3,x4 , κ1,κ2,κ3,κ4, m1,m2,m3,m4  θα βάζετε τους αντίστοιχους αριθμούς.

UBUNTU
==============================================
Α. το αρχείο /etc/bind/named.conf.local πρέπει να είναι: // Για το slackware το αρχείο είναι /etc/named.conf

//
// Do any local configuration here
//

zone "my-domain.gr." IN {
     type master;
     file "/etc/bind/db.my-domain.gr"; // Για το slackware βάζουμε "/var/named/caching-example/db.my-domain.gr"
};


zone "x4.x3.x2.in-addr.arpa" {
        type master;
        file "/etc/bind/rev.x4.x3.x2.in-addr.arpa"; // Για το slackware βάζουμε "/var/named/caching-example/rev.x4.x3.x2.in-addr.arpa"
};

=============================================


Β. το αρχείο /etc/bind/named.conf.options πρέπει να είναι: // Για το slackware τα παρακάτω τα βάζουμε στο παραπάνω αρχείο /etc/named.conf

options {
        directory "/var/cache/bind"; // Για το slackware βάζουμε directory "/var/named";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        notify no;
        forward only;
        forwarders { k1.k2.k3.k4; m1.m2.m3.m4; };  // εδώ βάζουμε τους name servers που μας έχει δώσει η εταιρία που τρέχει ο server.
};

===============================================


Γ. το  αρχείο /etc/resolv.conf // το ίδιο για το slackware
search  my-domain.gr
nameserver x1.x2.x3.x4
nameserver k1.k2.k3.k4
nameserver m1.m2.m3.m4


========================

Δ. το αρχείο  /etc/bind/db.my-domain.gr πρέπει να είναι: // Για το slackware το αρχείο είναι  "/var/named/caching-example/db.my-domain.gr"
;
; BIND data file for local loopback interface
;

$TTL    604800
@       IN      SOA     ns0.my-domain.gr. my-domain.gr. (

                        2006081401
                           28800
                          3600
                       604800
                     38400

)

                        IN   NS    ns0
                        IN   NS    ns1
my-domain.gr.  IN A  x1.x2.x3.x4
my-domain.gr. IN      MX 10   mail.my-domain.gr.
ns0     IN      A       x1.x2.x3.x4
ns1     IN      A       x1.x2.x3.x4
www     IN      A       x1.x2.x3.x4
mail    IN      A       x1.x2.x3.x4

==============================

Ε. το αρχείο /etc/bind/rev.x4.x3.x2.in-addr.arpa πρέπει να είναι: // Για το slackware το αρχείο είναι "/var/named/caching-example/rev.x4.x3.x2.in-addr.arpa"

$TTL 1D
@ IN SOA ns0.my-domain.gr. admin.my-domain.gr. (
                        2006081401;
                        28800;
                        604800;
                        604800;
                        86400
)

                     IN    NS     ns0.my-domain.gr.
x4                    IN    PTR   my-domain.gr
============================

To x4 θα είναι είναι το ίδιο με το τελευταίο νούμερο από το static ip (x1.x2.x3.x4)


Ζ. Τεστάρουμε το server

named-checkzone -d  x4.x3.x2.in-addr.arpa  /etc/bind/rev.x4.x3.x2.in-addr.arpa // Για το slackware το αρχείο είναι "/var/named/caching-example/rev.x4.x3.x2.in-addr.arpa"
OUTPUT:
loading "x4.x3.x2.in-addr.arpa" from "/etc/bind/rev.x4.x3.x2.in-addr.arpa" class "IN"
zone x4.x3.x2.in-addr.arpa/IN: loaded serial 2006081401
OK

===================================
named-checkzone -d my-domain.gr /etc/bind/db.my-domain.gr  // Για το slackware το αρχείο είναι  "/var/named/caching-example/db.my-domain.gr"
OUTPUT:
loading "my-domain.gr" from "/etc/bind/db.my-domain.gr" class "IN"
zone my-domain.gr/IN: loaded serial 2006081401
OK


==============================


Η. Κάνουμε restart το bind
/etc/init.d/bind9 restart     // Για το slackware /etc/rc.d/rc.bind restart ή για το slackel  "service restart bind"



Οι παρακάτω εντολές από το ssh shell  θα πρέπει να μας δώσουν: (εννοείται ότι αντί x1.x2.x3.x4 θα υπάρχουν οι αριθμοί της στατικής ip μας.

======================
djemos[~]$ nslookup my-domain.gr
Server:         192.168.1.254
Address:        192.168.1.254#53

Non-authoritative answer:
Name:   my-domain.gr
Address: x1.x2.x3.x4

=======================
nslookup www.my-domain.gr
Server:         192.168.1.254
Address:        192.168.1.254#53

Non-authoritative answer:
Name:   www.my-domain.gr
Address: x1.x2.x3.x4

========================
djemos[~]$ nslookup mail.my-domain.gr
Server:         192.168.1.254
Address:        192.168.1.254#53

Non-authoritative answer:
Name:   mail.my-domain.gr
Address: x1.x2.x3.x4
====================

dig www.my-domain.gr

; <<>> DiG 9.7.0-P1 <<>> www.my-domain.gr
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29213
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.my-domain.gr.          &nbsp; IN      A

;; ANSWER SECTION:
www.my-domain.gr.   &nbsp; 604800  IN      A       x1.x2.x3.x4

;; AUTHORITY SECTION:
my-domain.gr.         604800  IN      NS      ns0.my-domain.gr.
my-domain.gr.         604800  IN      NS      ns1.my-domain.gr.

;; ADDITIONAL SECTION:
ns0.my-domain.gr.     604800  IN      A       x1.x2.x3.x4
ns1.my-domain.gr.     604800  IN      A       x1.x2.x3.x4

;; Query time: 8 msec
;; SERVER: x1.x2.x3.x4#53(x1.x2.x3.x4)
;; WHEN: Fri Jun  1 09:46:43 2012
;; MSG SIZE  rcvd: 120


Δώσε αστέρια!
Σχόλια

Μπραβο Δημητρη και το χρειαζομουνα ενα τετοιο tutorial, για να μου θυμηζει ξεχασμενα πραματα. :)

Ένας DNS server έχει ενδιαφέρον ακόμα και αν τον κάνουμε τοπικά χωρίς καν να τον ταυτίσουμε με nameservers. Λογικά προσφέρει και παραπάνω ανωνυμία.

Οι registrars οι εταιρίες δηλαδή που κατοχυρώνουμε τα domain names δεν δέχονται δημιουργία dns server με δυναμικό ip μόνο με στατικό. Το να τον στήσεις τοπικά δεν συμφέρει οικονομικά αφού μόνο το ρεύμα που θα καταναλώνει το pc σε ένα έτος είναι όσο και το κόστος που πληρώνεις στην εταιρία. Άσε που μια σπιτική σύνδεση θα "γονατίζει" αν συνδεθούν πολλοί χρήστες. Είναι ωφέλιμο για dedicated ή VPS servers και για developing ή επαγγελματική χρήση.


Εννοούσα DNS Proxy Server σε στυλ Dnsmasq. (Όχι ότι υπάρχει και κάποια διαφορά στις επιδόσεις.)