Nid yw golygu resolv.conf yn trwsio DNS ar ôl i’r VPN ddatgysylltu
Mae datryswr twnnel marw ar frig y rhestr yn costio un timeout fesul chwiliad. Gwiriwch pwy sy’n berchen ar y ffeil, ailosodwch gyflwr y cysylltiad a rhowch y gorau i olygu allbwn a gynhyrchir.
Rydych chi’n datgysylltu’r VPN, mae ping 1.1.1.1 yn dal i ateb, ac mae pob chwiliad enw yn hongian cyn i’r dudalen ildio o’r diwedd. Yna mae cat /etc/resolv.conf yn dangos gweinydd enwau nad oedd ond yn bodoli y tu mewn i’r twnnel, fel arfer gyntaf yn y rhestr. Mae dileu’r llinell honno’n ymddangos yn trwsio’r peth am tua deg munud, nes bod atal, crwydro Wi-Fi neu ailgychwyn yn ei roi yn ôl. Nid y ffeil a olygwyd gennych yw’r gosodiad; mae’n rendr o gyflwr cyswllt sy’n eiddo i gydran arall.
Pam mae un cofnod hen yn costio eiliadau fesul chwiliad
Mae datryswr glibc yn cerdded y rhestr gweinyddwyr enwau yn eu trefn ac yn aros am timeout cyn rhoi cynnig ar y nesaf, ac mae resolv.conf(5) yn cyfyngu’r rhestr honno i dri chofnod. Rhowch ddatryswr ochr y twnnel fel 10.8.0.1 ar y brig ar ôl i’r twnnel fynd, a bydd pob chwiliad yn talu’r timeout cyn disgyn trwodd i weinydd sy’n ateb. Dyna pam mae’r symptom yn edrych fel cysylltiad marw yn hytrach na gwall DNS: mae porwyr yn blocio, yn rhedeg allan o amser, ac weithiau’n gweini cyfeiriad storfa a â’n hen yn ddiweddarach.
Mae hefyd yn esbonio pam mae’r gŵyn yn cyrraedd fel „mae’r rhyngrwyd wedi torri”. Mae ping i gyfeiriad IP yn profi bod y cyswllt yn iawn, sy’n gwneud i’r nam edrych fel un yn y rhaglen. Y rhestr datryswyr yw’r peth cyntaf i’w darllen a’r peth olaf i’w olygu.
Y myth: ffeil gosodiadau yw resolv.conf
Gofynnwch beth yw’r llwybr mewn gwirionedd cyn ei newid:
ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
Ar westeiwr systemd-resolved mae’n ddolen symbolaidd i ffeil stub sy’n pwyntio at 127.0.0.53, ac mae’r gweinyddwyr go iawn yn byw mewn cyflwr fesul cyswllt y mae resolvectl yn ei argraffu. Ar westeiwr NetworkManager gall fod yn ffeil y mae NetworkManager yn ei hysgrifennu o’r cysylltiad gweithredol. Gyda rhai cleientiaid gwerthwyr mae’n ffeil blaen a ailysgrifennir yn ei lle ar gysylltu ac, os ydych chi’n anlwcus, byth yn cael ei hadfer ar ddatgysylltu. Tri pherchennog gwahanol yw’r rhain, ac mae golygu’r ddau gyntaf â llaw naill ai’n gwneud dim neu’n para tan y digwyddiad rhwydwaith nesaf.
resolvectl status yw’r olygfa sy’n dweud y gwir: gweinyddwyr DNS fesul cyswllt, parthau llwybro, ac a yw cyswllt y twnnel yn dal i fodoli. Mae resolvectl query example.com yn mynd ymhellach ac yn dangos pa ryngwyneb a atebodd. Defnyddiwch y ddau cyn cyffwrdd â ffeil, a chofiwch fod porwr â’i DNS diogel ei hun yn anwybyddu’r cyfan.
Dewch o hyd i’r perchennog cyn golygu unrhyw beth
Mae tair cydran fel arfer yn cystadlu am yr un gosodiad: systemd-resolved, NetworkManager, a’r hyn y gosododd cleient VPN ef. Nodwch yr un byw yn gyntaf:
systemctl is-active systemd-resolved
nmcli connection show --active
ps aux | grep -E "openvpn|wg-quick|vpn"
Os yw resolved yn weithredol ac mae’r ddolen symbolaidd yn pwyntio at ei stub, allbwn a gynhyrchir yw’r ffeil fyd-eang ac mae eich golygiad yn addurnol. Os NetworkManager sy’n berchen ar y cysylltiad, mae’r gweinyddwyr yn perthyn i broffil y cysylltiad, felly newid priodwedd trwy nmcli yw’r atgyweiriad yn hytrach nag olygu ffeil. Os oes daemon gwerthwr yn rhedeg, ei lwybr adfer ei hun yn unig sy’n goroesi’r cysylltiad nesaf.
Cliriwch gyflwr y cyswllt a adawyd ar ôl gan y cleient
Ni all cleient a laddwyd redeg ei fachyn glanhau. Ni ellir dal SIGKILL o gwbl, tra gellir dal SIGINT a SIGTERM, felly mae twnnel a „stopiodd yn unig” ar ôl lladd dan orfod yn aml yn gadael cofrestriad y rhyngwyneb a chofnod y datryswr ill dau yn eu lle. Dewch o hyd i’r PID penodol ac anfonwch y signal at y llall yn unig:
ps aux | grep -E "openvpn|wg-quick"
sudo kill <pid>
resolvectl revert tun0
Peidiwch â chyrraedd am pkill -f vpn na killall vpn cyn darllen y rhestr gyfan o gyfatebau. Mae -f yn cyfateb i’r llinell orchymyn gyfan, felly gall ddod â sgript lapio, sesiwn golygydd neu broses ddigyswllt y mae ei llwybr yn cynnwys y llinyn i ben. Dod â’r broses anghywir i ben yng nghanol gwaith yw sut mae problem datryswr yn troi’n ffeil a gollwyd.
Mae resolvectl revert yn ailosod cyfluniad DNS amser rhedeg y cyswllt hwnnw, sy’n gulach na ailgychwyn y datryswr ac yn llawer culach nag olygu’r ffeil fyd-eang. Os yw cyswllt y twnnel wedi mynd yn gyfan gwbl, mae systemctl restart NetworkManager yn ailadeiladu cyflwr y cysylltiad a dyma’r cam y mae’r edafedd ffynhonnell yn dal i ddychwelyd ato. Gwyliwch am reolwr gwasanaeth â Restart=always, oherwydd gall roi cleient a laddwyd, a’i osodiadau DNS, yn syth yn ôl.
Y cyfeiriad arall: DNS a wthiwyd na chyrhaeddodd erioed
Delwedd drych y cofnod hen yw twnnel heb unrhyw ddatryswr defnyddiadwy o gwbl. Cais yw opsiwn DNS yn y proffil; rhaid i’r gydran sy’n rheoli’r cysylltiad ei drosglwyddo i’r datryswr. Os yw’r log yn dangos bod y gweinydd wedi’i dderbyn ond nad yw cyswllt y twnnel yn cario unrhyw osodiadau DNS, y gyfannu sydd ar goll, nid y gweinydd.
Profwch y trosglwyddiad trwy ei wneud â llaw, sy’n gwahanu „mae’r gweinydd yn anghywir” oddi wrth „ni chafodd neb ei roi ar waith”:
resolvectl dns tun0 10.10.10.10
resolvectl domain tun0 ~.
Mae’r parth llwybro dal-popeth yn anfon pob enw i’r cyswllt hwnnw, sef yr hyn y mae cleient twnnel llawn yn ei eisiau a’r hyn na chaiff DNS hollt ei ddefnyddio. Mae’r gosodiadau hyn yn diflannu ar y cysylltiad nesaf. I’w gwneud yn barhaol yn NetworkManager, analluogwch DNS awtomatig, gosodwch y gweinydd ar y cysylltiad ac ychwanegwch y parth:
nmcli connection modify office ipv4.ignore-auto-dns yes
nmcli connection modify office ipv4.dns 10.10.10.10
nmcli connection modify office ipv4.dns-search "~."
Ar gyfer twnnel corfforaethol a ddylai ateb enwau mewnol yn unig, rhestrwch y parthau hynny gyda thilde blaen yn lle dal-popeth, fel bod enwau cyhoeddus yn parhau i ddefnyddio’r datryswr lleol.
Atebion dros dro sy’n dod yn ddiffyg nesaf
Mae copïo resolv.conf cyn cysylltu a’i adfer wedyn yn llinell ddilys mewn runbook, ac mae’n ateb dros dro yn hytrach nag atgyweiriad. Mae’n methu’n union pan mae o bwys, oherwydd mae damwain neu ailgychwyn dan orfod yn hepgor yr adferiad. Nodwch ef fel ateb dros dro fel na fydd y person nesaf yn adeiladu arno.
Analluogi systemd-resolved a chaledgodio gweinyddwyr cyhoeddus yw’r symudiad poblogaidd arall. Mae’n gwneud cysylltu a datgysylltu’n ragweladwy ac yn tynnu DNS fesul cyswllt ar gyfer pob rhwydwaith arall, sy’n torri DNS hollt ar gyfer enwau mewnol ac yn trechu pwrpas twnnel a fwriadwyd i gadw ymholiadau y tu mewn iddo. Mae gosod resolvconf a phinio gweinyddwyr cyhoeddus yn costio’r un peth gyda haen ychwanegol. Triniwch y naill na’r llall fel diagnosis: os yw’n adfer pori, rydych wedi dysgu mai’r gyfannu datryswr sydd ar fai, nid bod y gweinyddwyr cyhoeddus yn gywir.
Yr atgyweiriad parhaol yw un perchennog fesul haen: penderfynwch pa gydran sy’n berchen ar DNS cyswllt y twnnel a pha un sy’n berchen ar y rhagosodiad byd-eang, nodwch hynny, a thynnwch y lleill o’r llwybr. Yna gwiriwch ar ôl datgysylltu ag enw nad yw ond y VPN yn ei ddatrys. Os yw enw preifat yn dal i ateb, ni thynnwyd y cofrestriad; os nad oes dim yn datrys o gwbl, mae’r ffeil yn pwyntio at weinydd nad yw’n bodoli mwyach. Mae’r ddau i’w gweld yn resolvectl cyn i chi agor porwr.