Ein interner Name löst sich noch einen Tag nach dem Schließen des Tunnels zum VPN-Server auf, und die Resolver-Datei kommt immer wieder mit diesem Eintrag zurück. Wo Debian-resolvconf den Zustand besitzt, wird diese Datei aus Lieferanteneinträgen zusammengesetzt, und einer davon ist der Rest. Den Eintrag zu löschen dauert eine Minute; zu beweisen, dass er sicher gelöscht werden kann, ist die eigentliche Arbeit. Diese Prüfpunkte laufen der Reihe nach, und ein gescheiterter Prüfpunkt beendet das Verfahren, statt Sie zum nächsten Schritt zu schicken.

Bestätigen, dass resolvconf den Zustand besitzt

Ermitteln Sie zuerst den Besitzer, denn dasselbe Symptom unter systemd-resolved braucht andere Befehle und eine andere Reparatur. Das Paket resolvconf hält eine Datenbank unter /run/resolvconf und zeigt /etc/resolv.conf auf die Datei, die es aus dieser Datenbank baut. Zwei Lesungen entscheiden die Frage: das Ziel des symbolischen Links und ob das Paket installiert und aktiv ist. Ein Ziel unter /run/systemd/resolve bedeutet das andere Design, bei dem nichts unten Gesagtes gilt.

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

Wenn der Link woanders hinzeigt oder das Paket fehlt, halten Sie hier an. Ein Kompatibilitätsmantel, der den Namen geliehen hat und von einem anderen Resolver-Manager ausgeliefert wird, besitzt diese Datenbank nicht.

Die Datenbank enthält Eingaben, nicht die Antwort

Die Datenbank enthält Eingaben, und die Datei ist eine Ausgabe, also ist das Auflisten der Eingaben der einzige Weg zu sehen, welches Programm den Eintrag installiert hat, den Sie loswerden wollen. Die Einträge sind kurz, und ihre Schlüssel sind die Griffe, die Sie später brauchen. Lesen Sie sie, bevor Sie entscheiden, welcher veraltet ist, denn ein Name, der wie eine VPN-Schnittstelle aussieht, kann zu einem anderen Client gehören. Halten Sie private Adressen und interne Suchdomänen aus gemeinsam genutzter Diagnose heraus; meist identifiziert der Schlüssel allein den Eintrag.

sudo resolvconf --list
sudo resolvconf -i

Der erste Befehl gibt gelieferte Einträge aus, ohne sie zu verarbeiten, und der zweite listet die Schnittstellen, die derzeit DNS-Konfiguration bereitstellen. Schlüssel werden üblicherweise aus einem Schnittstellennamen plus dem liefernden Programm gebaut. Das resolvconf-Handbuch beschreibt die Datenbank, die diese Schlüssel adressieren.

Kopieren Sie den Schlüssel aus der Ausgabe, statt ihn neu zu bauen. Ein Eintrag heißt nicht tun0, nur weil ein altes Skript diesen Namen verwendet hat.

Beweisen, dass der Eintrag keinen Besitzer hat

Ein Eintrag ist sicher zu löschen, wenn keine lebende Verbindung ihn installiert hat. Bringen Sie den Schlüssel mit der Verbindung in Zusammenhang, die ihn erzeugt hat, und bestätigen Sie dann, dass diese Verbindung weg ist. Diese Zuordnung ist der ganze Prüfpunkt, und sie ist der Schritt, der auf dem Weg zum Löschbefehl am häufigsten übersprungen wird. Wenn die Belege unklar sind, behandeln Sie den Eintrag als lebend und halten Sie an.

Prozessnamen sind schwache Belege. OpenConnect ruft vpnc-script auf, ein Test auf einen Prozess vpnc sagt also nichts darüber, welcher Eintrag aktuell ist. Eine neue Verbindung kann auch einen Schnittstellennamen wiederverwenden, den eine alte hinterlassen hat, was den Schlüssel älter aussehen lässt, als er ist. Vergleichen Sie die Serveradresse im Eintrag mit den Adressen von Tunneln, die noch stehen, und halten Sie an, wenn sie übereinstimmen.

Ein normales Trennen über den besitzenden Manager ist das erste Mittel. Es zieht zurück, was diese Verbindung installiert hat, und lässt andere Lieferanten unberührt.

Das Entfernen und das Neuschreiben prüfen

Nachdem der Eintrag bestätigt veraltet ist, löschen Sie ihn über den genauen Schlüssel und lesen Sie dann das Ergebnis, statt es anzunehmen. Der Befehl ändert den Resolver-Zustand für jede Anwendung auf dem Host, führen Sie ihn also in einem Fenster aus, das Sie kontrollieren. Setzen Sie den Schlüssel in Anführungszeichen, denn er enthält Zeichen, die die Shell sonst expandieren würde. Der Platzhalter im Block steht für den Schlüssel, den Sie aus der Liste kopiert haben, nicht für eine wörtliche Zeichenkette.

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

Das Löschen führt die Aktualisierungsskripte aus, wenn Aktualisierung aktiviert ist; bei deaktivierten Aktualisierungen schiebt es die Aktualisierung auf, sodass ein entfernter Eintrag und eine neu geschriebene Datei getrennte Ereignisse sind. Lesen Sie die Liste erneut und bestätigen Sie, dass der Schlüssel weg ist, bevor Sie die Datei ansehen. Fragen Sie dann einen Namen ab, der sich noch über die verbleibenden Lieferanten auflösen sollte, und einen öffentlichen Namen, und vergleichen Sie beide mit dem, was Sie vor der Änderung gesehen haben. Wenn ein privater Name ganz aufhört, sich aufzulösen, trug dieser Eintrag ihn noch.

resolvconf -u führt nur diese Aktualisierungsskripte aus. Er erkennt oder löscht nie einen veralteten Eintrag, und ein Neuaufbau aus veralteten Eingaben erzeugt dieselbe unerwünschte Datei.

Ein abgebrochener Trennungs-Hook lässt den Eintrag zurück

Eine einmalige Bereinigung stellt den heutigen Zustand wieder her, und das nächste unterbrochene Herunterfahren setzt den Eintrag zurück. Gehen Sie den Abbauweg durch: den Trennungs-Hook des Clients, den Helfer, den dieser Hook aufruft, und was passiert, wenn einer von beiden abgebrochen wird. Ein unterbrochenes Herunterfahren ist der übliche Ursprung, weil der Hook gar nicht lief. Protokollieren Sie den Exit-Status des Hooks einmal, und Sie wissen, ob er still scheitert.

Halten Sie Einrichtung und Bereinigung unter einem Besitzer. Ein zweites Skript, das Schnittstellennamen errät, wird irgendwann den Eintrag einer anderen Verbindung löschen, was schlimmer ist als der veraltete Eintrag, mit dem Sie begonnen haben. Der Besitzer sollte auch entscheiden, wann ein Eintrag veraltet ist, denn er weiß, welche Verbindung ihn installiert hat.

Dann testen Sie den Lebenszyklus: verbinden, trennen, die Einträge erneut auflisten. Dass der Eintrag von selbst verschwindet, ist der einzige Beweis, dass die Reparatur hält.

Ähnliche Artikel