Asenna Master-Slave DNS-palvelin "Bind"-työkaluilla RHEL/CentOS 6.5:ssä


Domain Name Server (DNS), jota käytetään nimien selvittämiseen mille tahansa isännälle. Pää-DNS-palvelimet (Ensisijainen palvelin) ovat alkuperäisiä vyöhyketietojen käsittelijöitä ja orja-DNS-palvelin (Toissijainen palvelin) ovat vain varapalvelimia, joita käytetään kopioimaan samat vyöhyketiedot pääpalvelimet. Pääpalvelin selvittää kaikkien vyöhyketietokannassa määrittämiemme isäntien nimet ja käyttää UDP-protokollaa, koska UDP-protokollat eivät koskaan käytä kuittausprosessia, kun taas tcp käyttää kuittausta. DNS-palvelimet käyttävät myös UDP-protokollia ratkaistakseen kyselypyynnön aikaisintaan.

Kuinka DNS toimii?

DNS:n ymmärtäminen saattaa olla vähän hämmentävää aloittelijoille. Tässä on lyhyt selitys DNS:n toiminnasta.

Oletetaan, että jos meidän on käytettävä jotakin verkkosivustoa, mitä teemme? Kirjoita selaimeen www.google.com ja paina Enter. Hmm, siinä kaikki, mitä tiedämme, mutta tosiasia on, kuinka kipua DNS käy sen läpi tehdessään kyselyjä puolestamme. Kun kirjoitamme www.google.com, järjestelmä etsii osoitetta www.google.com. Aina kun kirjoitamme jonkin verkkotunnuksen nimen, www.google.com-osoitteen lopussa on . (piste), joka kehottaa etsimään nimiavaruuden juuripalvelimelta.

Maailmanlaajuisesti käytettävissä on 13 juuripalvelinta kyselyn ratkaisemiseen. Aluksi, kun painamme enteriä osoitteessa www.google.com, selaimemme välittää pyynnön paikalliselle ratkaisijallemme, joka sisältää tietoja isäntä- ja orja-DNS-palvelimemme tiedoista. Jos heillä ei ole tietoja pyydetystä kyselystä, he välittävät pyynnön huipputason verkkotunnukselle (TLD). Jos TLD sanoo, että en tiedä pyyntöä, se voi olla arvovaltainen palvelin, joka tietää sinun Pyynnöstä se välittää eteenpäin arvovaltaisille palvelimille, tässä vain www.google.com määritettiin osoitteeksi 72.36.15.56.

Tällä välin arvovaltainen palvelin antaa vastauksen TLD:lle ja TLD välittää juuripalvelimelle ja root toimittaa tiedot selaimelle, joten selain tallentaa DNS-pyynnön välimuistiin tulevaa käyttöä varten. Näin nämä pitkät prosessit vain ratkeavat millisekunneissa. Jos he eivät tiedä pyyntöä, he vastaavat nimellä NXDOMAIN. Tämä tarkoittaa, että Zone-tietokannasta ei löydy tietueita. Toivottavasti tämä auttaa sinua ymmärtämään, kuinka DNS toimii.

Lue myös: Asenna DNS-välimuistipalvelin Ubuntuun

Testausympäristöni

Tätä artikkelia varten käytän kolmea konetta, 2 palvelimen asennukseen (isäntä ja orja) ja 1 asiakkaalle.

---------------------------------------------------
Master DNS Server
---------------------------------------------------

IP Address	:	192.168.0.200
Host-name	:	masterdns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------

IP Address	:	192.168.0.201
Host-name	:	slavedns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------

IP Address	:	192.168.0.210
Host-name	:	node1.tecmintlocal.com
OS		:	Centos 6.5 Final
Vaatimuspaketit
bind, bind-utils, bind-chroot
Käytetyt määritystiedostot
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
Käytetyt portit ja protokollat
53, UDP

Asenna pää DNS-palvelin

Tarkista ensin pää DNS-palvelimen IP-osoite, isäntänimi ja jakeluversio, ennen kuin siirryt asennukseen.

sudo ifconfig | grep inet
hostname
cat /etc/redhat-release

Kun olet vahvistanut, että yllä olevat asetukset ovat oikein, on aika siirtyä asentamaan tarvittavat paketit.

sudo yum install bind* -y

Bindin asentaminen ja määrittäminen

Kun olet asentanut tarvittavat paketit, määritä nyt vyöhyketiedostot päämääritystiedostossa 'named.conf'.

sudo vim /etc/named.conf

Alla on named.conf-tiedostoni, muuta asetustiedostoa tarpeidesi mukaan.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.200; }; # Here we need to add our Master DNS Server IP.
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
        allow-transfer     { localhost; 192.168.0.201; };  # Here we need to our Slave DNS server IP.
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our forward & reverse Zone file here for tecmintlocal.com.


zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};

