Podigli ste WireGuard, tunel propušta saobraćaj, a interno ime se još uvijek ne razrješava. Sljedeći potez obično je traženje DNS postavke u WireGuard konfiguraciji, kao da peer može progurati resolver kako to čine neki drugi VPN-ovi. Ne može. Rukovanje nosi ključeve, adrese interfejsa i dozvoljene IP adrese, i nema polje za DNS servere ni domene pretrage. Politika resolvera živi na klijentu, i tu pripada popravka.

Tunel i resolver su odvojeni ugovori

WireGuard je namjerno malen. Premješta pakete za adrese koje navedete i autentifikuje peerove; sve iznad tog sloja je vaš dizajn. OpenVPN može progurati dhcp-option DNS jer njegov kontrolni kanal nosi konfiguraciju, i ta razlika zbunjuje ljude koji prelaze između njih.

Dakle ispravan tunel ne govori ništa o razrješavanju imena. Klijent može imati savršenu rutu do 10.90.0.1 i ipak slati upite javnom resolveru, zbog čega simptom izgleda kao “VPN je pokvario DNS” iako DNS nikada nije bio usmjeren na VPN.

Poslužujte zonu bez postajanja rekurzivnim resolverom

Serverska strana je mala autoritativna zona, a ne opći resolver. U ovom primjeru gateway je 10.90.0.1, klijenti su 10.90.0.0/24, a aplikacija do koje vam je stalo odgovara na 10.60.0.20.

Spojite ove postavke u postojeći blok options umjesto da pravite drugi:

options {
    listen-on { 127.0.0.1; 10.90.0.1; };
    listen-on-v6 { none; };
    allow-query { 127.0.0.1; 10.90.0.0/24; };
    allow-transfer { none; };
    recursion no;
};

Zatim deklarišite zonu i njen fajl:

zone "corp.example" {
    type primary;
    file "/etc/bind/db.corp.example";
};
$TTL 300
@ IN SOA ns.corp.example. hostmaster.corp.example. ( 1 3600 600 604800 300 )
@      IN NS ns.corp.example.
ns     IN A  10.90.0.1
portal IN A  10.60.0.20

Validirajte prije ponovnog učitavanja, jer sintaksna greška pri učitavanju obara cijeli server za svaku zonu koju poslužuje:

named-checkconf
named-checkzone corp.example /etc/bind/db.corp.example

Otvorite UDP i TCP 53 samo na VPN interfejsu. Objavljivanje privatnog autoriteta na javnom interfejsu poziva i upite i nabrajanje, a allow-transfer treba ostati zatvoren osim ako sekundarni zaista treba.

Usmjerite klijent na njega, po vezi

Pretpostavite da NetworkManager posjeduje vezu i da je systemd-resolved resolver. Prvo pročitajte postojeću politiku, posebno bilo koju korijensku domenu rutiranja, jer će unos ~. nadjačati ono što namjeravate dodati.

nmcli connection modify wg-office +ipv4.dns 10.90.0.1
nmcli connection modify wg-office +ipv4.dns-search '~corp.example'

Tilda je važan znak. Označava domenu kao samo-rutu: imena pod corp.example idu na DNS server ove veze, i domena se ne dodaje kao sufiks za pretragu kratkog imena. Bez nje, tipkanje portal počinje razrješavati portal.corp.example, što je zgodno za vas i iznenađenje za sve ostale. Držite tildu unutar navodnika, jer bez navodnika ona je shell ekspanzija koja čeka da pokaže na vaš kućni direktorij.

Primijenite promjenu kroz menadžer koji posjeduje interfejs, pa ponovo povežite vezu. Ne pokrećite drugu instancu wg-quick za isti interfejs; dva vlasnika će se svađati oko ruta i jedan od njih će pobijediti u najgorem trenutku.

Provjerite put prije imena

Upitajte ime s klijenta i potvrdite i odgovor i server koji ga je dao:

resolvectl query portal.corp.example

Ako to vrati 10.60.0.20, DNS ugovor je ispunjen. Ako istekne, prvo provjerite rutu do 10.90.0.1, zatim firewall pravilo, zatim allow-query na serveru. Neuspjesi razrješavanja imena u ovom postavu su gotovo uvijek dostupnost ili ACL, a ne zona-fajl. Radite od klijenta prema van, jer server vam ne može reći zašto upit nikada nije stigao.

Zapamtite da aplikaciji i dalje treba vlastita ruta i vlastita dozvola za servis. Razriješeno ime koje pokazuje na nedostupnu adresu drugačiji je neuspjeh u istoj odjeći.

Šta još nije automatski

Aplikacije s vlastitom resolver logikom potpuno ignoriraju sistemski resolver, i nikakva količina nmcli to ne mijenja. Postave koje validiraju DNSSEC traže eksplicitan dizajn trust anchora za privatnu zonu; odgovor nije opšta instrukcija da se validacija isključi. Testirajte istim klijentskim softverom koji koriste vaši korisnici, a ne alatom koja slučajno koristi sistemski resolver. Razlika između tih dvaju cijeli je izvještaj o grešci.

Flote mogu automatizovati ovu klijentsku politiku kroz svoj sistem za provisioniranje, ali politika ostaje odvojen objekat s vlasnikom. Referenca za BIND 9 pokriva kontrole slušanja i upita korištene gore, i pravo je mjesto da potvrdite ponašanje za svoju instaliranu verziju.

Sljedeći korak: dodajte povećanje serijskog broja zone i provjerne komande u svoju proceduru promjena, da izmjena zapisa ne može doći u produkciju neprovjerena.

Povezani članci