openconnect wedi’i ladd: mae llwybrau a DNS yn dal i bwyntio at y twnnel
Gall proses openconnect farw adael llwybrau a chofnodion datryswr wedi’u gosod. Cerddwch lwybr y diffodd, anfonwch yr arwydd y mae eich adeiladwaith yn ei ddogfennu, a glanhewch.
Mae’r twnnel i lawr ond mae’r peiriant yn dal i ymddwyn fel pe bai i fyny: mae chwiliad yn hongian nes iddo ddod i ben, ac mae llwybr yn pwyntio at ryngwyneb nad yw’n bodoli mwyach. Dyna lofnod proses openconnect a fu farw heb redeg ei gynorthwyydd datgysylltu. Mae’r cyflwr rhwydwaith a grëodd yn dal wedi’i osod, ac nid oes dim arall ar y system yn gwybod sut i’w dynnu.
Cerddwch drwy’r peiriant yn y drefn y crëwyd y cyflwr: proses, cyswllt, llwybr, datryswr. Mae pob cam yn dweud wrthych a yw’r cleient wedi mynd go iawn neu wedi ymddieithrio o’ch terfynell yn unig, ac mae’r gwahaniaeth hwnnw’n penderfynu a ddylech atgyweirio dim o gwbl.
Dechreuwch gyda’r broses, nid y ffurfweddiad
Agorwch derfynell a gofynnwch beth sy’n dal i redeg cyn cyffwrdd â llwybr. pgrep -a openconnect yn rhestru pob achos gyda’i ddadleuon, sy’n dangos y ffeil pid a’r sgript a roddwyd iddo. Mae proses na wnaethoch ei disgwyl yn esbonio’r twnnel ffantom yn gyflymach nag unrhyw log.
Os nad oes dim yn rhedeg, edrychwch ar y cyswllt. Mae ip link show tun0 yn dweud wrthych a yw’r rhyngwyneb wedi goroesi, ac mae ip route show dev tun0 yn rhestru llwybrau sy’n dal wedi’u rhwymo iddo. Yna gwiriwch y datryswr gyda resolvectl status. Cofnodwch y tri allbwn cyn eu newid, oherwydd y cofnod hwnnw yw sut y gwahaniaethwch gofnod hen ffasiwn oddi wrth un newydd yn nes ymlaen.
Mae rhyngwyneb sydd wedi diflannu fel arfer yn mynd â’i lwybrau gydag ef. Mae llwybrau sy’n goroesi’r cyswllt fel arfer yn golygu bod y broses yn dal yn fyw neu fod ail gleient yn berchen ar y ddyfais.
Y sgript gynorthwyol sy’n dadwneud y newidiadau
Nid yw openconnect yn tynnu’r rhyngwyneb, y llwybrau na’r cofnodion datryswr ei hun. Mae’n galw cynorthwyydd allanol, /etc/vpnc/vpnc-script mewn adeiladwaith upstream a /usr/share/vpnc-scripts/vpnc-script ym mhecynnau Debian ac Ubuntu, a ddewisir gyda -s. Yr un sgript sy’n codi’r twnnel sy’n ei ddymchwel hefyd.
Os yw’r broses yn gadael heb alw’r cynorthwyydd hwnnw, mae’r cyflwr yn aros. llawlyfr OpenConnect yn datgan yn glir na fydd llwybro a gwasanaeth enwau yn gweithio’n gywir heb y sgript, ac mae’n disgrifio’r cynorthwyydd fel y gydran sy’n dadsaernio cyflwr y rhyngwyneb wrth adael. Dyna pam mae’r llwybr yn bwysig pan fyddwch yn lansio’r cleient gyda -s.
Mae pa arwydd sy’n cyrraedd y llwybr hwnnw wedi newid rhwng fersiynau. Mae llawlyfr 7.06 yn trin SIGTERM fel gadael ar unwaith sy’n hepgor y sgript. Mae adeiladweithiau cyfredol yn dogfennu INT a TERM fel stop glân, lle mae’r sesiwn yn cael ei allgofnodi ac mae’r cynorthwyydd yn rhedeg. Darllenwch adran SIGNALS y deuaidd sydd gennych mewn gwirionedd yn lle tybio’r naill ymddygiad neu’r llall.
man openconnect | sed -n '/^SIGNALS/,/^LIMITATIONS/p'
Anfonwch yr arwydd y mae eich adeiladwaith yn ei ddogfennu
Unwaith y gwyddoch yr arwydd, stopiwch y broses drwy pid yn hytrach na thrwy batrwm.
pgrep -a openconnect
sudo kill -INT "$(cat /var/run/openconnect.pid)"
Yna ailadroddwch y tair gwiriad o’r adran gyntaf yn lle ymddiried yn statws gadael. ip link show tun0 a ddylai fethu, ip route show dev tun0 a ddylai argraffu dim, a resolvectl status a ddylai beidio â rhestru’r cyswllt VPN mwyach.
Nid botwm stop yw SIGHUP: mae’n datgysylltu, yn rhedeg y sgript ac yn gadael y sesiwn yn ailgydiadwy gyda --cookie. Mae SIGUSR2 yn gorfodi ailgysylltiad ar unwaith. Mae SIGKILL yn hepgor y glanhau’n gyfan gwbl, sef yn union y cyflwr y mae’r erthygl hon yn sôn amdano.
Trwsiwch y datryswr heb ddisodli resolv.conf
Ar y rhan fwyaf o systemau Ubuntu mae /etc/resolv.conf yn symbol cyswllt i mewn i systemd-resolved, nid ffeil y dylech ei golygu. Mae ei ddisodli’n torri datrysiad enwau ar gyfer pob rhwydwaith, nid y VPN yn unig. Yn lle hynny, tynnwch gofrestriad y twnnel:
resolvectl revert tun0
resolvectl query example.com
Os yw’r system yn defnyddio resolvconf yn hytrach na systemd-resolved, mae’r cofnod fesul rhyngwyneb yn parhau nes iddo gael gwybod i ollwng y cyswllt, a resolvconf -d tun0 yw’r weithred gyfatebol. Gwiriwch pa ddatryswr sy’n cael ei ddefnyddio cyn dewis y gorchymyn.
Mae chwiliad sy’n dal i anelu at weinydd y tu ôl i’r cyswllt marw yn hongian nes iddo ddod i ben, ac mae’r oedi hwnnw’n edrych fel gweinydd DNS wedi torri yn hytrach na llwybr gweddilliol.
Gwnewch y datgysylltiad nesaf yn ddiflas
Cadwch lwybr y ffeil pid yr un fath wrth gychwyn a diffodd drwy basio --pid-file bob tro, neu rhedwch openconnect o dan uned y mae ei KillSignal yn cyfateb i’r arwydd y mae eich fersiwn yn ei ddogfennu. Mae profi yn y blaendir yn gyntaf yn dangos y negeseuon diffodd y mae’r cynorthwyydd yn eu hargraffu.
Cysylltwch, datgysylltwch, a rhedwch y tair gwiriad unwaith. Nid yw gadael glân yn gadael unrhyw gyswllt VPN, unrhyw lwybr VPN nac unrhyw gofnod datryswr VPN. Os yw un o’r tri yn goroesi, rydych bellach yn gwybod pa gydran a fethodd lanhau. Yna mae’r ymchwiliad nesaf yn dechrau o’r ateb hwnnw yn hytrach nag o chwiliad sy’n hongian.