La unitat -.mount està emmascarada: el client OpenVPN no arrencarà
Un fitxer -.mount perdut a /run/systemd/system emmascara la unitat de muntatge arrel, de manera que tota unitat que necessita el sistema de fitxers falla abans que OpenVPN arrenqui.
El vostre servei falla abans que OpenVPN s’executi, i l’error parla d’una unitat de muntatge que no heu configurat mai. Aquest és el senyal: systemd rebutja tota la transacció perquè la unitat de muntatge arrel està emmascarada, i encara no s’ha llegit el vostre perfil VPN. La causa habitual és un fitxer sobrant al directori d’unitats d’execució, no una fstab trencada ni un certificat que falti. Seguiu primer el fitxer, perquè és l’explicació més barata de descartar.
L’error anomena el muntatge arrel, no el vostre perfil
systemd genera la unitat de muntatge arrel a partir de la informació de muntatge del nucli, i anomena la unitat -.mount perquè un guió representa la ruta arrel. Aquesta unitat normalment només existeix en memòria i no té cap fitxer al darrere. Quan l’error diu que està emmascarada, algú ha posat un fitxer d’unitat on systemd el carregarà i ha apuntat aquest fitxer a /dev/null. L’emmascarament és un estat real, no una errata del missatge.
La unitat d’instància falla perquè el seu graf de treballs arriba al muntatge arrel mitjançant l’ordenació i mitjançant els seus propis requisits de muntatge. La transacció es rebutja abans que s’executi el binari d’OpenVPN, de manera que res de la configuració del client no pot ser la causa. Per això canviar perfils, certificats o credencials no té cap efecte en aquesta fallada concreta.
Reviseu el directori d’execució abans de depurar OpenVPN
Busqueu un fitxer amb aquest nom exacte al directori d’unitats d’execució i després pregunteu a systemd què creu que és la unitat. Totes dues respostes són ràpides i, juntes, separen un fitxer sobrant d’un problema de muntatge real.
ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount
Una màquina normal no té aquest fitxer, i la llista d’emmascarats no conté el muntatge arrel. Si la primera ordre imprimeix un enllaç simbòlic a /dev/null, el diagnòstic és concloent. El mateix directori pot contenir una màscara tmp.mount creada per les mateixes eines, i això produeix la mateixa classe de fallada amb un altre nom. Mireu tot el directori i no només el nom de l’error.
ls -la /run/systemd/system/*.mount
Si el directori és net i la unitat continua emmascarada, la màscara és en un altre lloc del camí de cerca, i systemctl cat -.mount mostrarà quin fitxer es carrega.
Elimineu el fitxer, recarregueu i torneu a arrencar
N’hi ha prou amb eliminar el fitxer d’execució i recarregar el gestor, i no toca res que vingui d’un paquet. Recarregueu abans d’arrencar, perquè systemd conserva l’estat de la unitat carregada fins que torna a llegir el directori.
sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]
Després llegiu el registre del propi servei en lloc de suposar que la correcció ha funcionat. Una arrencada neta només demostra que systemd ha acceptat la unitat; el client encara pot morir per un perfil que falta, un igual inabastable o un certificat que no valida. Són problemes normals d’OpenVPN que quedaven amagats darrere de la unitat emmascarada. El registre anota quin perfil s’ha carregat i si el túnel s’ha establert realment. Si la unitat arrenca i el túnel no, heu passat a un altre problema, cosa que és un progrés.
journalctl -u [email protected] -b --no-pager
Com que /run és un sistema de fitxers temporal, un reinici també esborra el fitxer. Això fa del reinici una prova útil: si el servei funciona després d’un reinici i torna a fallar després del desplegament següent, el fitxer s’està incorporant a la imatge.
Eviteu que torni des de la imatge
Una plantilla de contenidor o de màquina virtual que emmascara unitats de muntatge durant la seva construcció portarà aquesta màscara a cada clon. El següent que necessiti el sistema de fitxers es trenca, i el missatge culpa el muntatge en lloc de la imatge d’on ve. Arreglar-ho dins d’una instància en execució amaga el problema fins que es crea la instància següent.
Cerqueu al context de construcció el nom del fitxer i l’ordre que el crea, i després traieu la màscara de la plantilla i torneu a construir. Si la màscara és realment necessària durant la construcció, traieu-la a la mateixa capa que acaba la construcció, perquè la imatge enviada arrenqui neta. Verifiqueu-ho en un clon nou i no en la màquina que heu reparat a mà. Aquesta és l’única prova que demostra que la imatge ha canviat.
El símptoma que cal recordar és el desajust entre l’error i allò que estàveu configurant. Quan systemd es queixa d’un muntatge mentre arrenqueu un client VPN, llegiu el nom de la unitat del missatge abans de llegir el nom del servei.