status=200/CHDIR: systemd no va arribar a iniciar OpenVPN
Una fallada CHDIR és systemd que no pot entrar en un directori, no OpenVPN que no pot llegir un perfil. Llegeix la unit abans de tocar la configuració de la VPN.
El servei falla, els registres esmenten un spawn i un directori, i el primer instint és revisar la configuració de la VPN. Encara no s'ha llegit res d'aquest fitxer. systemd va fallar mentre preparava el procés, abans que s'executés l'executable, així que no s'ha consultat cap analitzador, cap certificat ni cap amfitrió remot. Llegir el codi d'estat com una afirmació sobre systemd i no sobre OpenVPN és el que converteix això en una investigació curta.
Llegeix el codi d'estat abans de l'aplicació
El codi numèric després del nom del servei indica l'etapa que va fallar. Una fallada de directori es reporta com a estat CHDIR, mentre que un executable que no s'ha pogut executar és un codi completament diferent. Els dos semblen iguals en una línia de resum i no tenen res en comú en les seves causes.
Aquesta distinció importa perquè les correccions són en fitxers diferents. Una fallada CHDIR tracta d'una ruta i de com la veu el servei. Una fallada d'exec tracta del binari, del seu intèrpret o d'un muntatge no relacionat. Canviar el remot de la VPN, la llista de xifratges o la ruta del certificat no pot resoldre cap de les dues.
Confirma que la fallada és a l'inici i no després d'una execució correcta. Si el servei funcionava ahir i ara falla a la mateixa etapa, alguna cosa ha canviat pel que fa al directori, els seus permisos o la unitat mateixa, i aquest canvi és l'evidència que cal buscar.
Pregunta a la unit on vol ser
Llegeix la unit efectiva i no el fitxer que creus que està instal·lat, perquè els drop-ins poden substituir el directori de treball sense que mai editessis la unit principal. La sortida de show respon directament la pregunta:
systemctl cat [email protected]
systemctl show [email protected] -p WorkingDirectory -p RootDirectory -p User -p ProtectHome
journalctl -u [email protected] -b --no-pager | tail -30
Per a la plantilla del servidor upstream, el directori de treball és el directori de configuració del servidor i el nom de la instància selecciona el perfil que hi ha dins. Una instància anomenada branch, per tant, espera el seu propi fitxer en aquest mateix directori, i un perfil col·locat en un altre lloc no compleix gens el requisit del directori de treball.
Compara què demana la unit amb què existeix. Una ruta que abans existia, un enllaç simbòlic que ara apunta a un altre lloc o un nom d'instància que ja no coincideix amb cap directori són canvis corrents que produeixen exactament aquesta fallada.
Comprova la ruta tal com la veu el servei
La teva shell i el servei no comparteixen la mateixa vista del sistema de fitxers. Un directori arrel o una imatge arrel configurats canvien què significa una ruta absoluta dins de la unit, i una ruta que és òbviament present a l'amfitrió pot faltar en aquest espai de noms. Llegeix la configuració de la unit abans de confiar en una prova manual.
Els permisos agreugen el problema. El servei s'executa com a un usuari concret, i aquest usuari ha de poder travessar cada directori pare per arribar a l'objectiu, no només llegir l'objectiu mateix. Un directori llegible per root i no travessable per l'usuari del servei produeix una fallada que sembla una ruta que falta.
namei -l /etc/openvpn/server
systemctl show [email protected] -p ProtectSystem -p ReadOnlyPaths
La configuració d'enduriment també forma part d'aquest quadre. Una unit que amaga els directoris personals o fa de només lectura una part del sistema de fitxers fa exactament el que se li va configurar, i el directori de treball ha de viure en un lloc que el sandbox encara exposi.
Arregla el propietari i després espera un altre error
Corregeix la disposició o la unit a través de qui posseeix aquesta configuració. Moure un perfil al directori esperat és una correcció legítima quan la disposició és incorrecta, però no explica un directori en què no es pot entrar, així que no ho tractis com la resposta general.
Resisteix l'escletxa d'ampliar permisos a l'arbre de configuració o d'eliminar el sandbox. Tots dos fan desaparèixer el símptoma mentre eliminen les proteccions que s'hi van posar deliberadament, i la propera fallada serà més difícil d'interpretar.
Reinicia la instància i llegeix el següent esdeveniment en lloc de suposar èxit. La propera fallada probable és que OpenVPN no pugui obrir el seu fitxer de configuració, cosa que és un progrés: s'ha entrat al directori de treball i l'analitzador ja s'executa. Segueix el mapatge real de fitxers de la unit a partir d'aquí en lloc de tornar a la resolució de problemes de xarxa.
La referència d'execució de systemd defineix com s'interpreta el directori de treball juntament amb els directoris arrel i l'aïllament. El patró a recordar és simple: cada codi d'estat indica una etapa diferent, i només els errors propis de l'aplicació descriuen l'aplicació.