Sut i archwilio’r datryswyr DNS y mae eich Mac yn eu defnyddio ar VPN
Mae scutil --dns yn argraffu cyflwr y datryswr a adeiladodd macOS mewn gwirionedd. Cydweddwch bob bloc ag rhyngwyneb, holwch enw go iawn, a phrofwch pa weinydd a atebodd.
scutil --dns sy’n argraffu’r ffurfweddiad datryswr y mae macOS yn ymgynghori ag ef mewn gwirionedd, nid yr un gweinydd DNS a deipiwyd gennych mewn panel gosodiadau. Mae’r allbwn yn hirach na’r disgwyl i’r rhan fwyaf o bobl, oherwydd bod y system yn cadw blociau datryswr ar wahân ar gyfer y llwybr diofyn, ar gyfer rhyngwynebau cwmpasedig, ac ar gyfer anfon ymlaen sy’n benodol i barthau. Nid y bloc ar frig yr allbwn yw’r un sy’n ateb y cwestiwn o reidrwydd. Os yw enw preifat yn datrys yn y swyddfa ac yn methu’r munud y daw’r VPN i fyny, mae’r camgymhariad yn y rheolau cyfateb ac yn y llwybrau, nid yn y cyfeiriad gweinydd. Darllenwch y drefn yn gyntaf, yna profwch yr ateb gyda chwilfa go iawn.
Darllenwch drefn y blociau cyn y cyfeiriadau
Mae pob cofnod yn agor gyda resolver #N ac yn rhestru nameserver[0], weithiau if_index, llinell flags, reach, a phan nad yw’r bloc yn ddiofyn plaen, domain a rhestr search domain. Y datryswr rhif 1 heb barth yw’r diofyn sy’n trin enwau cyhoeddus. Mae unrhyw beth sy’n cario Scoped yn ei fflagiau wedi’i rwymo i’r rhyngwyneb a enwir gan if_index, ac mae unrhyw beth a nodir Supplemental yn berthnasol yn unig i’r parthau a restrir oddi tano.
Mae dethol yn gyfateb ôl-ddodiad. Ar gyfer enw fel intranet.corp.example, mae macOS yn ffafrio’r datryswr y mae ei gofnod domain yn yr ôl-ddodiad cyfatebol hiraf, felly mae bloc â domain : corp.example yn trechu’r diofyn hyd yn oed pan fo’n eistedd ymhell i lawr yr allbwn. Mae order yn torri cyfartal rhwng parthau o’r un hyd. Anaml y mae cip cyntaf angen mwy na hyn: yr allbwn cyfan pan fynnwch ddarllen un bloc o’r dechrau i’r diwedd, y llinellau agoriadol i ddysgu trefn y blociau, a phas wedi’i hidlo sy’n argraffu penawdau’r blociau wrth ymyl llinellau’r meysydd. Mae blociau cwmpasedig yn ymddangos o dan eu pennawd eu hunain ac yn darllen fel parhad o’r rhestr uwch eu pennau, felly cadwch bennawd mewn golwg pryd bynnag y dyfynnwch yr allbwn.
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'
Cydweddwch if_index â rhyngwyneb y tiwnel
Nid yw mynegai yn ddefnyddiol ond os gallwch enwi’r rhyngwyneb y tu ôl iddo. Mae scutil --nwi yn rhestru’r wybodaeth rhwydwaith y mae’r system yn ei chadw, gan gynnwys y rhyngwyneb sylfaenol a chyrhaeddedd, tra bod ifconfig -l yn rhoi’r enwau i chi, lle mae utun0 hyd at utun9 yw’r ymgeiswyr tiwnel y mae cleient yn eu creu fel arfer. Mae Apple yn defnyddio scutil --dns fel ei enghraifft archwilio ei hun yn y canllaw defnyddio, ac yn dogfennu sut y gall Network Extension lwybro parthau dethol i ddatryswyr dethol, sef y mecanwaith y mae’r blociau cwmpasedig hynny’n ei ddangos.
Y prawf sy’n setlo’r cwestiwn yw a yw’r datryswr yn eistedd ar y llwybr a osododd y tiwnel:
scutil --nwi
ifconfig utun4
route -n get 10.20.0.53
netstat -rn | grep -m5 utun
Os yw route -n get yn dychwelyd porth a rhyngwyneb nad ydynt yn cyfateb i gofnod y datryswr, gall y cyfeiriad fod yn hollol gywir ac eto’n anghyrhaeddadwy. Mae tiwnel hollt sy’n cario is-rwydweithiau corfforaethol yn unig yn gollwng ymholiadau a anelir at weinydd DNS y tu allan iddynt, ac mae’r methiant yn ymddangos fel goramser, a dyna pam y mae allbwn y ffurfweddiad yn parhau i edrych yn lân.
Holwch ddatryswr y system, yna’r gweinydd
Mae tri offeryn yn ateb tri chwestiwn gwahanol, ac mae eu cymysgu yn cynhyrchu’r rhan fwyaf o’r casgliadau anghywir yn y maes hwn. Mae dscacheutil -q host -a name yn mynd trwy’r un datryswr system ag y mae rhaglenni cyffredin yn ei ddefnyddio, felly mae blociau cwmpasedig ac atodol yn berthnasol. Mae dig heb ddadl gweinydd yn darllen /etc/resolv.conf, nad yw’n ffynhonnell gwirionedd ar gyfer datrysiad cwmpasedig ar macOS, ac mae’n hepgor y rheolau fesul parth yn gyfan gwbl. Mae dig @address yn cyrraedd un gweinydd yn union ac yn dweud dim wrthych am ddethol.
dscacheutil -q host -a name intranet.corp.example
dig intranet.corp.example
dig @10.20.0.53 intranet.corp.example
nslookup intranet.corp.example
Pan fydd y gorchymyn cyntaf yn ateb a’r ail yn dychwelyd NXDOMAIN, rydych wedi darganfod yr hollt yr oeddech yn chwilio amdano ac nid oes dim wedi torri. Pan fydd y cyntaf yn goramser tra bod dig @10.20.0.53 yn ateb, mae’r datryswr yn gweithio ond nid yw’n gyrhaeddadwy ar y llwybr a ddewisodd y tiwnel, felly’r cam nesaf yw route -n get yn hytrach nag addasu gosodiadau DNS. Cadwch enwau preifat allan o unrhyw beth a ludo’ch i docyn neu nodyn a rennir.
Yr hyn na all yr allbwn ei ddangos i chi
Mae sawl haen yn eistedd uwchben neu wrth ymyl y rhestr datryswyr, a gall pob un anfon ymholiad i rywle nad yw’r allbwn byth yn sôn amdano. Gall porwr â DNS diogel wedi’i alluogi ddatrys dros ei sianel amgryptiedig ei hun, felly nid yw tudalen sy’n llwytho tra bod dscacheutil yn goramser yn wrthddywediad. Mae procsi DNS a osodir gan feddalwedd diogelwch yn rhedeg fel darparwr Network Extension ac yn anfon ymholiadau ymlaen ei hun, ac mae scutil --dns yn dangos yr hyn a ffurfweddwyd yn hytrach na’r cyfeiriad i fyny’r afon a ddefnyddiodd y procsi o’r diwedd. Mae parthau chwilio yn ychwanegu trydydd tro: mae enw heb gymhwyso yn cael pob ôl-ddodiad a restrir wedi’i atodi mewn trefn, felly gall y bloc a atebodd fod yn un na chawsoch chi erioed amheuaeth amdano.
Yr atebion hen yw’r peth rhataf i’w ddiystyru a’r mwyaf a hepgorir:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
scutil --dns | head -20
Os yw’r allbwn yn newid ar ôl y fflwsh, roedd y cyflwr wedi’i storio ac roedd yr allbwn cynharach yn disgrifio tiwnel nad oedd yn bodoli mwyach. Os nad yw’n newid, y ffurfweddiad yw’r hyn ydyw, ac mae’r cwestiwn yn symud i lwybrau ac i bolisi cymhwysiadau.
Llawlyfr byr ar gyfer cyn ac ar ôl
Cofnodwch linell sylfaen dim ond lle mae polisi’n caniatáu, a chadwch y ffeiliau allan o unrhyw ffolder wedi’i gysoni. Y dilyniant isod yw’r hyn a redaf ar beiriannau cleientiaid: cofnodi’r llinell sylfaen, cysylltu, cofnodi eto, yna cymharu a chwilio.
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
Darllenwch y gwahaniaeth fesul bloc yn hytrach nag fesul llinell. Datryswr cwmpasedig newydd sy’n cario mynegai rhyngwyneb y tiwnel a chofnod domain ar gyfer yr ôl-ddodiad preifat yw’r siâp disgwyliedig. Mae datryswr diofyn newydd yn pwyntio at gyfeiriad cyhoeddus yn ddarganfyddiad sy’n werth ei godi gyda pwy bynnag sy’n berchen ar broffil y cleient. Yna ailadroddwch y chwilfa y tu mewn i’r rhaglen a fethodd mewn gwirionedd, nid yn y blwch cregyn yn unig, a nodwch y rhyngwyneb o route -n get wrth ymyl y canlyniad.
I ddadwneud newid, datgysylltwch ac ailadroddwch gofnodi’r llinell sylfaen. Os yw’r bloc cwmpasedig wedi mynd, mae’r cleient wedi glanhau ar ei ôl ei hun. Os yw’r bloc yn dal i’w restru yn erbyn rhyngwyneb nad yw’n bodoli mwyach, mae’r cyflwr yn hen, ac mae fflwsh ynghyd ag ailgysylltu’r atgyweiriad hynaf yw iddo cyn i unrhyw un gyffwrdd â’r proffil.
Pedwar prawf, yn y drefn hon: a yw bloc datryswr yn cyfateb i ôl-ddodiad hiraf yr enw; a yw’r bloc hwnnw wedi’i rwymo i’r rhyngwyneb a osododd y tiwnel; a yw’r llwybr i’w weinydd enwau yn defnyddio’r tiwnel; ac a yw datryswr y system, nid dig, yn dychwelyd yr ateb. Mae’r prawf cyntaf sy’n methu yn dweud wrthych a ddylech newid polisi DNS, llwybrau’r tiwnel, neu’r rhaglen. Os yw’r pedwar yn pasio ac mae’r enw’n dal i fethu, mae’r broblem uwchben DNS, a’r peth nesaf i’w archwilio yw unrhyw beth sy’n ateb port 53 o’i flaen.