scutil --dns dréckt d'Resolver-Konfiguratioun aus, déi macOS wierklech consultéiert, net deen eenzegen DNS-Server, deen Dir an e Stellungs-Panel getippt hutt. D'Ausgab ass méi laang wéi déi meescht Leit erwaarden, well de System getrennt Resolver-Bléck fir de Standardwee, fir agegrenzt Interfaces a fir domeen-spezifesch Viruleedung hält. De Block uewen an der Ausgab ass net onbedéngt deen, deen d'Ufro beäntwert. Wann en private Numm am Büro opgeléist gëtt an de Moment feelt, wou d'VPN eropkënnt, läit d'Discrepance an de Matching-Regelen an de Route, net an der Serveradress. Liest fir d'éischt d'Uerdnung an da beweist d'Äntwert mat enger richtege Sich.

Liest d'Blockuerdnung virun den Adressen

All Andrag fänkt mat resolver #N un an zielt nameserver[0] op, heiansdo if_index, eng flags-Linn, reach an, wann de Block net en einfachen Standard ass, en domain an eng search domain-Lëscht. Den 1. Resolver ouni Domän ass de Standard, deen ëffentlech Nimm behandelt. Alles wat Scoped a senge Fändelen dréit, ass un d'Interface gebonnen, déi if_index nennt, an alles mat Supplemental gëllt nëmme fir d'Domeinen, déi drënner opgezielt sinn.

D'Auswiel ass Suffix-Matching. Fir en Numm wéi intranet.corp.example bevirzugt macOS de Resolver, deem seng domain-Andrag de längsten iwwereneestëmmende Suffix ass, sou datt e Block mat domain : corp.example de Standard schléit, och wann en wäit ënnen an der Ausgab steet. order entscheet Gläichstänn tëscht Domeine vun der selwechter Längt. En éischte Bléck brauch selten méi: d'ganz Ausgab, wann Dir ee Block vun Ufank bis Enn wëllt liesen, déi éischt Zeilen, fir d'Blockuerdnung ze léieren, an eng gefilterte Pass, déi d'Blockkäpp nieft de Fëlldlinne dréckt. Agegrenzt Bléck erschénge ënner hirer eegener Iwwerschrëft a liese sech wéi eng Fortsetzung vun der Lëscht driwwer, also haalt eng Iwwerschrëft am Bléck, wann Dir d'Ausgab zitéiert.

scutil --dns
scutil --dns | sed -n '1,45p'
scutil --dns | grep -nE '^resolver #|^DNS configuration'
scutil --dns | grep -nE 'resolver #[0-9]+|if_index|domain|flags|nameserver'

Passt if_index un d'Tunnel-Interface un

En Index ass nëmme nëtzlech, wann Dir d'Interface dohannert nenne kënnt. scutil --nwi zielt d'Netzwierkinformatiounen op, déi de System hält, inklusiv der primärer Interface an der Erreechbarkeet, während ifconfig -l Iech d'Nimm gëtt, wou utun0 bis utun9 d'Tunnelkandidaten sinn, déi e Client normalerweis schaaft. Apple benotzt scutil --dns als säin eegent Inspektiounsbeispill am Deployment-Guide, an dokumentéiert, wéi Network Extension ausgewielt Domeinen op ausgewielt Resolvere leede kann, wat genee de Mechanismus ass, deen déi agegrenzt Bléck opdecken.

D'Prüfung, déi d'Fro entscheet, ass ob de Resolver op deem Wee sëtzt, deen den Tunnel installéiert huet:

scutil --nwi
ifconfig utun4
route -n get 10.20.0.53
netstat -rn | grep -m5 utun

Wann route -n get en Gateway an eng Interface zréckgëtt, déi net zum Resolver-Andrag passen, kann d'Adress vollkommen richteg an trotzdem net erreechbar sinn. En opgedeilten Tunnel, deen nëmmen déi betriblech Subnetzer dréit, verwërft Ufroe Richtung DNS-Server dobaussen, an de Feeler weist sech als Timeout, dofir gesäit d'Konfiguratiounsausgab weider propper aus.

Frot de Systemresolver, dann de Server

Dräi Geschier beäntwerten dräi verschidde Froe, an hir Verwiesselung produzéiert déi meescht falsch Conclusiounen an dësem Beräich. dscacheutil -q host -a name geet duerch dee selwechte Systemresolver, deen normal Applikatiounen benotzen, also gëllen agegrenzt an zousätzlech Bléck. dig ouni Server-Argument liest /etc/resolv.conf, wat net d'Wourecht-Quell fir agegrenzt Opléisung op macOS ass, an et spréngt d'Regelen pro Domän komplett iwwer. dig @address erreecht genee ee Server an seet näischt iwwer d'Auswiel.

