Domain Name System (DNS) je hierarchický distribuovaný systém pojmenování pro počítače, služby nebo jakýkoli zdroj připojený k internetu nebo privátní síti. Sdružuje různé informace s názvy domén přiřazenými každé ze zúčastněných entit.
A co je nejdůležitější, převádí názvy domén, které mají význam pro lidi, do číselných identifikátorů spojených se síťovým vybavením za účelem lokalizace a adresování těchto zařízení po celém světě.
Tato příručka vám pomůže nastavit server DNS na CentOS 8 / RHEL 8.
Předpoklady
Název hostitele: ns1.itzgeek.local
IP adresa: 192.168.0.10
Instalace serveru DNS
BIND je zkratka pro Berkeley Internet Name Domain, software, který umožňuje provádět konverzi jména na IP.
yum -y install bind bind-utils
Konfigurace serveru DNS
Hlavní konfigurační soubor BIND je /etc/named.conf. Tento soubor použijeme ke konfiguraci serveru DNS a definování zóny DNS.
BIND standardně naslouchá na localhost. Nakonfigurujeme tedy servery DNS, aby naslouchaly na všech síťových rozhraních nebo na konkrétním rozhraní.
Upravte soubor /etc/named.conf.
vi /etc/named.conf
Zakomentujte následující řádek. To umožní BINDu naslouchat systémovým síťovým rozhraním jiným než localhost.
Poslouchat na všech IP adresách:
//listen-on port 53 { 127.0.0.1; }; //listen-on-v6 port 53 { ::1; };
Poslouchejte na konkrétní IP adrese:
listen-on port 53 { 127.0.0.1; 192.168.0.10; };
Přidejte svou síť v následujícím řádku. Přidal jsem 192.168.0.0/24, abych umožnil klientům ze sítě 192.168.0.0/24 dotazovat se serveru DNS na překlad názvu do IP.
allow-query { localhost;192.168.0.0/24; };
Vytvořit zóny
Upravte soubor /etc/named.conf.
vi /etc/named.conf
Dopředná zóna
Následuje záznam dopředné zóny v souboru named.conf napsaného pro doménu itzgeek.local.
zone "itzgeek.local" IN { // Domain Name type master; // Master DNS Server file "itzgeek.local.db"; // Zone File (/var/named/) allow-update { none; }; // Since master DNS, it is none };
itzgeek.local – Název domény
master – Primární DNS
itzgeek.local.db – Soubor dopředného vyhledávání
aktualizace povolení – Vzhledem k tomu, že se jedná o hlavní DNS, neměl by být žádný
Reverzní zóna
Následuje záznam reverzní zóny v souboru named.conf.
zone "0.168.192.in-addr.arpa" IN { // Reverse Zone Name, should match with network in reverse order type master; // Master DNS Server file "192.168.0.db"; // Zone File (/var/named/) allow-update { none; }; // Since master DNS, it is none };
0.168.192.in-addr.arpa – Název zpětného vyhledávání
master – Primární DNS
192.168.0.db – Soubor zpětného vyhledávání
aktualizace povolení – Vzhledem k tomu, že se jedná o hlavní DNS, neměl by být žádný
Vytvořit soubory zóny
Nyní je čas vytvořit vyhledávací soubor pro vytvořenou zónu. Ve výchozím nastavení jsou soubory pro vyhledávání zóny umístěny v adresáři /var/named. Vytvořte soubor zóny s názvem itzgeek.local.db pro dopředné vyhledávání v adresáři /var/named.
Všechny názvy domén by měly končit tečkou (.).
Dopředná zóna
Existuje několik speciálních klíčových slov pro soubory zóny
Vytvořte soubor.
vi /var/named/itzgeek.local.db
A – záznam
NS – Názvový server
MX – Mail for Exchange
CNAME – Kanonický název
$TTL 86400 @ IN SOA ns1.itzgeek.local. root.itzgeek.local. ( 3 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS ns1.itzgeek.local. ;IP address of Name Server ns1 IN A 192.168.0.10 ;Mail exchanger itzgeek.local. IN MX 10 mail.itzgeek.local. ;A - Record HostName To Ip Address www IN A 192.168.0.100 mail IN A 192.168.0.150 ;CNAME record ftp IN CNAME www.itgeek.local.
Kdykoli aktualizujete soubory zóny pro aktualizaci záznamu DNS, nezapomeňte zvýšit sériové číslo.
Reverzní zóna
Vytvořte soubor zóny s názvem 192.168.0.db pro reverzní zónu v adresáři /var/named, vytvořte zpětný ukazatel na výše uvedené položky dopředné zóny.
vi /var/named/192.168.0.db
PTR – Ukazatel
SOA – Začátek oprávnění
$TTL 86400 @ IN SOA ns1.itzgeek.local. root.itzgeek.local. ( 3 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) ;Name Server Information @ IN NS ns1.itzgeek.local. ;Reverse lookup for Name Server 10 IN PTR ns1.itzgeek.local. ;PTR Record IP address to HostName 100 IN PTR www.itzgeek.local. 150 IN PTR mail.itzgeek.local.
Kdykoli aktualizujete soubory zóny pro aktualizaci záznamu DNS, nezapomeňte zvýšit sériové číslo.
Ověřit konfiguraci serveru DNS
Použijte příkaz named-checkconf k ověření konfiguračního souboru.
named-checkconf /etc/named.conf
Pokud nevidíte žádnou chybu, můžete začít.
Pomocí níže uvedeného příkazu ověřte soubor dopředné zóny, který jste vytvořili.
named-checkzone itzgeek.local /var/named/itzgeek.local.db
itzgeek.local – Název domény
/var/named/itzgeek.local.db – Cesta k souboru zóny
Výstup:
zone itzgeek.local/IN: loaded serial 3 OKSériové číslo uvedené ve výstupu by se mělo shodovat se sériovým číslem v souborech zóny.
Proveďte totéž pro reverzní zónu.
named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.db
Výstup:
zone 0.168.192.in-addr.arpa/IN: loaded serial 3 OK
Spustit službu DNS
Jakmile ověříte konfigurace DNS, restartujte službu vazby.
systemctl restart named
Povolte jej při spuštění systému.
systemctl enable named
Aktualizace záznamu DNS
Kdykoli změníte DNS záznam, nezapomeňte změnit sériové číslo v souboru zóny a znovu načíst zónu.
Změňte itzgeek.local &0.168.192.in-addr.arpa pomocí názvů zón.
### Forward Zone ### rndc reload itzgeek.local ### Reverse Zone ### rndc reload 0.168.192.in-addr.arpa
Firewall
Přidejte pravidlo brány firewall, které umožní dotazy DNS z klientských počítačů.
firewall-cmd --permanent --add-port=53/udp firewall-cmd --reload
Ověřte server DNS
Pokud Network Manager síť nespravuje, navštivte libovolný klientský počítač a přidejte IP adresu DNS serveru do /etc/resolv.conf.
nameserver 192.168.0.10
Pokud Network Manager spravuje síť, vložte následující položku do souboru /etc/sysconfig/network-scripts/ifcfg-eXX.
DNS1=192.168.0.10
Restartujte síťovou službu.
service network restart OR systemctl restart NetworkManager
Pomocí následujícího příkazu ověřte dopředné vyhledávání, kde server DNS udává 192.168.0.100 jako ip pro www.itzgeek.local .
dig www.itzgeek.local
Výstup:
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> www.itzgeek.local ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42679 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 99d94df91828bc8e957709ec5e13f9cd0c242970a9488a91 (good) ;; QUESTION SECTION: ;www.itzgeek.local. IN A ;; ANSWER SECTION: www.itzgeek.local. 86400 IN A 192.168.0.100 ;; AUTHORITY SECTION: itzgeek.local. 86400 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Tue Jan 07 08:53:56 IST 2020 ;; MSG SIZE rcvd: 124Nainstalujte balíček bind-utils, abyste získali příkaz nslookup nebo dig.
Potvrďte zpětné vyhledávání, kde server DNS uvádí www.itzgeek.local jako název pro 192.168.0.100 . Nyní je potvrzeno, že dopředné i zpětné vyhledávání fungují dobře.
dig -x 192.168.0.100
Výstup:
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> -x 192.168.0.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43305 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: d36aa24edb88f8951b3fbf8c5e13fa2cbf0e3ed754a00eee (good) ;; QUESTION SECTION: ;100.0.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 100.0.168.192.in-addr.arpa. 86400 IN PTR www.itzgeek.local. ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 86400 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 86400 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.10#53(192.168.0.10) ;; WHEN: Tue Jan 07 08:55:30 IST 2020 ;; MSG SIZE rcvd: 148
Závěr
To je vše. Úspěšně jste nainstalovali BIND na CentOS 8 / RHEL 8 jako hlavní server. V našem dalším článku uvidíme, jak nakonfigurovat podřízený DNS server na CentOS 8 / RHEL 8.