Gwnaethoch ychwanegu enw at /etc/hosts, cysylltu’r VPN, a disgwyl i’r cofnod ymddangos i bawb. Nid yw’n gwneud hynny, ac mae’r syndod fel arfer yn dod â symptom ail: mae’r enw’n datrys ar eich peiriant ac yn methu ar un cydweithiwr, sy’n edrych fel gwasanaeth DNS VPN wedi torri ac mewn gwirionedd mae’r ffeil hosts yn gwneud yn union yr hyn y cafodd ei chynllunio i’w wneud. Mae ffeil hosts yn gyfluniad datrys enwau lleol, nid yn ddiweddariad parth, ac nid oes unrhyw beth mewn cysylltiad VPN arferol yn ei huwchlwytho.

Mae hosts yn drosysgrifiad lleol, nid yn ddiweddariad parth

Mae’r ffeil yn rhestr o fapiau y mae llyfrgelloedd gwasanaeth enwau yn ymgynghori â nhw cyn gofyn i weinydd DNS, neu yn lle hynny. Mae llinell fel 10.40.0.20 build.corp.example yn newid yr hyn y mae cymwysiadau ar yr un peiriant hwnnw yn ei gasglu. Nid yw’n creu cofnod, nid yw’n teithio drwy’r tiwnel, ac nid oes gan y gweinydd DNS y mae’r tiwnel yn cyfeirio ato unrhyw syniad ei fod yn bodoli.

Dyna pam mae’r methiant yn anghymesur. Mae eich cleient yn cael ateb o’r ffeil. Mae cleient arall yn gofyn i weinydd DNS y VPN, sy’n dychwelyd dim, ac mae’r cymhwysiad yn adrodd nad yw’r enw’n bodoli. Mae’r ddau beiriant yn ymddwyn yn gywir; dim ond un ohonynt sydd â throsysgrifiad nad yw’r llall erioed wedi’i weld.

Dau orchymyn, dau gydran wahanol

Y ffordd gyflymaf i atal y ddadl yw gwneud y gwahaniaeth yn weladwy mewn dau orchymyn, y ddau yn cael eu rhedeg ar y cleient sydd â’r cofnod hosts:

getent ahosts build.corp.example
dig @10.40.0.53 build.corp.example A

Mae’r cyntaf yn gofyn i lwybr chwilio’r system ei hun, sydd ar system glibc nodweddiadol yn darllen ffeiliau lleol cyn DNS. Mae’r ail yn anfon ymholiad DNS yn uniongyrchol at y gweinydd yn y cyfeiriad hwnnw ac nid yw’n ymgynghori â ffeiliau lleol o gwbl. Pan fydd y cyntaf yn dychwelyd eich cofnod a’r ail yn dychwelyd NXDOMAIN, rydych wedi profi nad yw’r cofnod yn bodoli yn DNS a bod eich peiriant yn ateb o drosysgrifiad lleol.

Mae’r drefn yn gyfluniadwy, ac mae’n werth ei gwirio cyn i chi ddod i unrhyw gasgliad am ddosbarthiad penodol. Edrychwch ar y llinell hosts: yn /etc/nsswitch.conf; mae hosts: files dns yn ymgynghori â ffeiliau yn gyntaf. Peidiwch â chopïo’r enghraifft honno dros gyfluniad sy’n gweithio dim ond i newid y drefn, oherwydd mae systemau go iawn yn aml yn rhestru ffynonellau ychwanegol a chofnodion gwasanaeth amodol nad yw’r enghraifft yn eu cynnwys.

Mae systemd-resolved yn cymylu’r prawf

Ar system sy’n defnyddio systemd-resolved, mae’r stub lleol hefyd yn gwasanaethu enwau o’r gronfa ddata hosts. Felly nid yw ymholi 127.0.0.53 yn brawf annibynnol o’r gweinydd anghysbell, er ei fod yn edrych fel ymholiad DNS ac yn ymddwyn fel un. Gallwch gadarnhau’r hyn y mae’r datryswr yn ei wybod a pha weinyddwyr y byddai’n gofyn iddynt gyda:

resolvectl query build.corp.example
resolvectl status