zone"0.168.192.in-addr.arpa" IN {
type master;
file "tecmintlocal.rev.zone";
allow-update { none; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Seuraavassa on selitys jokaisesta yllä olevassa tiedostossa käyttämistämme kokoonpanoista.

  1. kuunteluportti 53 – Tätä käytetään DNS:n kuuntelemiseen käytettävissä olevissa liitännöissä.
  2. Master DNS – Määritä Master DNS IP-osoitteesi kyselyn kuuntelemista varten.
  3. Orja-DNS – Määritä orja-DNS, jota käytetään vyöhyketietojemme synkronointiin isäntien selvittämiseksi isännästä.
  4. rekursio ei – Jos sen arvo on kyllä, rekursiiviset kyselyt tekevät palvelimesta DDOS-hyökkäyksen.
  5. Vyöhykkeen nimi – Määritä vyöhykkeesi nimi tässä muodossa tecminlocal.com.
  6. type master – Koska tämä järjestelmä on määritetty isäntäpalvelimelle, se on tulevalle orjapalvelimelle orja.
  7. tecmintlocal.fwd.zone – Tässä tiedostossa on tämän vyöhykkeen isäntätiedot.
  8. allow-update none – Jos ei mitään, asetetaan. se ei käytä dynaamista DNS:ää (DDNS).

Master Zone -tiedostojen luominen

Aluksi määritellään eteenpäinhakuvyöhykkeen syöttö. Täällä meidän on luotava vyöhyketiedostot sen nimissä, jotka olemme määrittäneet named.conf-tiedostossa alla olevan mukaisesti.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Käytämme mallikonfiguraatiotiedostoja luotaessa eteenpäinvyöhyketiedostoja, tätä varten meidän on kopioitava mallimääritystiedostot.

sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

Kun olet kopioinut määritystiedostot, muokkaa nyt näitä vyöhyketiedostoja vim-editorilla.

sudo vim /var/named/tecmintlocal.fwd.zone

Ennen kuin määrität isäntätietomme välitysvyöhyketiedostoon, katso ensin nopeasti mallivyöhyketiedosto.

Tämä on eteenpäinvyöhykkeen kokoonpanoni, liitä alla oleva merkintä ja tee muutoksia tarpeidesi mukaan.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com.     root.tecmintlocal.com. (
                                  2014090401    ; serial
                                        3600    ; refresh
                                        1800    ; retry
                                      604800    ; expire
                                       86400 )  ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.

; Name server hostname to IP resolve.

@       IN      A       192.168.0.200
@       IN      A       192.168.0.201

; Hosts in this Domain

@       IN      A       192.168.0.210
@       IN      A       192.168.0.220
masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201
node1           IN      A       192.168.0.210
rhel1           IN      A       192.168.0.220

Tallenna ja sulje tiedosto painamalla wq!. Kun olet muokannut eteenpäinhakua, se näyttää alla tältä. Käytä TABa saadaksesi kunnollisen muodon vyöhyketiedostoon.

Luo nyt käänteisen haun tiedosto, olemme jo tehneet kopion silmukkatiedostosta nimellä tecmintlocal.rev.zone. Joten käytämme tätä tiedostoa käänteisen haun määrittämiseen.

sudo vim /var/named/tecmintlocal.rev.zone

Ennen kuin määrität isäntätietomme käänteisvyöhyketiedostoon, katso nopeasti esimerkkikäänteisen haun tiedostosta alla olevan kuvan mukaisesti.

Tämä on käänteisalueen kokoonpanoni, liitä alla oleva merkintä ja tee muutoksia tarpeen mukaan.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com. root.tecmintlocal.com. (
                                2014090402      ; serial
                                      3600      ; refresh
                                      1800      ; retry
                                    604800      ; expire
                                     86400 )    ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.
@       IN      PTR     tecmintlocal.com.

; Name server hostname to IP resolve.

masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201

;Hosts in Domain 

node1           IN      A       192.168.0.210
rhel            IN      A       192.168.0.220
200             IN      PTR     masterdns.tecmintlocal.com.
201             IN      PTR     slavedns.tecmintlocal.com.
210             IN      PTR     node1.tecmintlocal.com.
220             IN      PTR     rhel1.tecmintlocal.com.

Tallenna ja sulje tiedosto painamalla wq!. Käänteisen haun muokkauksen jälkeen näyttää seuraavalta. Käytä sarkainta saadaksesi kunnollisen muodon vyöhyketiedostoon.

Tarkista eteenpäinhaun ja käänteisen haun tiedostojen ryhmäomistus, ennen kuin tarkistat määritysvirheitä.

sudo ls -l /var/named/

Tässä näemme, että molemmat tiedostot ovat root-käyttäjien omistuksessa, koska tiedostot, jotka kopioimme esimerkkitiedostoista, ovat saatavilla osoitteessa /var/named/. Muuta ryhmäksi nimetty molemmissa tiedostoissa seuraavilla komennoilla.

sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone

Kun olet määrittänyt tiedostoille oikean omistajuuden, vahvista ne uudelleen.

sudo ls -l /var/named/

Tarkista nyt vyöhyketiedostojen virheet ennen DNS-palvelun käynnistämistä. Tarkista ensin named.conf-tiedosto ja sitten muut vyöhyketiedostot.

sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone

Oletuksena iptables oli käynnissä ja DNS-palvelimemme on rajoitettu localhostille, jos asiakas haluaa selvittää nimen DNS-palvelimeltamme, meidän on sallittava saapuva pyyntö, sitä varten meidän on lisättävä iptables inbound -sääntö portille 53.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Varmista nyt, että säännöt on lisätty oikein INPUT-ketjuun.

sudo iptables -L INPUT

Tallenna seuraavaksi säännöt ja käynnistä palomuuri uudelleen.

sudo service iptables save
sudo service iptables restart

Käynnistä nimetty palvelu ja tee siitä pysyvä.

sudo service named start
sudo chkconfig named on
sudo chkconfig --list named

Testaa lopuksi määritetyt Master DNS -vyöhyketiedostot (eteenpäin ja taaksepäin) dig- ja nslookup-työkaluilla.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

Viileä! olemme määrittäneet Master DNS -palvelimen, nyt meidän on määritettävä Slave DNS -palvelin. Siirrytään eteenpäin orjapalvelimen määrittämisessä, tämä ei vie paljon aikaa pääasennuksena.

Asenna Slave DNS -palvelin

Orjakoneessa meidän on myös asennettava samat sidospaketit kuin Masterissa, joten asennetaan ne seuraavalla komennolla.

sudo yum install bind* -y

Avaa ja muokkaa named.conf-tiedostoa vyöhyketietokantaamme ja porttikuuntelua varten.

sudo vim /etc/named.conf

Tee muutokset kuvan mukaisesti tarpeidesi mukaan.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.201}; # Our Slave DNS server IP
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our slave forward and reverse zone, Zone files are replicated from master.

zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};

zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Käynnistä DNS-palvelu käyttämällä.

sudo service named start

Kun sidospalvelu on käynnistetty uudelleen, meidän ei tarvitse määrittää vyöhyketietoja yksitellen, sillä allow-transfer -palvelumme replikoi vyöhyketiedot pääpalvelimelta alla olevan kuvan mukaisesti.

sudo ls -l /var/named/slaves

Tarkista vyöhyketiedot cat-komennolla.

sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone

Avaa seuraavaksi DNS-portti 53 iptablesissa salliaksesi saapuva yhteys.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Tallenna iptables-säännöt ja käynnistä iptables-palvelu uudelleen.

sudo service iptables save
sudo service iptables restart

Tee palvelusta pysyvä järjestelmän käynnistyksen yhteydessä.

sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables

Se siitä!. Nyt on aika määrittää asiakaskoneemme ja tarkistaa isäntänimi.

Määritä asiakaskone

Asiakaspuolella meidän on määritettävä ensisijainen (192.168.0.200) ja toissijainen DNS (192.168.0.201) verkkoasetuksissa, jotta voimme määrittää isäntänimen. Suorita asetuskomento määrittääksesi kaikki nämä merkinnät kuvan osoittamalla tavalla.

setup

Muussa tapauksessa muokkaa /etc/reslov.conf-tiedostoa ja lisää seuraavat merkinnät.

vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

Tarkista nyt IP-osoitteen, isäntänimen ja nimipalvelimen haku.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

Tarkista nyt eteenpäin ja käänteinen DNS-haku käyttämällä.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

Kaivauksen tulosten ymmärtäminen:

  1. Otsikko – Tämä kertoo kaiken, mitä olemme kysyneet ja millainen tulos oli.
  2. Tila – Tila oli EI VIRHETÄ, mikä tarkoittaa, että lähettämämme kyselypyyntö onnistui ilman VIRHEÄ.
  3. Kysymys – Teimme kyselyn, tässä kyselyni oli masterdns.tecmintlocal.com.
  4. Vastaus – Kyselypyyntö ratkaistu, jos tietoja on saatavilla.
  5. Authority – Nimipalvelinten vastaus toimialueelle ja vyöhykkeelle.
  6. Lisätietoja – Nimipalvelimia koskevat lisätiedot, kuten isäntänimi ja IP-osoite.
  7. Kyselyn aika – Kuinka kauan kesti nimien selvittäminen yllä olevilta palvelimilta.

Tarkista lopuksi solmumme ja tee ping.

dig node1.tecmintlocal.com

ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2

Lopuksi asennus on valmis, tässä olemme määrittäneet sekä ensisijaisen (isäntä) että orjan (toisen) DNS-palvelimen onnistuneesti. Toivottavasti kaikki ovat tehneet asennuksen ilman ongelmia. Voit jättää kommentin, jos kohtaat ongelmia asennuksen aikana.