Les fallades d’OpenVPN 3 Linux arriben com un error de mètode D-Bus amb un nom desconegut adjunt, i la temptació és retrocedir un paquet i esperar. El client no és un sol programa: un frontal de línia d’ordres parla pel bus amb serveis que posseeixen els perfils, les sessions, el motor VPN i els canvis de xarxa privilegiats. Decidir quin d’aquests cinc posseeix la crida que falla és la major part del diagnòstic, i costa una ordre en lloc d’una reversió. El que segueix és aquesta decisió, en l’ordre en què les fallades solen aparèixer.

Cinc propietaris darrere d’una ordre

Cinc processos importen, i cadascun té el seu propi nom de bus: el frontal que accepta la vostra ordre, el gestor de configuració que desa els perfils i la seva política d’accés, el gestor de sessions que posseeix la vida de les sessions, el backend que executa la connexió mitjançant OpenVPN 3 Core Engine, i el servei de configuració de xarxa que instal·la la interfície, les rutes i els paràmetres de DNS. Un error que anomena un objecte de configuració no és, per tant, un error del backend, i un backend que no arrenca no és una fallada d’autenticació. Classificar el missatge en una d’aquestes files ha de passar abans de canviar res, perquè cada pas posterior depèn de quina fila és certa. Endevinar la fila és com una correcció curta es converteix en una tarda de feina amb paquets.

Pregunteu al bus del sistema quins serveis hi ha abans de preguntar qualsevol altra cosa, i confirmeu després que les peces instal·lades coincideixen en una versió. OpenVPN 3 Linux registra aquests serveis com a unitats del sistema, així que el bus a consultar és el del sistema, la consulta de versió necessita autoritat administrativa, i un llistat fet amb --user llegeix la vostra sessió d’inici, on les unitats no apareixen mai. Els serveis s’activen a demanda i alguns s’aturen quan estan inactius, així que un servei que falta abans de la vostra primera petició simplement no ha rebut cap sol·licitud encara. Les tres ordres de sota responen sobre presència, versió i estat de les unitats sense obrir cap sessió VPN.

sudo busctl list | grep -i openvpn
sudo openvpn3-admin version --services
systemctl list-units 'openvpn3*'

Què demostra realment cada llista

Les vistes del mateix client són l’evidència més barata disponible, i cadascuna demostra menys del que sembla. Un perfil a la llista de configuració mostra que un perfil és importat i res sobre si algú hi pot connectar. Una sessió a la llista de sessions mostra que existeix un objecte de sessió i res sobre si l’autenticació remota ha acabat.

openvpn3 configs-list
openvpn3 sessions-list

Els camins d’objecte d’aquestes sortides identifiquen objectes gestionats al bus i no fitxers, així que no es poden editar, i un camí anotat abans queda obsolet en el moment que aquella sessió es desconnecta. Reutilitzar-ne un de les vostres notes produeix errors "no such object" que no tenen res a veure amb la VPN. La taula d’etapes de sota separa què estableix cada pas d’una connexió del que deixa obert, i aquesta és justament la distinció de què depèn una decisió de reversió. Llegiu la fila que coincideix amb la vostra evidència i torneu a llegir el text de l’error.

StageWhat existsWhat proves itWhat it does not prove
Profile importedA configuration object held by the configuration managerThe profile is listed by the clientThat the profile owner permits a connection
Session requestedA session object held by the session managerThe session appears in the session listThat the remote side accepted the credentials
Connect dispatchedAn asynchronous attempt on the VPN backendStatus changes arrive for that sessionThat an interface was configured
Tunnel configuredAn interface, routes and DNS settingsThe network service reports success and routes appearThat traffic reaches the peer

La crida de connexió torna abans que existeixi el túnel

La crida de connexió us lliura una sessió per observar i torna, i per això una crida aparentment correcta seguida de silenci és un estat intermedi normal i no una contradicció. El frontal encara ha de seguir els canvis d’estat i respondre a qualsevol petició d’interacció. Un perfil que necessita una credencial i no rep cap resposta espera en un estat que s’assembla exactament a un backend penjat. Aquest estat d’espera mereix reconeixement, perquè envia la gent al component equivocat.

Mentre hi ha un intent en curs, vigileu la llista de sessions i el registre propi del frontal per a aquest perfil. Una sessió que no surt mai del seu estat inicial anomena el component que s’ha aturat, i el registre normalment l’anomena a les primeres línies. Tingueu el nom del perfil a mà, ja que l’ordre de registre pren un perfil i no un camí de sessió, cosa que és una raó més per rellegir la llista en lloc de reutilitzar un camí.

openvpn3 sessions-list
openvpn3 log --config <profile> --level 6

Llegir el registre d’un sol component sense obrir una sessió

Quan el frontal no informa res d’útil, aneu a el component que va registrar la fallada en lloc d’iniciar una altra connexió. Amb un registrador systemd-journald configurat, la vista de journal delimitada de l’administrador llegeix els esdeveniments d’un component sense tocar la política del bus ni obrir una sessió, cosa que importa perquè un diagnòstic que canvia el sistema que mesura demostra molt poc. Filtreu per unitat en lloc d’etiqueta de syslog: les unitats de servei individuals no garanteixen cap identificador compartit, així que una consulta per etiqueta pot tornar una pàgina buida mentre la unitat mateixa va registrar la fallada.

Anoteu quatre camps abans de demanar ajuda a algú: el nom complet de l’error, el servei i l’objecte implicats, la marca de temps i les versions dels paquets instal·lats. Això és el que necessita qui manté el codi, i res d’això no exigeix enganxar un perfil o una credencial en un tiquet. Ampliar la política d’accés al bus per silenciar l’error no és un diagnòstic, esborra la frontera que us anomenava el component. El contingut privat dels perfils queda fora dels informes compartits per la mateixa raó que les credencials.

journalctl -u 'openvpn3-service-*' -n 50 --no-pager
openvpn3-admin journal --service <name>

Corregir la frontera que va rebutjar

Cada fila del mapa té la seva pròpia correcció, i les files no se substitueixen entre si. Una operació denegada sobre un perfil és una qüestió de política i propietat, mentre que un backend que no s’activa és una qüestió de serveis i empaquetatge. Un servidor que rebutja l’autenticació no és cap de les dues, així que canvis repetits de contrasenya no poden reparar un problema d’activació local. Triar la correcció equivocada és com un problema de política es converteix en una reinstal·lació.

Després d’un canvi de paquets, verifiqueu una instal·lació coherent i suportada en lloc de copiar un binari antic al seu lloc. Una reversió controlada és una resposta legítima a una regressió confirmada, sempre que els paquets segueixin sent compatibles i existeixi una via de tornada al manteniment suportat. Establiu aquesta via abans que el servei deixi d’arrencar, no després.

Una altra plataforma pot compartir la mateixa biblioteca VPN central sense compartir els serveis de bus de Linux, així que una fallada d’aspecte similar a Windows no diu res sobre aquesta. La visió general de D-Bus documenta els camins d’objecte exposats per a configuracions i sessions, i és la part de l’arquitectura de la qual depèn aquest diagnòstic. Llegiu-la una vegada, i el proper error arribarà amb un component ja adossat.

Articles relacionats