dnsmasq
Dnsmasq je DHCP server a DNS forwarder. O některých problémech a nastavení píšu už tady: Bananapi. Výborný článek na vysvětlení a konfiguraci je: How to Setup a DNS/DHCP Server Using dnsmasq on CentOS/RHEL 8/7.
Dnsmasq konfiguruji v nově vytvořeném souboru: /etc/dnsmasq.d/settings.conf
přidělení jiného DNS serveru
Když si nějaké zařízení vyžádá nastavení IP adres z DHCP, tak mu dnsmasq přidělí IP adresu zařízení, na kterém běží. Pokud chci přidělit jiný DNS server - třeba jiný, na kterém mi běží Pi Hole, tak je potřeba do konfiguračního souboru přidat:
dhcp-option=6,192.168.1.200,8.8.8.8
Číslo 6 u parametru dhcp-option označuje typ DHCP option, který se má poslat klientovi. Číslo 6 označuje DHCP option pro DNS server. V parametru je vidět, že je nastaven primární DNS server a sekundární DNS server 8.8.8.8. Kvůli pihole jsem ale nakonec sekundární server umazal, protože blokace na pihole by byly obejíty právě sekundárním serverem.
DHCP (Dynamic Host Configuration Protocol) poskytuje klientům IP adresy a další síťové konfigurace, jako je brána, maska podsítě a další. DHCP option umožňuje poslat klientům další informace potřebné k nastavení síťového připojení.
Existuje mnoho různých typů DHCP option, které se mohou použít, například:
1: Subnet Mask 3: Router (Default Gateway) 6: DNS Server 15: Domain Name 42: NTP Server 43: Vendor Specific Information
Číslo DHCP optionu určuje, jaký typ informace se má klientovi poslat.
Takže tím nastavím, že zařízení, které se připojí do sítě, bude používat DNS server 192.168.1.200.
Původně jsem si to pletl s nastavením:
server=1.1.1.1 server=8.8.8.8
Toto nastavení ale říká, že dnsmasq sám bude používat tyto DNS servery na dotazování - hledání názvů, které nezná.
Když dnsmasq dostane požadavek na jméno, které není v jeho vlastní cache, bude se obrátit na zadaný DNS server (1.1.1.1 v tomto případě) pro odpověď. Pokud máte nastaveno více než jedno DNS server, dnsmasq se obrátí na každý z nich po jednom, pokud předchozí nebyl schopen odpovědět. Další řádek je sekundární DNS server.
ověření přidělených DNS serverů
Pokud bych chtěl ověřit na jiném počítači, jaké dns servery má nastavené, tak použiji příkaz:
resolvectl status Link 2 (wlo1) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 192.168.1.200 DNS Servers: 192.168.1.200 8.8.8.8
nastavení překladu vlastí domény
Velmi užitečná záležitost ve vlastí síti. Dejme tomu, že chci, aby byla doména „garmin.cn“ přesměrována na můj vlastní server v lokální síti - tedy 192.168.1.20. Pak tedy přidám řádek:
address=/garmin.cn/192.168.1.20
Je to velmi užitečné ve vnitřní síti pro běžné uživatele, že si mohou pro adresování počítačů pamatovat tento název a nemusí používat IP adresy konkrétních strojů. Nebo to může sloužit k přesměrování existující domény někam jinam. Další alternativou je využít PI Hole o kterém jsem psal v příspěvku: Hodinky Garmin a volání API.
ověření konfigurace dnsmasq a restart
dnsmasq --test
systemctl restart dnsmasq
zrušení již přidělených IP adres
Když jsem v souboru namapoval IP adresu na konkrétní MAC adresu, tak nepomohl ani restart dnsmasq a nové připojení zařízení s MAC adresou k síti. Pořád mu byla přidělována stará IP adresa.
Pak jsem objevil, že dnsmasq má seznam už přidělených IP adres - řekněme textovou databázi a přiděluje podle ní a nikoli podle změn v konfiguračním souboru. Takže jsem jenom promazal databázi v souboru /var/lib/misc/dnsmasq.leases a změny se mohly projevit.