Podle tohoto návodu si můžeme nastavit hybridní Primary Master/Caching DNS server na místní síti.
Tento typ DNS serveru nejen že bude cachovat dotazované adresy, čímž zkrátí latenci. Ale můžeme jej také použít jako základ pro vlastní mail server a další služby vyžadující vlastní doménu.
Název vytvářené domény:
mydomain.com
Místní síť:
192.168.1.x
Brána/Router:
192.168.1.1
Připojovaná PC:
station1 - 192.168.1.102 - Windows
pip-pc - 192.168.1.103 - Windows
Vytvářený DNS server:
meridius-desktop - 192.168.1.101 - Ubuntu 10.04 Desktop Edition
DNS servery od ISP:
217.117.216.72
217.117.216.7
bind9dnsutilsNainstalovat DNS server SW.
$ sudo apt-get install bind9 dnsutilsPostupně upravit, nebo vytvořit potřebné konfigurační soubory.
/etc/bind/named.conf.options/etc/bind/named.conf.local/etc/bind/zones/mydomain.com.db/etc/bind/zones/rev.1.168.192.in-addr.arpaDo souboru /etc/bind/named.conf.options zadáme DNS server(y) providera.
[..]forwarders { 217.117.216.72; 217.117.216.7;};[..]poznámka:
Pokud nyní server restartujeme (viz níže) a nebudeme již editovat další soubory, získáme cachovací server. Ten nám sice neposkytne vlastní doménu, ale poslouží k uchovávání zodpovězených DNS dotazů a sníží tak latenci.
Práci cachovacího serveru si můžeme ověřit zadáním:
$ dig -x 127.0.0.1; <<>> DiG 9.7.0-P1 <<>> -x 127.0.0.1;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65351;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2;; QUESTION SECTION:;1.0.0.127.in-addr.arpa. IN PTR;; ANSWER SECTION:1.0.0.127.in-addr.arpa. 604800 IN PTR localhost.;; AUTHORITY SECTION:127.in-addr.arpa. 604800 IN NS localhost.;; ADDITIONAL SECTION:localhost. 604800 IN A 127.0.0.1localhost. 604800 IN AAAA ::1;; Query time: 1 msec;; SERVER: 192.168.1.101#53(192.168.1.101);; WHEN: Mon May 17 22:38:32 2010;; MSG SIZE rcvd: 121Provedeme tak reverzní (-x) dotaz na adresu 127.0.0.1, což je localhost.
Můžeme se také zeptat na doménu, např.:
$ dig google.com; <<>> DiG 9.7.0-P1 <<>> google.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53549;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 4, ADDITIONAL: 4;; QUESTION SECTION:;google.com. IN A;; ANSWER SECTION:google.com. 18 IN A 74.125.87.147google.com. 18 IN A 74.125.87.99google.com. 18 IN A 74.125.87.103google.com. 18 IN A 74.125.87.104google.com. 18 IN A 74.125.87.105google.com. 18 IN A 74.125.87.106;; AUTHORITY SECTION:google.com. 62488 IN NS ns3.google.com.google.com. 62488 IN NS ns4.google.com.google.com. 62488 IN NS ns1.google.com.google.com. 62488 IN NS ns2.google.com.;; ADDITIONAL SECTION:ns1.google.com. 306709 IN A 216.239.32.10ns2.google.com. 306709 IN A 216.239.34.10ns3.google.com. 306709 IN A 216.239.36.10ns4.google.com. 306709 IN A 216.239.38.10;; Query time: 12 msec;; SERVER: 192.168.1.101#53(192.168.1.101);; WHEN: Mon May 17 22:43:35 2010;; MSG SIZE rcvd: 260Zde nás zajímá položka Query time. Provedeme-li na ní alespoň dva dig dotazy, měla by se její hodnota dramaticky snížit.
V souboru /etc/bind/named.conf.local si pojmenujeme doménu, nastavíme adresy a příslušné soubory.
# Our domain zonezone "mydomain.com" { type master; file "/etc/bind/zones/mydomain.com.db";};# For reverse DNSzone "1.168.192.in-addr.arpa" { type master; notify = no; // <--- proc? file "/etc/bind/zones/rev.1.168.192.in-addr.arpa";};Nyní nastavíme zóny. Vytvoříme složku /etc/bind/zones a do souboru /etc/bind/zones/mydomain.com.db zapíšeme požadované záznamy.
; BIND Zone file for mydomain.com$TTL 86400 ; 1d; nazev serveru email spravce (misto @ je tecka)@ IN SOA meridius-desktop.mydomain.com. admin.mydomain.com. ( 2010051701 ; identifikacni cislo zaznamu (YYYYMMDDnn) - nn je cislo revize od "0" 21600 ; 6h - obnovovaci frekvence 3600 ; 1h - opakovane pokusy 604800 ; 1w - expirace datovych tabulek na sekundarnim serveru, pokud nedojde k aktualizaci 86400 ) ; 1d - min doba, po ktere prohlasi sekundarni server pozadavek za nesplnitelny; Nameserver@ IN NS meridius-desktop.mydomain.com.; Mailserver; @ IN MX 0 mail.mydomain.com. ; <--- jak se zapisuje mail server na stejné IP jako DNS server?; Hosts@ IN A 192.168.1.101meridius-desktop IN A 192.168.1.101station1 IN A 192.168.1.102pip-pc IN A 192.168.1.103gw IN A 192.168.1.1; Alias namesdns IN CNAME meridius-desktopmail IN CNAME meridius-desktoppop3 IN CNAME meridius-desktopsmtp IN CNAME meridius-desktopvysvětlení:
TTL - Time-To-Live záznamu
@ - ????
IN - Inter/intra Net. Používá se vždy a všude. Další volby existují jen z historických důvodů.
SOA - Start of Authority
MX - Mail eXchange
A - Address record
CNAME - Canonical NAME
TTL a SOA čísla jsou doby ve vteřinách.
Identifikační číslo záznamu v souboru definice zóny i v reverzním se musí po každé změně před restartem démona inkrementovat.
Uvozující závorka "(" v SOA záznamu musí být za emailem správce.
Číslo před názvem mail serveru je jeho preference number. Pokud je v síti více mail serverů, DNS server se podle něj rozhoduje, jakému z nich se pokusí email předat dříve. Čím nižší má mail server toto číslo, tím spíše se pro něj DNS server rozhodne.
A do souboru /etc/bind/zones/rev.1.168.192.in-addr.arpa si zapíšeme tabulku pro reverse lookup.
; BIND Reverse Zone file for mydomain.com$TTL 86400@ IN SOA meridius-desktop.mydomain.com. admin.mydomain.com. ( 2010051702 21600 3600 604800 86400 ); Nameserver@ IN NS meridius-desktop.; Hosts101 IN PTR meridius-desktop.mydomain.com.102 IN PTR station1.mydomain.com.103 IN PTR pip-pc.mydomain.com.1 IN PTR gw.mydomain.com.vysvětlení:
PTR - PoinTer Record
Pro každý A záznam v souboru definice zóny, musí být v reverzním souboru jeden PTR záznam.
Nakonec zbývá restartovat Bind.
$ sudo /etc/init.d/bind9 restartA otestovat funkční doménu:
Můžeme použít buď ping na celou doménu, nebo na různé A, či CNAME záznamy.
Nebo příkaz dig.
$ dig 1.168.192.in-addr.arpa. AXFR; <<>> DiG 9.7.0-P1 <<>> 1.168.192.in-addr.arpa. AXFR;; global options: +cmd1.168.192.in-addr.arpa. 86400 IN SOA meridius-desktop.mydomain.com. admin.mydomain.com. 2010051702 21600 3600 604800 864001.168.192.in-addr.arpa. 86400 IN NS meridius-desktop.1.1.168.192.in-addr.arpa. 86400 IN PTR gw.mydomain.com.101.1.168.192.in-addr.arpa. 86400 IN PTR meridius-desktop.mydomain.com.102.1.168.192.in-addr.arpa. 86400 IN PTR station1.mydomain.com.103.1.168.192.in-addr.arpa. 86400 IN PTR pip-pc.mydomain.com.1.168.192.in-addr.arpa. 86400 IN SOA meridius-desktop.mydomain.com. admin.mydomain.com. 2010051702 21600 3600 604800 86400;; Query time: 13 msec;; SERVER: 192.168.1.101#53(192.168.1.101);; WHEN: Mon May 17 20:54:15 2010;; XFR size: 7 records (messages 1, bytes 266)$ dig mydomain.com. AXFR; <<>> DiG 9.7.0-P1 <<>> mydomain.com. AXFR;; global options: +cmdmydomain.com. 86400 IN SOA meridius-desktop.mydomain.com. admin.mydomain.com. 2010051701 21600 3600 604800 86400mydomain.com. 86400 IN NS meridius-desktop.mydomain.com.mydomain.com. 86400 IN A 192.168.1.101dns.mydomain.com. 86400 IN CNAME meridius-desktop.mydomain.com.gw.mydomain.com. 86400 IN A 192.168.1.1mail.mydomain.com. 86400 IN CNAME meridius-desktop.mydomain.com.meridius-desktop.mydomain.com. 86400 IN A 192.168.1.101pip-pc.mydomain.com. 86400 IN A 192.168.1.103pop3.mydomain.com. 86400 IN CNAME meridius-desktop.mydomain.com.smtp.mydomain.com. 86400 IN CNAME meridius-desktop.mydomain.com.station1.mydomain.com. 86400 IN A 192.168.1.102mydomain.com. 86400 IN SOA meridius-desktop.mydomain.com. admin.mydomain.com. 2010051701 21600 3600 604800 86400;; Query time: 2 msec;; SERVER: 192.168.1.101#53(192.168.1.101);; WHEN: Mon May 17 21:03:46 2010;; XFR size: 12 records (messages 1, bytes 313)Hledání chyb
Pokud by dig výpis nevypadal obdobně, jako výše, chybu najdeme buď v konfiguračních souborech zóny:
$ named-checkzone mydomain.com /etc/bind/zones/mydomain.com.db$ named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/rev.1.168.192.in-addr.arpanebo ve výpisu systémového logu
$ cat /var/log/syslog | grep -e namedStalo se mi, že mi server zahlásil
$ sudo /etc/init.d/bind9 restart* Stopping domain name service... bind9rndc: connect failed: 127.0.0.1#953: connection refused[ OK ]* Starting domain name service... bind9[ OK ]ale asi po 5 minutách jsem jej restartoval znovu (nic jsem neměnil) a chyba se již neobjevila.
Windows
Linux
editovat soubor /etc/hosts a přidat do něj
192.168.1.101 meridius-desktop.mydomain.com meridius-desktopa nakonec ještě do souboru /etc/resolv.conf přidat IP adresu a jméno naší domény. Tečka za "com" je důležitá! - pokud by se nepoužila, adresa by se doplnila o název domény -> mydomain.com.mydomain.com
search mydomain.com.
nameserver 192.168.1.101nameserver 217.117.216.72nameserver 217.117.216.7Zdroje:
http://ulyssesonline.com/2007/11/07/how-to-setup-a-dns-server-in-ubuntu/
https://help.ubuntu.com/community/BIND9ServerHowto
http://www.abclinuxu.cz/clanky/site/nastaveni-dns
http://www.abclinuxu.cz/clanky/site/soukroma-sit-ii
http://www.redhat.com/docs/manuals/linux/RHL-7.2-Manual/ref-guide/s1-bind-configuration.html