Hvernig á að skoða DNS-leysendurna sem Macinn þinn notar á VPN
scutil --dns prentar leysandastöðuna sem macOS byggði í raun. Paraðu hvern blokk við tengi, spurðu um raunverulegt nafn og sannaðu hvaða þjónn svaraði.
scutil --dns prentar leysandastillinguna sem macOS leitar í raun til, ekki hinn eina DNS-þjón sem þú slóst inn í stillingaspjald. Úttakið er lengra en flestir búast við, því kerfið heldur aðskildum leysandablokkum fyrir sjálfgefna leið, fyrir tengi með svið og fyrir framsendingu sem er sérstök fyrir lén. Blokkurinn efst í úttakinu er ekki endilega sá sem svarar fyrirspurninni. Ef einkanafta leysist á skrifstofunni og bregst um leið og VPN-ið fer í gang, er misræmið í samsvörunarreglunum og leiðunum, ekki í vistfangi þjónsins. Lestu röðina fyrst og sannaðu svo svarið með raunverulegri uppflettingu.
Lestu röð blokkanna á undan vistföngunum
Hver færsla hefst á resolver #N og telur upp nameserver[0], stundum if_index, flags línu, reach og, þegar blokkurinn er ekki venjulegt sjálfgefið gildi, domain og search domain lista. Leysandinn númer 1 án léna er sjálfgefna gildið sem sér um opinber nöfn. Allt sem ber Scoped í flöggunum sínum er bundið við tengið sem if_index nefnir, og allt sem merkt er Supplemental gildir aðeins um lénin sem talin eru upp undir því.
Valið er viðskeytjasamsvörun. Fyrir nafn eins og intranet.corp.example kýs macOS leysandann þar sem domain færslan er lengsta samsvarandi viðskeytið, svo blokkur með domain : corp.example vinnur á sjálfgefna gildinu jafnvel þótt hann standi langt niðri í úttakinu. order rýfur jafntefli milli léna af sömu lengd. Fyrsta svipan þarf sjaldan meira: allt úttakið þegar þú vilt lesa einn blokk frá upphafi til enda, fyrstu línurnar til að læra röð blokkanna og síuð umferð sem prentar hausa blokkanna við hlið reitasviðanna. Blokkir með svið birtast undir eigin haus og lesast eins og framhald listans fyrir ofan þá, svo hafðu haus í augsýn hvenær sem þú vitnar í úttakið.
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'
Paraðu if_index við göngutengið
Vísitala er aðeins gagnleg ef þú getur nefnt tengið bak við hana. scutil --nwi telur upp netupplýsingarnar sem kerfið heldur, þar á meðal aðaltengið og aðgengi, en ifconfig -l gefur þér nöfnin, þar sem utun0 til utun9 eru gönguvalkostirnir sem biðlari býr venjulega til. Apple notar scutil --dns sem eigið skoðunardæmi í uppsetningarleiðbeiningunum, og skjalfestir hvernig Network Extension getur beint völdum lénum að völdum leysendum, sem er einmitt aðferðin sem þessir blokkir með sviði afhjúpa.
Prófið sem ræður úr spurningunni er hvort leysandinn sitji á leiðinni sem göngin settu upp:
scutil --nwi
ifconfig utun4
route -n get 10.20.0.53
netstat -rn | grep -m5 utun
Ef route -n get skilar gátt og tengi sem passa ekki við leysandafærsluna getur vistfangið verið algerlega rétt og samt óaðgengilegt. Skipt göng sem flytja aðeins fyrirtækjanetið sleppa fyrirspurnum sem beint er að DNS-þjóni utan þeirra, og bilunin birtist sem tímanúmer, þess vegna virðist stillingarúttakið áfram hreint.
Spurðu kerfisleysandann, svo þjóninn
Þrjú verkfæri svara þremur mismunandi spurningum, og að rugla þeim framleiðir flestar röngu ályktanirnar á þessu sviði. dscacheutil -q host -a name fer í gegnum sama kerfisleysandann og venjuleg forrit nota, svo blokkir með sviði og viðbótarblokkir gilda. dig án þjónarviðfangs les /etc/resolv.conf, sem er ekki sannleiksgildið fyrir leysingu með sviði á macOS, og sleppir reglunum fyrir hvert lén algjörlega. dig @address nær nákvæmlega einum þjóni og segir ekkert um valið.
dscacheutil -q host -a name intranet.corp.example
dig intranet.corp.example
dig @10.20.0.53 intranet.corp.example
nslookup intranet.corp.example
Þegar fyrsta skipunin svarar og önnur skilar NXDOMAIN hefur þú fundið skiptinguna sem þú leitaðir að og ekkert er bilað. Þegar fyrsta skipunin rennur út á meðan dig @10.20.0.53 svarar virkar leysandinn en er ekki aðgengilegur á leiðinni sem göngin völdu, svo næsta skref er route -n get frekar en breyting á DNS-stillingum. Haltu einkanöfnum utan við allt sem þú límir í miða eða sameiginlega minnisbók.
Hvað úttakið getur ekki sýnt þér
Nokkur lög liggja yfir eða við hlið leysandalistans, og hvert þeirra getur sent fyrirspurn eitthvert sem úttakið nefnir aldrei. Vafri með öruggt DNS virkt getur leyst yfir eigin dulkóðuðu rás, svo síða sem hleðst á meðan dscacheutil rennur út er ekki mótsögn. DNS-milliþjónn sem öryggishugbúnaður setur upp keyrir sem Network Extension-veitandi og sendir fyrirspurnir sjálfur, og scutil --dns sýnir hvað var stillt, ekki uppstreymisvistfangið sem milliþjónninn notaði að lokum. Leitarlén bæta við þriðja fellingunni: óhæfu nafni er hverju upptöldu viðskeyti bætt við í röð, svo blokkurinn sem svaraði getur verið einn sem þú grunaðir aldrei.
Úrelt svör eru það ódýrasta að útiloka og það sem oftast er sleppt:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
scutil --dns | head -20
Ef úttakið breytist eftir hreinsun var staðan í skyndiminni og fyrra úttakið lýsti göngum sem voru ekki lengur til. Ef það breytist ekki er stillingin eins og hún er, og spurningin færist yfir á leiðir og á stefnu forrita.
Stutt handbók fyrir fyrir og eftir
Taktu grunnlínu aðeins þar sem stefnan leyfir, og haltu skránum utan við hvaða samstilltu möppu sem er. Röðin hér að neðan er það sem ég keyri á biðlaravélum: taktu grunnlínuna, tengdu, taktu aftur, berðu svo saman og flettu upp.
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
Lestu muninn eftir blokkum frekar en línum. Nýr leysandi með sviði sem ber tengivísitölu ganganna og domain færslu fyrir einkaviðskeytið er væntanlegt form. Nýr sjálfgefinn leysandi sem bendir á opinbert vistfang er fundur sem er þess virði að bera undir þann sem á biðlarasniðið. Endurtaktu svo uppflettinguna inni í forritinu sem brást í raun, ekki bara í skelinni, og skráðu tengið úr route -n get við hlið niðurstöðunnar.
Til að afturkalla breytingu skaltu aftengjast og endurtaka grunnlínutökuna. Ef blokkurinn með sviði er farinn hefur biðlarinn hreinsað á eftir sér. Ef blokkurinn er enn talinn upp gagnvart tengi sem er ekki lengur til, er staðan úrelt, og hreinsun ásamt endurtengingu er mildasta lagfæringin áður en einhver snertir sniðið.
Fjögur próf í þessari röð: passar einhver leysandablokkur við lengsta viðskeyti nafnsins; er sá blokkur bundinn við tengið sem göngin settu upp; notar leiðin að nafnaþjóni hans göngin; og skilar kerfisleysandinn, ekki dig, svarinu. Fyrsta prófið sem bregst segir þér hvort breyta eigi DNS-stefnunni, leiðum ganganna eða forritinu. Ef öll fjögur standast og nafnið bregst samt, liggur vandinn yfir DNS, og það næsta sem á að skoða er hvað sem svarar á porti 53 fyrir framan það.