it:server:dnsmasq

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

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.

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

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.

dnsmasq --test
systemctl restart dnsmasq

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.

  • it/server/dnsmasq.txt
  • Poslední úprava: 2023/06/06 23:06
  • autor: Petr Nosek