Un nome interno aínda se resolve cara ao servidor VPN un día despois de que o túnel se pechou, e o ficheiro do resolutor segue volvendo con esa entrada. Onde o resolvconf de Debian posúe o estado, ese ficheiro ensámblase a partir de rexistros de provedores, e un deles é o resto. Eliminar o rexistro leva un minuto; demostrar que é seguro eliminalo é o traballo de verdade. Estas portas avanzan en orde, e unha porta fallida termina o procedemento en vez de enviarlle ao seguinte paso.

Confirme que resolvconf posúe o estado

Identifique primeiro o dono, porque o mesmo síntoma baixo systemd-resolved necesita outras ordes e outra reparación. O paquete resolvconf mantén unha base de datos baixo /run/resolvconf e apunta /etc/resolv.conf ao ficheiro que constrúe a partir desa base. Dúas lecturas resolven a cuestión: o destino da ligazón simbólica e se o paquete está instalado e activo. Un destino baixo /run/systemd/resolve significa o outro deseño, onde nada do que segue se aplica.

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

Se a ligazón apunta a outro sitio ou falta o paquete, detéñase aquí. Un envoltorio de compatibilidade que tomou prestado o nome, distribuído por outro xestor de resolutores, non é dono desta base de datos.

A base de datos garda entradas, non a resposta

A base de datos garda entradas e o ficheiro é unha saída, así que listar as entradas é a única forma de ver que programa instalou a entrada que quere quitar. Os rexistros son curtos, e as súas claves son os asideros que necesitará máis adiante. Léaos antes de decidir cal está obsoleto, porque un nome que parece unha interface VPN pode pertencer a outro cliente. Manteña os enderezos privados e os dominios de busca internos fóra dos diagnóstico compartidos; normalmente a clave soa identifica o rexistro.

sudo resolvconf --list
sudo resolvconf -i

A primeira orde imprime os rexistros subministrados sen procesalos, e a segunda lista as interfaces que actualmente fornecen configuración DNS. As claves constrúense convencionalmente a partir dun nome de interface máis o programa provedor. O manual de resolvconf describe a base de datos á que dirixen esas claves.

Copie a clave da saída en vez de reconstruíla. Unha entrada non se chama tun0 só porque un script antigo usase ese nome.

Demostre que o rexistro non ten dono

Un rexistro é seguro de eliminar cando ningunha conexión viva o instalou. Correlacione a clave coa conexión que o creou e logo confirme que esa conexión desapareceu. Esa correlación é toda a porta, e é o paso que máis a miúdo se omite de camiño á orde de eliminación. Se a evidencia é ambigua, trate o rexistro como vivo e detéñase.

Os nomes de proceso son evidencia débil. OpenConnect chama vpnc-script, así que comprobar se hai un proceso vpnc non di nada sobre que rexistro é o actual. Unha conexión nova tamén pode reutilizar un nome de interface que deixou unha antiga, o que fai que a clave pareza máis vella do que é. Compare o enderezo do servidor dentro do rexistro cos enderezos de túneles que seguen activos, e detéñase se coinciden.

Unha desconexión normal a través do xestor propietario é o primeiro remedio. Retira o que esa conexión instalou e deixa intactos os demais provedores.

Comprobe a eliminación e a reescritura

Co rexistro confirmado como obsoleto, elimíneo pola clave exacta e logo lea o resultado en vez de supoñelo. A orde cambia o estado do resolutor para cada aplicación do anfitrión, así que execútea nunha xanela que controle. Pon a clave entre comiñas, porque contén caracteres que a shell expandiría doutro xeito. O marcador de posición do bloque representa a clave que copiou da lista, non unha cadea literal.

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

A eliminación executa os scripts de actualización cando a actualización está habilitada; coas actualizacións deshabilitadas apraza a actualización, así que un rexistro eliminado e un ficheiro reescrito son acontecementos separados. Volva ler a lista e confirme que a clave desapareceu antes de mirar o ficheiro. Logo consulte un nome que aínda debería resolverse a través dos provedores restantes e un nome público, e compare ambos co que viu antes do cambio. Se un nome privado deixa de resolverse por completo, ese rexistro aínda o levaba.

resolvconf -u só executa eses scripts de actualización. Nunca identifica nin elimina un rexistro obsoleto, e reconstruír a partir de entradas obsoletas reproduce o mesmo ficheiro non desexado.

Un gancho de desconexión asasinado deixa o rexistro atrás

Unha limpeza puntual restaura o estado de hoxe, e o seguinte apagado interrompido volve pór o rexistro. Percorra a ruta de desmontaxe: o gancho de desconexión do cliente, o axudante que ese gancho chama e que pasa cando se mata calquera dos dous. Un apagado interrompido é a orixe habitual, porque o gancho non chegou a executarse. Rexistre o estado de saída do gancho unha vez e saberá se falla en silencio.

Manteña a configuración e a limpeza baixo un só dono. Un segundo script que adiviña nomes de interface acabará eliminando o rexistro doutra conexión, o que é peor que a entrada obsoleta coa que comezou. O dono tamén debería decidir cando un rexistro está obsoleto, porque sabe que conexión o instalou.

Logo exercite o ciclo de vida: conecte, desconecte, liste os rexistros outra vez. Que a entrada desapareza por si soa é a única proba de que a reparación aguanta.

Artigos relacionados