V konfiguračním souboru pro rozhraní místní sítě (soubor odpovídající vzoru názvu /etc/systemd/network/*.network
) musíme buď zadat, že chceme získat adresu lokálního DNS serveru z DHCP serveru pomocí DHCP=
možnost:
[Network]
DHCP=yes
nebo specifikujte jeho adresu explicitně pomocí DNS=
možnost:
[Network]
DNS=10.0.0.1
Navíc musíme specifikovat (ve stejné sekci) lokální domény pomocí Domains=
možnost
Domains=domainA.example domainB.example ~example
Lokální domény specifikujeme domainA.example domainB.example
získat následující chování (z systemd-resolved.service, systemd-resolved manuálová stránka):
Vyhledávání názvu hostitele končícího jednou z domén jednotlivých rozhraní jsou výhradně směrována na odpovídající rozhraní.
Tímto způsobem hostX.domainA.example
bude vyřešen výhradně prostřednictvím našeho místního serveru DNS.
Zadáváme pomocí ~example
že všechny domény končící na example
mají být považovány za domény pouze pro směrování, aby se dosáhlo následujícího chování (z popisu tohoto potvrzení):
Servery DNS, které mají domény pouze pro směrování, by se měly používat pouze pro specifikované domény.
Tímto způsobem hostY.on.the.internet
bude vyřešen výhradně prostřednictvím našeho globálního vzdáleného serveru DNS.
Poznámka
V ideálním případě by při použití protokolu DHCP měly být názvy lokálních domén získány z DHCP serveru namísto toho, aby byly explicitně specifikovány v konfiguračním souboru síťového rozhraní výše. Viz UseDomains=
volba. Stále však existují nevyřešené problémy s touto funkcí – viz problém s možností vyhledávání domén DHCP v síti.
Potřebujeme zadat vzdálený server DNS jako náš globální server DNS pro celý systém. Můžeme to udělat v /etc/systemd/resolved.conf
soubor:
[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Nezapomeňte znovu načíst konfiguraci a restartovat služby:
$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd
$ sudo systemctl restart systemd-resolved
Pozor!
Výše uvedené záruky platí pouze v případě, že názvy řeší systemd-resolved – viz manuálová stránka pro nss-resolve, libnss_resolve.so.2 a manuálová stránka pro systemd-resolved.service, systemd-resolved.
Viz také:
- Popis požadavků na vyhledávání směrování v manuálových stránkách souvisejících se systemd je nejasný
- Jak odstraňovat problémy s DNS pomocí systemd-resolved?
Reference:
- Manuál pro systemd-resolved.service, systemd-resolved
- Manuál pro resolved.conf, resolved.conf.d
- Manuál pro systemd-network
Abychom rozšířili skvělou odpověď @piotrDobrogost , nezapomeňte nakonfigurovat /etc/nsswitch.conf
použít systemd-resolved
jako zdroj rozlišení DNS. Vaše hosts
direktiva by měla pro váš konkrétní případ použití vypadat následovně:
/etc/nsswitch.conf
hosts: files resolve dns
Pokud tedy omezíte rozlišení pouze na domény uvedené v Domains
direktiva v /etc/systemd/resolved.conf
jak uvádí Piotr výše, DNS by měl být dále konzultován v pořadí specifikovaných zdrojů rozlišení názvů /etc/nsswitch.conf
když domény NEJSOU nalezený v Domains
směrnice:
Následující odkaz odkazuje na požadavek uvést vyřešit v /etc/nsswitch.conf
takže systemd-resolved
je konzultován při překladu názvu:
https://github.com/systemd/systemd/issues/940
Dokumentace SystemD Zjistil jsem, že je hrozná. Musel jsem dát dohromady pochopení z více odkazů, včetně Piotrovy odpovědi výše;-)