Unbound je bezplatný, open-source, rekurzivní a ověřující server pro ukládání do mezipaměti DNS. K šifrování spojení mezi klienty používá DNS-over-TLS a DNS-over-HTTPS. Ve srovnání s Bind9 je Unbound lehký a extrémně rychlý. Server pro ukládání do mezipaměti vám pomůže zkrátit dobu načítání webu tím, že bude databázi mezipaměti udržovat na nevázaném serveru. Je také schopen validace DNSSEC a může sloužit jako důvěryhodná kotva.
V tomto příspěvku vám ukážeme, jak nastavit Unbound DNS Resolver na Ubuntu 20.04.
Předpoklady
- Nový server Ubuntu 20.04 na cloudové platformě Atlantic.Net
- Heslo uživatele root nakonfigurované na vašem serveru
Krok 1 – Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte Ubuntu 20.04 s alespoň 2 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte ke svému serveru Ubuntu 20.04, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
apt-get update -y
Krok 2 – Instalace požadovaných závislostí
Než začnete, budete muset do svého systému nainstalovat některé základní nástroje DNS. Všechny je můžete nainstalovat pomocí následujícího příkazu:
apt-get install bind9-utils dnsutils net-tools -y
Jakmile jsou všechny balíčky nainstalovány, můžete přejít k dalšímu kroku.
Krok 3 – Instalace a konfigurace nevázaných DNS
apt-get install unbound -y
Po instalaci Unbound DNS jej budete muset nakonfigurovat. Ve výchozím nastavení je hlavní konfigurační soubor Unbound umístěn v /etc/unbound/unbound.conf. Doporučuje se však vytvořit samostatný konfigurační soubor:
nano /etc/unbound/unbound.conf.d/myunbound.conf
Přidejte následující řádky:
server: port: 53 verbosity: 0 num-threads: 2 outgoing-range: 512 num-queries-per-thread: 1024 msg-cache-size: 32m interface: 0.0.0.0 rrset-cache-size: 64m cache-max-ttl: 86400 infra-host-ttl: 60 infra-lame-ttl: 120 access-control: 127.0.0.0/8 allow access-control: 0.0.0.0/0 allow username: unbound directory: "/etc/unbound" logfile: "/var/log/unbound.log" use-syslog: no hide-version: yes so-rcvbuf: 4m so-sndbuf: 4m do-ip4: yes do-ip6: no do-udp: yes do-tcp: yes remote-control: control-enable: yes control-port: 953 control-interface: 0.0.0.0
Uložte a zavřete soubor a poté ověřte konfigurační soubor pomocí následujícího příkazu:
unbound-checkconf /etc/unbound/unbound.conf.d/myunbound.conf
Měli byste získat následující výstup:
unbound-checkconf: no errors in /etc/unbound/unbound.conf.d/myunbound.conf
Dále vytvořte soubor protokolu pro Unbound a nastavte správná oprávnění:
touch /var/log/unbound.log chown unbound:unbound /var/log/unbound.log
Krok 4 – Spusťte službu Unbound DNS
V tomto okamžiku je nainstalován a nakonfigurován Unbound DNS. Nyní restartujte službu Unbound a povolte její spuštění při restartu systému:
systemctl restart unbound systemctl enable unbound
Stav Unbound můžete také ověřit pomocí následujícího příkazu:
systemctl status unbound
Ukázkový výstup:
● unbound.service - Unbound DNS server Loaded: loaded (/lib/systemd/system/unbound.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-08-15 06:30:33 UTC; 7s ago Docs: man:unbound(8) Process: 2788 ExecStartPre=/usr/lib/unbound/package-helper chroot_setup (code=exited, status=0/SUCCESS) Process: 2791 ExecStartPre=/usr/lib/unbound/package-helper root_trust_anchor_update (code=exited, status=0/SUCCESS) Main PID: 2804 (unbound) Tasks: 2 (limit: 2353) Memory: 4.8M CGroup: /system.slice/unbound.service └─2804 /usr/sbin/unbound -d Aug 15 06:30:32 ubuntu2004 systemd[1]: Starting Unbound DNS server... Aug 15 06:30:33 ubuntu2004 package-helper[2796]: /var/lib/unbound/root.key has content Aug 15 06:30:33 ubuntu2004 package-helper[2796]: success: the anchor is ok Aug 15 06:30:33 ubuntu2004 systemd[1]: Started Unbound DNS server.
V tomto okamžiku je spuštěna služba Unbound a naslouchá na portu 53. Můžete to zkontrolovat pomocí následujícího příkazu:
ss -antpl | grep 53
Ukázkový výstup:
LISTEN 0 256 0.0.0.0:53 0.0.0.0:* users:(("unbound",pid=3407,fd=6)) LISTEN 0 256 0.0.0.0:53 0.0.0.0:* users:(("unbound",pid=3407,fd=4)) LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=356,fd=13)) LISTEN 0 256 0.0.0.0:953 0.0.0.0:* users:(("unbound",pid=3407,fd=7))
Krok 5 – Test nevázaných DNS
Nyní budete muset použít příkaz dig a provést několik DNS dotazů, abyste otestovali Unbound DNS server.
K testování použijeme ubuntu.com.
dig ubuntu.com @localhost
Ukázkový výstup:
; <<>> DiG 9.16.1-Ubuntu <<>> ubuntu.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6037 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ubuntu.com. IN A ;; ANSWER SECTION: ubuntu.com. 60 IN A 91.189.88.181 ubuntu.com. 60 IN A 91.189.88.180 ;; Query time: 307 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 15 06:32:18 UTC 2021 ;; MSG SIZE rcvd: 71
Jak vidíte, čas dotazu je 307 msec v prvním dotazu. Váš dotaz je nyní uložen do mezipaměti.
Dále spustíme stejný dotaz znovu:
dig ubuntu.com @localhost
Ukázkový výstup:
; <<>> DiG 9.16.1-Ubuntu <<>> ubuntu.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37832 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ubuntu.com. IN A ;; ANSWER SECTION: ubuntu.com. 49 IN A 91.189.88.180 ubuntu.com. 49 IN A 91.189.88.181 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 15 06:33:36 UTC 2021 ;; MSG SIZE rcvd: 71
Jak vidíte, čas dotazu je 0 ms.
Nevázaný server DNS můžete také otestovat z klientského počítače. V tomto případě budete muset zadat IP vašeho Unbound DNS serveru pomocí dotazu:
dig ubuntu.com @69.87.221.220
Ukázkový výstup:
; <<>> DiG 9.9.5-3ubuntu0.4-Ubuntu <<>> ubuntu.com @69.87.221.220 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 28051 ;; flags: qr rd ad; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; Query time: 365 msec ;; SERVER: 69.87.221.220#53(69.87.221.220) ;; WHEN: Sun Aug 15 12:04:37 IST 2021 ;; MSG SIZE rcvd: 12
Krok 6 – Odstraňování problémů bez vazby
Pokud chcete zkontrolovat stav Unbound DNS, spusťte následující příkaz:
unbound-control status
Ukázkový výstup:
version: 1.9.4 verbosity: 0 threads: 2 modules: 3 [ subnet validator iterator ] uptime: 65 seconds options: reuseport control(ssl) unbound (pid 3407) is running...
Pokud chcete zálohovat mezipaměť DNS do textového souboru, spusťte následující příkaz:
unbound-control dump_cache > cache.txt
Soubor cache.txt můžete ověřit pomocí následujícího příkazu:
cat cache.txt
Ukázkový výstup:
START_RRSET_CACHE END_RRSET_CACHE START_MSG_CACHE END_MSG_CACHE EOF
V některých případech váš server DNS nemůže odpovědět na váš dotaz. V tomto případě můžete vyprázdnit mezipaměť DNS pomocí následujícího příkazu:
unbound-control flush ubuntu.com
Závěr
Ve výše uvedené příručce jsme vysvětlili, jak nainstalovat a používat mezipaměťový server Unbound DNS na Ubuntu 20.04. Provedli jsme také nějaké testování pomocí příkazu dig k dotazu na Unbound DNS a získání odpovědi. Vyzkoušejte to na svém VPS od Atlantic.Net ještě dnes!