Firwat resolv.conf den DNS vun Ärem VPN weist, awer Ufroen en ignoréieren
Op engem Host mat resolved ass d'Datei eng Vue, net den Zoustand. Follegt dem Stub, de Serveren pro Verbindung an der nsswitch-Linn, fir ze gesinn wat eng Ufro wierklech benotzt.
An de Loggen gesäit näischt falsch aus: den Interface ass uewen, de Resolver mellt den DNS-Server vum VPN, an d'Datei op der Platte lëscht en op. Trotzdem gëtt en internen Hostnumm nach ëmmer iwwer de lokale Router opgeléist. Déi dräi Aussoe widersprieche sech net, well d'Datei, den Zoustand pro Verbindung an de Wee vun der Ufro verschidden Objete sinn, déi zoufälleg deen eege Numm deelen. Duerno kënnt de Wee, den eng Ufro op engem Host mat systemd-resolved tatsächlech hëlt.
Dräi Objeten mam Numm resolv.conf
Op engem Host mat resolved ass /etc/resolv.conf meeschtens e symbolesche Link op /run/systemd/resolve/stub-resolv.conf. Dësen Zil hält d'Adress vun engem lokale stub-Lauschterer, 127.0.0.53, plus d'Sichdomänen, déi resolved berechent huet. Et ass eng Vue vum Zoustand, net den Zoustand selwer.
Den Zoustand lieft an der Konfiguratioun vum resolved pro Verbindung, an dofir kann resolvectl status der Datei widersprieche an trotzdem Recht hunn. All Verbindung dréit hir eege Serveren an hir eege Routingdomänen, an de Stub konsultéiert déi Donnéeën, wann eng Ufro ukënnt. Den Handbuch vu systemd-resolved beschreift déi generéiert Dateien an de Modell pro Verbindung; d'Trennung tëscht Vue an Zoustand ass den Deel, deen et wäert ass ze behalen. Den Zil vum symbolesche Link z'änneren ännert, wat traditionell Cliente liesen, net wat de Resolver weess.
En drëtten Objet, /run/systemd/resolve/resolv.conf, flaacht all Verbindung an eng eenzeg Serverlëscht of. E Programm, dat op déi Datei weist, schéckt Ufroe direkt un déi opgezielt Serveren a spréngt de Stub iwwer, sou datt d'Politik pro Verbindung net méi fir et gëllt. Dofir kënnen zwou Programmer op der selwechter Maschinn déi selwecht Numm ënnerschiddlech beäntweren, an keen ass futti.
Verfollegt eng Ufro duerch NSS
glibc liest /etc/nsswitch.conf, fir ze decidéieren, wien engem Numm äntwert. Eng hosts-Linn mat resolve leet d'Fro un nss-resolve weider, deen de resolved iwwer D-Bus freet an d'Äntwert pro Verbindung kritt. Eng Linn nëmme mat files dns schéckt d'Ufro un déi Adress, déi /etc/resolv.conf hält.
Déi eng Linn erkläert déi meescht Onstëmmegkeeten tëscht engem Browser an dig. dig liest resolv.conf direkt a beréiert NSS ni, dofir testt en de Stub oder e Server driwwer amplaz vum Wee, den d'Applikatioun benotzt. getent hosts internal.example geet duerch NSS, an d'Äntwert dovun mat där vum dig ze vergläichen ass déi éischt nëtzlech Miessung.
Applikatiounen, déi hire eigenen Resolver matbréngen oder DNS iwwer HTTPS mat engem feste Endpunkt schwätzen, ëmgoen déi zwee Weeër. Näischt an resolv.conf oder am Zoustand vum resolved schränkt se an.
Kuckt, wiem d'Datei gehéiert a wou se hinweist
Liest d'Linkkette, ier Dir eppes ännert, well d'Eegentum entscheet, wéi eng Datei autoritativ ass. All Kommando hei drënner liest nëmmen den Zoustand.
stat -c '%N' /etc/resolv.conf
resolvectl status --no-pager
grep '^hosts' /etc/nsswitch.conf
ls -l /run/systemd/resolve/
Déi éischt Linn dréckt de Link an säin Zil zesummen, an eng gewéinlech Datei am Besëtz vun engem VPN-Skript bedeit, datt de Resolver déi Schréif ni als Input behandelt. D'Statusausgab lëscht Serveren pro Verbindung plus d'Routingdomänen op, déi entscheeden, wou all Ufro higeet. D'nsswitch-Linn seet, ob de Stub iwwerhaapt konsultéiert gëtt, also eng stub-Adress an der Datei ouni resolve do bedeit, datt Ufroen de lokalen Nolauschterer erreechen, während näischt d'Opdeelung verwalt. Déi lescht Lëscht zielt och, well en Host ouni stub-resolv.conf d'Arrangement, dat hei beschriwwe gëtt, net bedreift.
Wann d'Kette bei enger Datei ophält, déi en anere Package verwalte kann, sinn de VPN-Client an dee Package déi zwee Besëtzer, déi missten ausgeglach ginn. De Link z'ersetzen verwërft d'Aarbecht vun engem Besëtzer a léisst déi vum aneren op der Plaz.
Reparéiert beim Besëtzer vum Link
Eng VPN-Verbindung soll hir Serveren an hir Domänen op hirer eegener Verbindung registréieren an se dann beim Trennen erëm zréckzéien. D'resolved-Integratioun vum NetworkManager an den eegene Helfer vun engem Client funktionéieren allebéid sou; e Skript, dat nëmmen resolv.conf ëmschreift, net.
Op enger Verbindung, déi schonn existéiert, weist d'Laufzäitkonfiguratioun de Mechanismus. resolvectl dns tun0 10.40.0.53 befestegt e Server, an resolvectl domain tun0 '~corp.example' befestegt eng Routingdomän. D'Tilde ass dee Charakter, deen d'Laascht dréit: et begrenzt Ufroe fir deen Suffix op dës Verbindung a léisst alles anescht a Rou, während dee selwechte Wäert ouni se eng Sichdomän gëtt an d'Opdeelung verdämpt. Déi Adresse sinn Laborbeispiller, net eng dauerhaft Konfiguratioun. Bestätegt mat resolvectl query host.corp.example a liest, wéi eng Verbindung geäntwert huet.
E registréierte Server brauch awer eng Route. Wann d'Ufro déi richteg Verbindung erreecht an dann ofleeft, läit de Feeler an der Erreechbarkeet duerch den Tunnel an net am Eegentum vum Resolver.
Wéi en funktionéierenden Zoustand ausgesäit
En gesonden Resultat ass an allen dräi Vuen konsequent: d'Serveren pro Verbindung passen zu deem, wat de VPN ausginn huet, d'Routingdomänen decke just intern Suffixen of, an d'Applikatioun, déi zielt, léist en internen Numm op, während en ëffentlechen Numm nach ëmmer dem lokale Wee follegt. Eng eenzeg erfollegräich Ufro beweist manner wéi déi Iwwereneestëmmung.
Trennt duerno an widderholl béid Ufroen. E Client, dee seng Domänen no der Ofléisung registréiert léisst, produzéiert eng Maschinn, déi Stonnen duerno bei internen Ufroen ausfällt, ouni oppenen Tunnel an ouni offensichtlech Ursaach.