scutil --dns shtyp konfigurimin e zgjidhësit që macOS konsulton vërtet, jo atë server të vetëm DNS që keni shtypur në një panel cilësimesh. Dalja është më e gjatë nga sa presin shumica, sepse sistemi mban blloqe të veçanta zgjidhësi për shtegun e paracaktuar, për ndërfaqet me shtrirje dhe për përcjelljen specifike për domenin. Blloku në krye të daljes nuk është domosdoshmërisht ai që përgjigjet pyetjes. Nëse një emër privat zgjidhet në zyrë dhe dështon në momentin kur VPN-i ngrihet, mospërputhja është në rregullat e përputhjes dhe në rrugët, jo në adresën e serverit. Lexoni së pari rendin, pastaj provoni përgjigjen me një kërkim të vërtetë.

Lexoni rendin e blloqeve para adresave

Çdo hyrje hapet me resolver #N dhe rendit nameserver[0], ndonjëherë if_index, një rresht flags, reach dhe, kur blloku nuk është një paracaktuar i thjeshtë, një domain dhe një listë search domain. Zgjidhësi numër 1 pa domen është paracaktuar që trajton emrat publikë. Çdo gjë që mban Scoped në flamujt e saj është e lidhur me ndërfaqen që emërton if_index, dhe çdo gjë e shënuar me Supplemental vlen vetëm për domenet e renditura nën të.

Zgjedhja është përputhje prapashtese. Për një emër si intranet.corp.example, macOS preferon zgjidhësin hyrja domain e të cilit është prapashtesa përputhëse më e gjatë, kështu që një bllok me domain : corp.example mund paracaktuesin edhe kur ndodhet shumë poshtë në dalje. order zgjidh barazimet midis domeve të së njëjtës gjatësi. Një shikim i parë rrallë kërkon më shumë: daljen e plotë kur doni të lexoni një bllok nga fillimi në fund, rreshtat e parë për të mësuar rendin e blloqeve dhe një kalim i filtruar që shtyp titujt e blloqeve pranë rreshtave të fushave. Blloqet me shtrirje shfaqen nën titullin e tyre dhe lexohen si një vazhdim i listës mbi to, prandaj mbani një titull në pamje sa herë që citoni daljen.

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'

Lidhni if_index me ndërfaqen e tunelit

Një indeks është i dobishëm vetëm nëse mund të emërtoni ndërfaqen prapa tij. scutil --nwi rendit informacionin e rrjetit që mban sistemi, duke përfshirë ndërfaqen parësore dhe arritshmërinë, ndërsa ifconfig -l ju jep emrat, ku utun0 deri utun9 janë kandidatët e tunelit që një klient zakonisht krijon. Apple përdor scutil --dns si shembullin e vetë të inspektimit në udhëzuesin e vendosjes, dhe dokumenton si Network Extension mund të drejtojë domenet e zgjedhura te zgjidhësit e zgjedhur, që është mekanizmi që zbulojnë ato blloqe me shtrirje.

Kontrolli që zgjidh çështjen është nëse zgjidhësi është në shtegun që instaloi tuneli:

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

Nëse route -n get kthen një portë dhe ndërfaqe që nuk përputhen me hyrjen e zgjidhësit, adresa mund të jetë plotësisht e saktë dhe prapë e paarritshme. Një tunel i ndarë që mbart vetëm nënrrjetet e korporatës hedh poshtë pyetjet e drejtuara te një server DNS jashtë tyre, dhe dështimi shfaqet si skadim kohe, prandaj dalja e konfigurimit vazhdon të duket e pastër.

Pyetni zgjidhësin e sistemit, pastaj serverin

Tre mjete përgjigjen tre pyetjeve të ndryshme, dhe ngatërrimi i tyre prodhon shumicën e përfundimeve të gabuara në këtë fushë. dscacheutil -q host -a name kalon përmes të njëjtit zgjidhës sistemi që përdorin aplikacionet e zakonshme, prandaj vlejnë blloqet me shtrirje dhe ato shtesë. dig pa argument serveri lexon /etc/resolv.conf, që nuk është burimi i së vërtetës për zgjidhjen me shtrirje në macOS, dhe i anashkalon plotësisht rregullat për çdo domen. dig @address arrin saktësisht një server dhe nuk thotë asgjë për zgjedhjen.

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

