Mae DNS yn dal i fynd yn ôl i'w hen gyflwr, mae ailgysylltu'r VPN yn dad-wneud eich cywiriad, ac yn y pen draw mae rhywun yn y tîm yn awgrymu cloi'r ffeil. Symptom yw'r dilyniant hwnnw, nid datrysiad: mae dau gydran ill dau'n credu eu bod yn berchen ar /etc/resolv.conf, a'r un sy'n ysgrifennu olaf sy'n ennill. Nid yw cloi'r ffeil yn datrys y gwrthdaro perchentyaeth, dim ond ei guddio tra'n torri'r cydran yr oeddech ei eisiau mewn gwirionedd. Ewch drwy'r pedair gwiriad isod yn eu trefn, a thrwsiwch y trefniant ar y lefel sy'n berchen arno, nid ar y ffeil.

Gwirio 1: a yw'n gysylltiad symbolaidd, ac i ble

Dechreuwch gyda'r ffeil ei hun, oherwydd efallai nad y ffeil yw'r llwybr yr ydych yn ei olygu o gwbl. Mae cysylltiad symbolaidd i gyfeiriad rhedeg datryswr yn ymddwyn yn hollol wahanol i ffeil gyffredin y mae sgript cleient yn ei hailsgrifennu:

ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
cat /etc/resolv.conf

Mae dolen i lwybr stub systemd-resolved yn golygu bod cynnwys y ffeil yn cael ei gynhyrchu, a bydd golygu â llaw yn cael ei throsysgrifo yn y digwyddiad nesaf. Mae ffeil gyffredin â llinellau nameserver fel arfer yn cael ei hysgrifennu gan ba bynnag gleient neu fach DHCP sy'n rhedeg wrth gysylltu. Mae'r ddau'n ddilys; yr hyn sy'n bwysig yw gwybod pa un sydd gennych cyn i chi newid unrhyw beth.

Gwirio 2: pa daemon sy'n rhedeg

Darganfyddwch beth sy'n weithredol mewn gwirionedd, nid beth sydd wedi'i osod. Gall sawl datryswr fod yn bresennol ar ddosbarthiad modern, a'r un sy'n dal porth 53 ar y rhyngwyneb loopback sy'n ateb:

systemctl status systemd-resolved --no-pager
resolvectl status
ss -lunp | grep ':53'

Mae allbwn statws yn enwi'r gweinyddwyr DNS fesul cysylltiad a'r parthau llwybro, sef y map sydd ei angen arnoch ar gyfer DNS hollt. Os oes rhaid i enwau mewnol fynd i weinydd mewnol a phopeth arall i un cyhoeddus, mae'r polisi hwnnw'n byw yn y parthau fesul cysylltiad, ac mae ei fflatio i restr nameserver statig yn y ffeil yn colli'r gwahaniaeth yn dawel.

Mae cyfluniad NetworkManager ei hun yn penderfynu pa un o'r backendau hyn y mae'n ei ddefnyddio. Mae ei osodiad dns= yn y prif ffeil gyfluniad yn dewis rhwng ei ddatryswr mewnol, dnsmasq, systemd-resolved a none, ac efallai bod dosbarthiad wedi dewis ar eich rhan. Darllenwch y gosodiad hwnnw cyn penderfynu beth mae “trwsio DNS” yn ei olygu ar y gwesteiwr hwn.

Gwirio 3: beth y caiff y cleient VPN ei ysgrifennu

Dyma lle mae'r gwrthdaro fel arfer yn byw. Bydd cleient VPN sy'n hailsgrifennu ffeil y datryswr yn uniongyrchol yn ymladd ag unrhyw wasanaeth sy'n ei chynnal hefyd, a'r collwr yw pwy bynnag sy'n rhedeg gyntaf. Gall fersiynau diweddar o OpenVPN gyflwyno gosodiadau DNS i systemd-resolved yn lle hailsgrifennu'r ffeil, sef yr ymddygiad cydweithredol yr ydych ei eisiau; mae sgriptiau hŷn a bachau wedi'u hysgrifennu â llaw yn aml yn galw cynorthwyydd hen ffasiwn neu'n trosysgrifo'r ffeil yn syml.

