Konfigurace je standardně v
/etc/unbound/unbound.conf.
Síť
Ve výchozím stavu server naslouchá jen na localhostu. Aby byl server dostupný i pro další stanice v síti, je nutné přidat IP adresu nakonfigurovaného síťového rozhraní a nebo povolit naslouchání na všech adresách. Přidáme i IPv6 adresy pokud máme v síti.interface: 0.0.0.0
interface: ::0
Není od věci zapnout IPv6 a také TCP na portu 53. Standardně je DNS samozřejmě na UDP 53 již povoleno.
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
Server umí i klasické access listy. Pravděpodobně chceme, aby náš DNS server obsluhoval jen klienty v naší lokální síti a ne v celém internetu. Pro překlad "uvnitř" serveru povolíme IPv4/IPv6 loopback.
access-control: 10.0.0.0/24 allow
access-control: 2a00:..../64 allow
access-control: fe80::/64 allow
access-control: ::1 allow
DNSSEC
Podpora DNSSECu by měla být již zapnutá ve výchozím nastavení. Pokud tomu tak není, tak odkomentujeme, nebo přidáme tento řádek:auto-trust-anchor-file: "/var/lib/unbound/root.key"
Soubor /var/lib/unbound/root.key vypadá nějak takto:
; autotrust trust anchor file
;;id: . 1
;;last_queried: 1476288795 ;;Wed Oct 12 18:13:15 2016
;;last_success: 1476288795 ;;Wed Oct 12 18:13:15 2016
;;next_probe_time: 1476292286 ;;Wed Oct 12 19:11:26 2016
;;query_failed: 0
;;query_interval: 3600
;;retry_time: 3600
. 172800 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6
v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg3
7NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQp
zW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ip
AdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0=
;{id = 19036 (ksk), size = 2048b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1476036425 ;;Sun Oct 9 20:07:05 2016
Nejdůležitější je samozřejmě veřejný klíč (červeně), kterým je ověřen kořen DNS stromu. Pokud klíč nemáte, nebo nechcete ten to přišel s instalací Unboundu, lze jej získat jako jakýkoli jiný zónový záznam nástrojem dig.
Dotaz:
dig . dnskey +multiline
Odpověď:
;; Truncated, retrying in TCP mode.
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> . dnskey +multiline
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60959
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;. IN DNSKEY
;; ANSWER SECTION:
. 172786 IN DNSKEY 256 3 8 ( AwEAAcCsATzyk1Hj1xabagAGWi9sZSbB+igdzDM8CMZ5 fPcOb314yP9/lmvidoBuApPlMVwlz0lXaj6gzyjoOKBv eoDD0VyHTqjCDg9UrcDoClNZciR2sHZoaMZp2yVNFyaC +7MkA8lsrCShieYPEowSjQdkvY5ONlEib/ATXdmAhfgB
) ; key id = 46551
. 172786 IN DNSKEY 256 3 8 (AwEAAYbinauHA9oUb4aGNtJIrepyGoYy0OL01rvIhvo RWN/Ch8p2C4ZEkpvUYkx74r9JpgrOsjKOv+JQdKtT2u8 AxGjUoH8x8HdpDiMV7XnpWJo9wAxlFtDtbMnPwRQ3dWs T1p5myrGcm7EFJ9j7KmiAEG5hGsevZqcnqMOW9QFkmp/ zM0TFYXYWq6AsAof2uZqLUyd+nHIW0TGsaHMzcTNfA8W w+OYV7R4bcR/8edCEo6OAh9j48R1hRtuO1e2MQdnkITc 9DJljB4Cq1gQKwv/ku7mAvmFuWkRotMZIFN3vDhpmpmy 7M0C1EHSRAgP+HkblLRQKOPnwI/VksJEU4fmnhk=
) ; key id = 39291
. 172786 IN DNSKEY 257 3 8 (
AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQ bSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh /RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWA
JQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXp oY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3 LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGO Yl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGc LmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0=
) ; key id = 19036
;; Query time: 21 msec
;; SERVER: ::1#53(::1)
;; WHEN: Wed Oct 12 18:28:41 2016
;; MSG SIZE rcvd: 714
Funkčnost DNSSECu na našem serveru se ověří například opět digem.
Dotaz:
dig . +dnssec @localhost | grep ad
Odpověď:
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1
Příznak ad značí aktivní DNSSEC validaci.
root.hints
Unbound má standardně předkonfigurované některé kořenové DNS servery, resp. jejich IP adresy, takže funguje tzv. "out of box". Pokud chceme mít kontrolu nad IPv4 a IPv6 adresami root DNS serverů, je potřeba si stáhnout jejich seznam z důvěryhodného zdroje. Například z InterNICu (spadá pod Verisign), což je provozovatel jednoho z root DNS serverů:wget -S -N https://www.internic.net/domain/named.cache -O /etc/unbound/root.hints
A pak jen na tento soubor odkázat v konfiguraci Unboundu:
root-hints: "/etc/unbound/root.hints"
Statické záznamy a vlastní doména
Unbound sice není plnohodnotným autoritativním serverem, nicméně umožňuje definovat vlastní zónu, ve které si vytvoříme patřičné záznamy pro naši doménu.Nejprve definujeme zónu (příklad pro doménu .home použitou pouze v lokální síti):
local-zone: "home." static
Definice A záznamu:
local-data: "pc1.home. IN A 10.0.0.1"
Podobně lze definovat další záznamy jako AAAA, MX, atd...
Reverzní, tzv. PTR záznam má syntaxi:
local-data-ptr: "10.0.0.1 pc1.home"