Kur komanda e parë përgjigjet dhe e dyta kthen NXDOMAIN, keni gjetur ndarjen që kërkonit dhe asgjë nuk është e prishur. Kur e para skadon në kohë ndërsa dig @10.20.0.53 përgjigjet, zgjidhësi punon por nuk është i arritshëm në shtegun që zgjidhi tuneli, prandaj hapi tjetër është route -n get dhe jo një ndryshim në cilësimet e DNS. Mbajini emrat privatë jashtë çdo gjëje që ngjitni në një tiketë ose në një shënim të përbashkët.

Çfarë nuk mund t'ju tregojë dalja

Disa shtresa rrinë mbi listën e zgjidhësve ose pranë saj, dhe secila mund të dërgojë një pyetje diku që dalja kurrë nuk e përmend. Një shfletues me DNS të sigurt të aktivizuar mund të zgjidhë përmes kanalit të vet të kriptuar, kështu që një faqe që ngarkohet ndërsa dscacheutil skadon në kohë nuk është kundërshti. Një proxy DNS i instaluar nga sofuter sigurie funksionon si ofrues i Network Extension dhe i përcjell vetë pyetjet, dhe scutil --dns tregon çfarë u konfigurua, jo adresën e sipërme që proxy-i përdori në fund. Domenet e kërkimit shtojnë një rrudhë të tretë: një emri të pakualifikuar i shtohet radhazi çdo prapashtesë e renditur, prandaj blloku që u përgjigj mund të jetë një që kurrë nuk e keni dyshuar.

Përgjigjet e vjetruara janë gjëja më e lirë për t'u përjashtuar dhe më e shpeshta që harrohet:

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

Nëse dalja ndryshon pas zbrazjes, gjendja ishte në memorie dhe dalja e mëparshme përshkruante një tunel që nuk ekzistonte më. Nëse nuk ndryshon, konfigurimi është siç është, dhe pyetja kalon te rrugët dhe te politika e aplikacioneve.

Një manual i shkurtër për para dhe pas

Regjistroni një linjë bazë vetëm atje ku politika lejon, dhe mbajini skedarët jashtë çdo dosjeje të sinkronizuar. Sekuenca më poshtë është ajo që ekzekutoj në makinat e klientëve: regjistroni linjën bazë, lidheni, regjistroni përsëri, pastaj krahasoni dhe kërkoni.

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

Lexoni ndryshimin sipas blloqeve, jo sipas rreshtave. Një zgjidhës i ri me shtrirje që mbart indeksin e ndërfaqes së tunelit dhe një hyrje domain për prapashtesën private është forma e pritur. Një zgjidhës i ri i paracaktuar që tregon një adresë publike është një gjetje që ia vlen t'i ngrihet atij që zotëron profilin e klientit. Pastaj përsëritni kërkimin brenda aplikacionit që dështoi vërtet, jo vetëm në shell, dhe shënoni ndërfaqen nga route -n get pranë rezultatit.

Për të anuluar një ndryshim, shkëputuni dhe përsëritni regjistrimin e linjës bazë. Nëse blloku me shtrirje ka ikur, klienti ka pastruar pas vetes. Nëse blloku është ende i renditur kundër një ndërfaqeje që nuk ekziston më, gjendja është e vjetruar, dhe një zbrazje plus një rilidhje është rregullimi më i butë para se dikush të prekë profilin.

Katër kontrolle, në këtë rend: a përputhet një bllok zgjidhësi me prapashtesën më të gjatë të emrit; a është ai bllok i lidhur me ndërfaqen që instaloi tuneli; a e përdor rruga drejt serverit të emrave të tij tunelin; dhe a e kthen përgjigjen zgjidhësi i sistemit, dhe jo dig. Kontrolli i parë që dështon ju tregon nëse duhet të ndryshoni politikën e DNS, rrugët e tunelit apo aplikacionin. Nëse të katërt kalojnë dhe emri ende dështon, problemi është mbi DNS, dhe gjëja tjetër për të inspektuar është çdo gjë që përgjigjet në portën 53 përpara tij.

Artikuj të ngjashëm