Mae sefyllfa WireGuard yn debyg o ran siâp: nid yw cyfluniad y rhyngwyneb ei hun yn rheoli DNS, mae'r offer o'i gwmpas yn gwneud hynny, trwy gynorthwyydd datryswr neu'r integreiddiad resolved. Os oes dau gynorthwyydd o'r fath wedi'u gosod, bydd y ddau'n ceisio gosod eu golygfa o'r byd wrth gysylltu.

Darllenwch fachau up a down y cleient yn lle dyfalu. Mae ychydig linellau o shell yn /etc/openvpn/up.sh neu gyfeiriad cyfatebol yn esbonio ymddygiad sy'n edrych yn hap arall, a dyma hefyd y man i wneud i'r cleient gydweithio yn lle cystadlu.

Gwirio 4: trwsiwch ef yn y perchennog, nid yn y ffeil

Unwaith y gwyddoch y perchennog, cyfluniwch DNS drwy ryngwyneb a gefnogir gan y perchennog hwnnw. Ar gyfer systemd-resolved mae hynny'n golygu gosodiadau fesul cysylltiad a pharthau llwybro yn hytrach na ffeil statig; ar gyfer NetworkManager mae'n golygu gosodiadau DNS y proffil cysylltiad a'r backend a ddewiswyd; ar gyfer dosbarthiad sy'n defnyddio integreiddiad resolvconf mae'n golygu ysgrifennu drwy'r cynorthwyydd hwnnw.

Peidiwch â gwneud y ffeil yn anghyfnewidiol. Mae'r nodwedd anghyfnewidiol yn atal adnewyddiadau DHCP dilys a diweddariadau VPN ynghyd â'r rhai yr oeddech yn ymladd yn eu herbyn, ac mae'n gadael y system mewn cyflwr lle mae'r uwchraddiad pecyn neu'r ailgysylltiad nesaf yn cynhyrchu methiant na all neb ei esbonio o'r cyfluniad. Mae'n cuddio'r gwrthdaro perchentyaeth, sef yr union beth yr oeddech yn ceisio ei ddatrys.

Lle mae'n rhaid i ddau gydran gydfodoli mewn gwirionedd, rhowch swyddi gwahanol iddynt. Gadewch i'r rheolwr rhwydwaith fod yn berchen ar y cyfluniad ar lefel rhyngwyneb, gadewch i'r cleient VPN gyfrannu DNS a pharthau fesul cysylltiad drwy'r un integreiddiad, a thynnwch y drydedd sgript sy'n ysgrifennu'r ffeil yn uniongyrchol. Mae dogfennaeth systemd-resolved yn nodi'r moddau a gefnogir ganddo a'r hyn y mae pob un yn ei ddangos yn /etc/resolv.conf. Dewiswch y modd sy'n cyfateb i faint o bolisi y mae angen i chi ei gadw. Os yw DNS hollt yn bwysig, mae'r trefniant stub â pharthau fesul cysylltiad yn ei gadw, tra bod y modd sy'n copïo gweinyddwyr upstream i'r ffeil yn ei fflatio'n dawel.

Gwiriwch ar ôl ailgysylltu, nid ar ôl y golygiad

Nid yw ffeil sy'n edrych yn gywir yn syth ar ôl eich newid yn profi dim, oherwydd nid yw'r digwyddiad nesaf wedi digwydd eto. Sbardunwch y dilyniant a oedd yn ei thorri o'r blaen: gostyngwch a chodwch y twnnel, adnewyddwch les DHCP neu doglwch y rhyngwyneb, yna darllenwch yr un gwerthoedd eto.

resolvectl query build.corp.example
resolvectl query example.com
resolvectl status | head -40

Yna cadarnhewch y gwahaniaeth sy'n bwysig: mae'r enw mewnol yn datrys drwy'r gweinydd mewnol tra bod yr enw cyhoeddus yn dal i weithio. Mae cyfluniad sy'n anfon popeth i'r gweinydd mewnol yn edrych yn iawn nes bod rhywun yn ceisio cyrraedd y rhyngrwyd drwy'r twnnel, ac mae cyfluniad sy'n anfon popeth i'r un cyhoeddus yn gollwng enwau mewnol.

Cofnodwch y perchennog, y backend a modd y cysylltiad symbolaidd yn y nodiadau defnyddio. Mae'r un paragraff hwnnw'n troi uwchraddiad pecyn yn y dyfodol o ddigwyddiad yn eitem adolygu, ac mae'n atal y person nesaf rhag ailddarganfod yr un gwrthdaro gyda gorchymyn chattr.

Erthyglau cysylltiedig