dscacheutil -q host -a name intranet.corp.example
dig intranet.corp.example
dig @10.20.0.53 intranet.corp.example
nslookup intranet.corp.example

Wann den éischte Kommando äntwert an den zweeten NXDOMAIN zréckgëtt, hutt Dir déi gesichte Spléckung fonnt an näischt ass futti. Wann den éischten an en Timeout leeft, während dig @10.20.0.53 äntwert, funktionéiert de Resolver, ass awer op deem vum Tunnel gewielte Wee net erreechbar, dofir ass den nächsten Schrëtt route -n get an net eng Ännerung vun den DNS-Astellungen. Haalt privat Nimm aus allem eraus, wat Dir an en Ticket oder eng gedeelt Notiz pecht.

Wat d'Ausgab Iech net ka weisen

Méi Schichte sëtzen iwwer oder nieft der Resolverlëscht, an all kann eng Ufro dohi schécken, wat d'Ausgab ni ernimmt. En Browser mat aktivem sécheren DNS kann iwwer säin eegene verschlësselte Kanal opléisen, sou datt eng Säit, déi lued, während dscacheutil an en Timeout leeft, kee Widderspruch ass. En DNS-Proxy, dee vu Sécherheetssoftware installéiert gouf, leeft als Network Extension-Provider a leet d'Ufroe selwer weider, an scutil --dns weist, wat konfiguréiert gouf, net d'Upstream-Adress, déi de Proxy schlussendlech benotzt huet. Sichdomeine bäi en drëtte Knascht: op en net qualifizéierten Numm gëtt all opgezielten Suffix der Rei no ugehaangen, sou datt de Block, dee geäntwert huet, een aneren ka sinn, wien Dir ni vermeet hutt.

Veralt Äntwerten sinn dat Bëllegst auszeschléissen an dat meescht iwwersinn:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
scutil --dns | head -20

Wann d'Ausgab sech no der Eidelung ännert, war den Zoustand am Cache an déi fréier Ausgab huet en Tunnel beschriwwen, deen et net méi gouf. Wann se sech net ännert, ass d'Konfiguratioun esou wéi se ass, an d'Fro verréckelt sech op Route an op Applikatiounspolitik.

E kuerze Runbook fir virun an no

Halt eng Baseline fest nëmme wou d'Politik et erlaabt, an haalt d'Fichieren aus all synchroniséierte Dossier eraus. D'Reiefolleg hei drënner ass dat, wat ech op Clientsmaschinne lafen: Baseline huelen, verbannen, nach eng Kéier huelen, dann vergläichen an nogoen.

scutil --dns > ~/dns-before.txt
# connect the VPN, then:
scutil --dns > ~/dns-after.txt
diff -u ~/dns-before.txt ~/dns-after.txt
dscacheutil -q host -a name intranet.corp.example

Liest den Ënnerscheed pro Block an net pro Linn. En neien agegrenzten Resolver, deen den Tunnel-Interface-Index an en domain-Andrag fir de privaten Suffix dréit, ass déi erwaart Form. En neien Standardresolver, deen op eng ëffentlech Adress weist, ass eng Entdeckung, déi et wäert ass, se demjenegen ze mellen, deem de Clientprofil gehéiert. Widderhëlt dann d'Sich an der Applikatioun, déi wierklech feelt, net nëmmen an der Shell, a notéiert d'Interface aus route -n get nieft dem Resultat.

Fir eng Ännerung zréckzehuelen, trennt d'Verbindung a widderhëlt d'Baseline-Aufnahm. Wann den agegrenzte Block fort ass, huet de Client hannendru propper gemaach. Wann de Block nach ëmmer géint eng Interface opgezielt ass, déi et net méi gëtt, ass den Zoustand veralt, an eng Eidelung plus eng Reconnectioun ass déi sanftst Korrektur, ier een de Profil beréiert.

Véier Prüfungen an dëser Uerdnung: passt e Resolver-Block op de längsten Suffix vum Numm; ass dee Block un d'Interface gebonnen, déi den Tunnel installéiert huet; benotzt de Wee zu sengem Numm-Server den Tunnel; an dréckt de Systemresolver, net dig, d'Äntwert aus. Déi éischt Prüfung, déi feelt, seet Iech, ob Dir DNS-Politik, d'Tunnelroutern oder d'Applikatioun ännere musst. Wann all véier duerchgoen an den Numm nach ëmmer feelt, sëtzt de Problem iwwer DNS, an dat Nächst wat ze kucken ass, ass alles, wat virun deem op Port 53 äntwert.

Ähnlech Artikelen