Et internt navn løses fortsatt til VPN-serveren en dag etter at tunnelen ble lukket, og resolverfilen kommer stadig tilbake med den oppføringen. Der Debians resolvconf eier tilstanden, settes filen sammen av leverandøroppføringer, og én av dem er resten. Det tar et minutt å slette oppføringen; å bevise at det er trygt er det egentlige arbeidet. Disse portene kjøres i rekkefølge, og en port som feiler avslutter prosedyren i stedet for å sende deg videre til neste trinn.

Bekreft at resolvconf eier tilstanden

Identifiser eieren først, fordi det samme symptomet under systemd-resolved krever andre kommandoer og en annen reparasjon. resolvconf-pakken holder en database under /run/resolvconf og peker /etc/resolv.conf mot filen den bygger fra den databasen. To lesninger avgjør spørsmålet: målet til symlenken, og om pakken er installert og aktiv. Et mål under /run/systemd/resolve betyr det andre designet, der ingenting nedenfor gjelder.

dpkg -l resolvconf | tail -1
ls -l /etc/resolv.conf
systemctl is-active resolvconf.service

Hvis lenken peker et annet sted eller pakken mangler, stopp her. En kompatibilitetsinnpakning som har lånt navnet, og som leveres av en annen resolver-behandler, eier ikke denne databasen.

Databasen holder inndata, ikke svaret

Databasen holder inndata og filen er utdata, så å liste inndataene er den eneste måten å se hvilket program som installerte oppføringen du vil bli kvitt. Oppføringene er korte, og nøklene deres er håndtakene du trenger senere. Les dem før du avgjør hvilken som er foreldet, fordi et navn som ser ut som et VPN-grensesnitt kan tilhøre en annen klient. Hold private adresser og interne søkedomener utenfor delt diagnostikk; nøkkelen alene identifiserer vanligvis oppføringen.

sudo resolvconf --list
sudo resolvconf -i

Den første kommandoen skriver ut leverte oppføringer uten å behandle dem, og den andre lister grensesnittene som for tiden leverer DNS-konfigurasjon. Nøkler bygges vanligvis fra et grensesnittnavn pluss programmet som leverer det. resolvconf-håndboken beskriver databasen disse nøklene adresserer.

Kopier nøkkelen ut av utdataene i stedet for å bygge den på nytt. En oppføring heter ikke tun0 bare fordi et gammelt skript brukte det navnet.

Bevis at oppføringen ikke har noen eier

En oppføring er trygg å slette når ingen levende tilkobling installerte den. Korreler nøkkelen med tilkoblingen som opprettet den, og bekreft deretter at den tilkoblingen er borte. Den korrelasjonen er hele porten, og det er trinnet som oftest hoppes over på veien til slettekommandoen. Hvis bevisene er tvetydige, behandler du oppføringen som levende og stopper.

Prosessnavn er svake bevis. OpenConnect kaller vpnc-script, så en sjekk av en vpnc-prosess sier ingenting om hvilken oppføring som er gjeldende. En ny tilkobling kan også gjenbruke et grensesnittnavn som en gammel la igjen, noe som får nøkkelen til å se eldre ut enn den er. Sammenlign serveradressen inne i oppføringen med adressene til tunneler som fortsatt er oppe, og stopp hvis de stemmer.

En normal frakobling gjennom behandleren som eier tilkoblingen er det første botemidlet. Den trekker tilbake det den tilkoblingen installerte og lar andre leverandører være urørt.

Kontroller fjerningen og omskrivingen

Når oppføringen er bekreftet foreldet, slett den med den nøyaktige nøkkelen og les deretter resultatet i stedet for å anta det. Kommandoen endrer resolvertilstanden for hver applikasjon på verten, så kjør den i et vindu du kontrollerer. Sett nøkkelen i anførselstegn, fordi den inneholder tegn skallet ellers ville utvide. Plassholderen i blokken står for nøkkelen du kopierte fra listen, ikke for en bokstavelig streng.

sudo resolvconf -d "RECORD_KEY_FROM_THE_LIST"
sudo resolvconf --list
resolvectl query host.corp.example || getent hosts host.corp.example

Sletting kjører oppdateringsskriptene når oppdatering er slått på; med oppdateringer slått av utsetter den oppdateringen, så en fjernet oppføring og en omskrevet fil er to separate hendelser. Les listen på nytt og bekreft at nøkkelen er borte før du ser på filen. Spør deretter etter ett navn som fortsatt skal løses gjennom de gjenværende leverandørene og ett offentlig navn, og sammenlign begge med det du så før endringen. Hvis et privat navn slutter helt å løses, bar den oppføringen det fortsatt.

resolvconf -u kjører bare de oppdateringsskriptene. Den identifiserer eller sletter aldri en foreldet oppføring, og å bygge på nytt fra foreldede inndata gjenskaper den samme uønskede filen.

En drept frakoblingskrok etterlater oppføringen

En engangs opprydding gjenoppretter dagens tilstand, og neste avbrutte avslåing setter oppføringen tilbake. Gå nedrivningsveien: klientens frakoblingskrok, hjelperen kroken kaller, og hva som skjer når en av dem drepes. En avbrutt avslåing er den vanlige årsaken, fordi kroken aldri kjørte i det hele tatt. Logg utgangsstatusen til kroken én gang, og du vet om den feiler stille.

Hold oppsett og opprydding under én eier. Et andre skript som gjetter grensesnittnavn vil til slutt slette oppføringen til en annen tilkobling, noe som er verre enn den foreldede oppføringen du startet med. Eieren bør også avgjøre når en oppføring er foreldet, fordi den vet hvilken tilkobling som installerte den.

Deretter tren på livssyklusen: koble til, koble fra, list oppføringene på nytt. At oppføringen forsvinner av seg selv er det eneste beviset på at reparasjonen holder.

Relaterte artikler