Mae allbwn status yn enwi’r gweinyddwyr DNS fesul cyswllt, a dyna sut rydych yn darganfod a yw’r cyswllt VPN wedi cael datryswr o gwbl. Mae’r cwestiwn hwnnw ar wahân i’r cofnod hosts a dyma’r un sy’n werth ei ofyn pan fydd enw preifat yn methu i bob defnyddiwr yn hytrach nag i un.

Gall cymwysiadau ychwanegu haen arall eto. Gall porwr â’i osodiad DNS-over-HTTPS ei hun, cynhwysydd â’i gyfluniad datryswr ei hun, neu amgylchedd rhedeg sy’n cache chwiliadau am oes y broses ateb yn wahanol i’r system. Profwch y cymhwysiad y mae arnoch chi ei angen yn hytrach na chymryd yn ganiataol bod un gorchymyn yn disgrifio pob rhaglen ar y peiriant.

Beth sy’n rhannu enw ar draws y VPN mewn gwirionedd

Os oes rhaid i enw preifat weithio i bawb, mae angen perchennog y gall datryswr pawb ei gyrraedd. Yr ateb glân yw cyhoeddi’r cofnod mewn parth a reolir a gwneud y parth hwnnw’n ddatryswy drwy lwybr DNS arfaethedig y VPN. Yna mae gan y cofnod un ffynhonnell wirionedd, trywydd archwilio a chylch bywyd, ac nid oes rhaid i unrhyw un gofio pa liniadur sy’n cario trosysgrifiad lleol.

Mae dosbarthu ffeiliau hosts yn ddewis amgen dilys, a rheoli pennaeth yw hynny yn hytrach na gwasanaeth enwau. Os ydych yn ei ddewis, rhaid i’r ffeil gael ei defnyddio, ei fersiynu a’i thynnu gan beth bynnag sy’n rheoli’r fflyd, a dylid ei disgrifio felly yn y cynllun. Nid yw “mae’r VPN yn trin hyn” yn ddisgrifiad o’r broses honno.

Mae cofrestru DNS deinamig yn drydydd mecanwaith, gyda’i ganiatâd, dilysu diweddariadau ac oes cofnod ei hun. Nid yw’n deillio o gofnod hosts, ac nid yw’n deillio o gleient yn cysylltu’n syml chwaith, oni bai bod y gweinydd a’r cleient ill dau wedi’u cyflunio i wneud hynny. Mae cofnod sy’n ymddangos ohono’i hun yn arwydd bod rhywun wedi galluogi diweddariadau diogel a chleient sy’n cofrestru ei hun, ac mae’r cyfluniad hwnnw’n perthyn i gofnod y cynllun yn hytrach nag i edefyn datrys problemau. Os na all unrhyw un enwi pwy sy’n berchen ar y gosodiad hwnnw, triniwch y cofnod awtomatig fel un heb ei wirio a chadwch y parth a reolir fel ffynhonnell gwirionedd.

Nid yw enw wedi’i ddatrys yn llwybr

Mae datrys enwau ac ymgyrraedd yn bethau ar wahân, a’r ffordd glasurol o’u cymysgu yw map lleol hen ffasiwn. Bydd cofnod hosts sy’n cyfeirio at gyfeiriad sydd wedi symud yn parhau i ddewis y gwesteiwr hen ffasiwn ymhell ar ôl i DNS gael ei gywiro, ac mae’r symptom yn edrych fel methiant llwybro ar enw sy’n datrys yn iawn.

Felly pan fydd yr adroddiad yn “mae’r enw’n datrys ond nid yw’r gwasanaeth yn ymgyrraeddadwy”, cymharwch chwiliad y system ag ymholiad penodol i weinydd DNS y VPN, yna gwiriwch y cyfeiriad a gawsoch yn erbyn yr un y mae’r gwasanaeth yn ei ddefnyddio mewn gwirionedd. Mae cyfeirnod systemd-resolved yn dogfennu’r ffynonellau lleol y mae’n ymgynghori â nhw, a dyna’r map sydd ei angen arnoch ar gyfer y gymhariaeth honno.

Yna cywirwch y trosysgrifiad drwy ei berchennog. Nid yw tynnu llinell o’ch ffeil hosts eich hun yn gwneud dim i’r deuddeg liniadur a gafodd yr un llinell o sgript defnyddio, a dyma’r fersiwn o’r broblem hon y mae gan bobl mewn gwirionedd.

Erthyglau cysylltiedig