Podigli ste WireGuard, tunel propušta promet, a interno se ime 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 sučelja i dopuštene IP adrese, i nema polje za DNS poslužitelje ni domene pretraživanja. Politika resolvera živi na klijentu, i tu pripada popravak.

Tunel i resolver su odvojeni ugovori

WireGuard je namjerno malen. Premješta pakete za adrese koje navedete i autentificira peerove; sve iznad tog sloja je vaš dizajn. OpenVPN može progurati dhcp-option DNS jer njegov kontrolni kanal nosi konfiguraciju, i ta razlika spotiče 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

Poslužiteljska strana mala je 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 stvarate 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 deklarirajte zonu i njezinu datoteku:

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 pogreška pri učitavanju ruši cijeli poslužitelj 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 sučelju. Objavljivanje privatnog autoriteta na javnom sučelju poziva i upite i nabrajanje, a allow-transfer treba ostati zatvoren osim ako sekundarni doista treba.

Usmjerite klijent na nju, po vezi

Pretpostavite da NetworkManager posjeduje vezu i da je systemd-resolved resolver. Najprije pročitajte postojeću politiku, posebno bilo koju korijensku domenu usmjeravanja, 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 poslužitelj 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 pokazati na vaš kućni direktorij.

Primijenite promjenu kroz upravitelj koji posjeduje sučelje, pa ponovno povežite vezu. Ne pokrećite drugu instancu wg-quick za isto sučelje; dva vlasnika svađat će se oko ruta i jedan od njih pobijedit će u najgorem trenutku.

Provjerite put prije imena

Upitajte ime s klijenta i potvrdite i odgovor i poslužitelj 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 pravilo vatrozida, zatim allow-query na poslužitelju. Neuspjesi razrješavanja imena u ovom postavu gotovo su uvijek dostupnost ili ACL, a ne zona-datoteka. Radite od klijenta prema van, jer poslužitelj vam ne može reći zašto upit nikada nije stigao.

Zapamtite da aplikaciji i dalje treba vlastita ruta i vlastito dopuštenje za uslugu. Razriješeno ime koje pokazuje na nedostupnu adresu drugi je neuspjeh u istoj odjeći.

Što 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ća uputa 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 pogrešci.

Flote mogu automatizirati ovu klijentsku politiku kroz svoj sustav za provisioning, ali politika ostaje odvojen objekt 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 naredbe u svoj postupak promjena, da izmjena zapisa ne može doći u produkciju neprovjerena.

Povezani članci