Split DNS znamená, že jedna doména se ptá jiného serveru než všechny ostatní. Typicky po připojení VPN: firma.internal má odpovídat resolver za tunelem, example.org veřejný.
Jak to systemd-resolved dělá
systemd-resolved drží resolvery per rozhraní a vybírá mezi nimi podle takzvané routing domény. Doména zapsaná s vlnovkou (~firma.internal) neznamená „hledej v téhle doméně“, ale „dotazy na tuhle doménu posílej sem“.
Nastavení pro jedno rozhraní
resolvectl dns tun0 10.10.0.53 resolvectl domain tun0 '~firma.internal'
Ověření, kam který dotaz půjde:
resolvectl query nas.firma.internal resolvectl status tun0
Trvalé nastavení
Ruční resolvectl zmizí s rozhraním. Trvale to patří do konfigurace toho, kdo rozhraní vytváří – u systemd-networkd do [Network] sekce příslušného .network souboru:
[Network] DNS=10.10.0.53 Domains=~firma.internal
U NetworkManageru totéž nese ipv4.dns-search s vlnovkou.
Co tady zatím chybí
Rozepsané. Doplnit ještě chování s DNSSEC=allow-downgrade, když interní zóna není podepsaná, a co se stane při výpadku tunelu – jestli dotazy propadnou na veřejný resolver, nebo skončí chybou.