Dnsmasq znamená „zkratka pro DNS maškaráda“ je jednoduchý, lehký a snadno použitelný DNS forwarder používaný pro malou síť. Lze jej nakonfigurovat jako mezipaměť DNS a server DHCP a podporuje protokoly IPv4 i IPv6. Když obdrží jakékoli dotazy DNS, odpoví na ně ze své mezipaměti nebo je předá jinému serveru DNS.
Dnsmasq se skládá ze tří podsystémů:
- DNS subsystém: Používá se pro ukládání různých typů záznamů do mezipaměti, včetně A, AAAA, CNAME a PTR.
- Podsystém DHCP: Podporuje DHCPv4, DHCPv6, BOOTP a PXE
- Podsystém inzerce směrovače: Poskytuje základní autokonfiguraci pro hostitele IPv6. Může být použit samostatně nebo ve spojení s DHCPv6.
V tomto tutoriálu vám ukážeme, jak nastavit místní DNS server s Dnsmasq na serveru Ubuntu 20.04.
Předpoklady
- Server se systémem Ubuntu 20.04.
- Na serveru je nakonfigurováno heslo uživatele root.
Začínáme
Nejprve se doporučuje aktualizovat systémové balíčky na nejnovější verzi. Všechny balíčky můžete aktualizovat spuštěním následujícího příkazu:
apt-get update -y
Po aktualizaci všech balíčků budete muset ve vašem systému zakázat službu Systemd-resolved. Služba Systemd-resolved se používá k překladu názvů sítě do místních aplikací.
Můžete jej zakázat spuštěním následujícího příkazu:
systemctl disable --now systemd-resolved
Jakmile je služba deaktivována, budete muset odstranit výchozí soubor resolv.conf a vytvořit nový s podrobnostmi o vašem vlastním serveru DNS.
Výchozí soubor resolv.conf můžete odstranit pomocí následujícího příkazu:
rm -rf /etc/resolv.conf
Dále přidejte server DNS Google do souboru resolv.conf pomocí následujícího příkazu:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Instalovat Dnsmasq
Ve výchozím nastavení je Dnsmasq k dispozici ve výchozím úložišti Ubuntu 20.04. Můžete jej nainstalovat pouhým spuštěním následujícího příkazu:
apt-get install dnsmasq dnsutils ldnsutils -y
Po dokončení instalace se automaticky spustí služby Dnsmasq. Stav Dnsmasq můžete zkontrolovat pomocí následujícího příkazu:
systemctl status dnsmasq
Měli byste získat následující výstup:
dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago Main PID: 17726 (dnsmasq) Tasks: 1 (limit: 2282) Memory: 868.0K CGroup: /system.slice/dnsmasq.service ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e> Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server... Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK. Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150 Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi> Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53 Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Konfigurovat Dnsmasq
Dále budete muset nakonfigurovat Dnsmasq jako místní server DNS. Můžete to udělat úpravou hlavního konfiguračního souboru Dnsmasq:
nano /etc/dnsmasq.conf
Změňte následující řádky:
port=53 domain-needed bogus-priv listen-address=127.0.0.1,your-server-ip expand-hosts domain=dns-example.com cache-size=1000
Po dokončení uložte a zavřete soubor.
Dále budete muset přidat IP adresu vašeho serveru jako primární jmenný server do vašeho souboru resolv.conf. Můžete jej přidat pomocí následujícího příkazu:
nano /etc/resolv.conf
Přidejte následující řádek nad řádek "nameserver 8.8.8.8":
nameserver your-server-ip
Po dokončení uložte a zavřete soubor. Dále ověřte server, zda nedošlo k chybě konfigurace, pomocí následujícího příkazu:
dnsmasq --test
Pokud je vše v pořádku, měli byste získat následující výstup:
dnsmasq: syntax check OK.
Nakonec restartujte službu Dnsmasq, aby se změny projevily:
systemctl restart dnsmasq
V tomto okamžiku se Dnsmasq spustí a naslouchá na portu 53. Můžete to ověřit pomocí následujícího příkazu:
ss -alnp | grep -i :53
Měli byste získat následující výstup:
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=4)) udp UNCONN 0 0 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=6)) tcp LISTEN 0 32 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=5)) tcp LISTEN 0 32 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=7))
Přidat záznamy DNS na server Dnsmasq
Dále budete muset upravit svůj soubor /etc/hosts a přidat položku místního serveru DNS.
nano /etc/hosts
Přidejte následující řádek:
your-server-ip host1.dns-example.com
Po dokončení uložte a zavřete soubor.
Ověřit rozlišení serveru Dnsmasq
V tomto okamžiku je Dnsmasq nainstalován a nakonfigurován. Ne, je čas ověřit překlad DNS.
Pro kontrolu rozlišení DNS můžete použít příkaz dig, jak je ukázáno níže:
dig host1.dns-example.com +short
Pokud je vše v pořádku, měli byste v následujícím výstupu vidět ip vašeho serveru:
your-server-ip
Externí překlad DNS můžete také ověřit pomocí následujícího příkazu:
dig howtoforge.com +short
Měli byste získat následující výstup:
172.67.68.93 104.26.3.165 104.26.2.165
Konfigurace vzdáleného klienta pro použití serveru DNS Dnsmasq
Dále budete muset nakonfigurovat vzdáleného klienta, aby používal váš server DNS Dnsmasq jako výchozí server DNS.
Nejprve nainstalujte nástroje DNS pomocí následujícího příkazu:
apt-get install dnsutils ldnsutils -y
Po instalaci budete muset upravit soubor /etc/resolv.conf a položku serveru DNS Dnsmasq.
nano /etc/resolv.conf
Na začátek souboru přidejte následující řádek:
nameserver your-server-ip
Po dokončení uložte a zavřete soubor.
Dále ověřte místní překlad DNS pomocí následujícího příkazu:
dig host1.dns-example.com
Měli byste vidět následující výstup:
; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com ;; global options: +cmd ;; Got answer: ;; HEADER opcode: QUERY, status: NOERROR, id: 26401 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;host1.dns-example.com. IN A ;; ANSWER SECTION: host1.dns-example.com. 0 IN A 45.58.32.165 ;; Query time: 301 msec ;; SERVER: 45.58.32.165#53(45.58.32.165) ;; WHEN: Mon Nov 02 16:49:37 IST 2020 ;; MSG SIZE rcvd: 66
Dále budete muset ověřit váš server DNS pro ukládání do mezipaměti. Můžete to zkontrolovat pomocí nástroje drill.
Nejprve spusťte následující příkaz:
drill google.com | grep "Query time"
Měli byste vidět následující výstup:
;; Query time: 290 msec
Poté znovu spusťte příkaz a zkontrolujte, zda ukládání do mezipaměti funguje nebo ne:
drill google.com | grep "Query time"
Měli byste vidět, že doba dotazu se nyní snižuje na 4 ms:
;; Query time: 4 msec
Závěr
Gratulujeme! úspěšně jste nainstalovali a nakonfigurovali Dnsmasq jako místní server DNS a Ubuntu 20.04. Doufám, že jej nyní můžete snadno implementovat do vaší místní sítě pro překlad názvů.