OpenVPN: l'enllaç local falla a l'arrencada: esperar o reintentar
Quan l'adreça local encara no està activa, OpenVPN no pot enllaçar. Compareu una espera limitada amb una política de reinici i vegeu per què network-online.target no és cap garantia.
Per a un servidor OpenVPN que no arrenca, s'ofereixen dues solucions: esperar l'adreça o deixar que el servei reintenti fins que l'enllaç funcioni. Totes dues tracten el mateix símptoma amb un comportament de fallada diferent. L'espera codifica un prerequisit concret i falla sorollosament quan hi falta; el reintent amaga el prerequisit i continua provant. Quina de les dues pertany a la vostra unitat depèn de si aquesta adreça és una dependència dissenyada o una casualitat de temporització.
Totes dues són millors que un son fix, que no espera res ni informa de què esperava.
Què requereix realment l'opció local
local anomena l'adreça a la qual el dimoni enllaça el seu sòcol, i enllaçar a una adreça que encara no existeix falla de seguida amb un error sobre l'adreça sol·licitada. Quan l'opció és absent, el dimoni escolta a totes les adreces, per això el mateix perfil funciona en una màquina la interfície de la qual encara no ha pujat: escolta a tot arreu en lloc de l'única adreça que heu anomenat. Aquesta diferència és tota la fallada, i es manté invisible fins a un reinici.
El requisit no és que la interfície estigui activa en un sentit general. L'adreça ha d'estar assignada a la interfície correcta en el moment de l'enllaç, i ha de ser la interfície de base i no un túnel que el mateix dimoni crearia més tard. Una comprovació feta minuts després d'iniciar sessió no demostra res sobre la seqüència d'arrencada.
Esperar l'adreça o reintentar l'enllaç
Esperar vol dir un ExecStartPre que consulta fins que l'adreça apareix, amb un nombre limitat d'intents i una sortida diferent de zero quan s'esgota el temps. Reintentar vol dir deixar que el procés principal falli i demanar al gestor de serveis que el torni a iniciar, per exemple Restart=on-failure amb RestartSec=5. El primer informa d'un prerequisit absent com a unitat fallida, mentre que el segon ho informa com una sèrie de reinicis que finalment s'atura, cosa més sorollosa al registre però que sobreviu a una adreça que arriba tard per motius que no podeu predir.
Preferiu esperar quan l'adreça és una dependència dissenyada, i preferiu reintentar quan l'adreça normalment apareix però la seva temporització varia. Combinar-les és raonable: una espera limitada cobreix el cas habitual i una política de reinici cobreix l'excepció. El que cap de les dues no hauria de fer és executar-se per sempre, perquè una unitat que reintenta indefinidament amaga una configuració incorrecta en lloc d'informar-ne.
Per què network-online.target no és suficient
network-online.target promet allò que la implementació de xarxa activa entén per en línia, i res més enllà. Amb systemd-networkd, systemd-networkd-wait-online decideix quan s'assoleix aquest objectiu, i la seva noció per defecte d'en línia es pot satisfer abans que existeixi la vostra adreça concreta. Sota NetworkManager, el servei wait-online aplica les seves pròpies regles. Ordenar després de l'objectiu és una base sòlida, no una garantia que una adreça, una resposta DNS o un parell remot estigui a punt.
El mateix raonament descarta les alternatives habituals. Una entrada d'inici automàtic d'escriptori espera una sessió d'usuari que potser no s'obrirà mai en un servidor, i una ordre cron retardada afegeix temps transcorregut sense nomenar el recurs que esperava veure aparèixer. Totes dues poden semblar reeixides durant mesos i després fallar a l'única arrencada que importa.
Comproveu l'enllaç després d'una arrencada en fred
Verifiqueu-ho amb una arrencada en fred real i no amb un reinici del servei, perquè un reinici hereta una adreça que la seqüència d'arrencada havia de crear. Després de l'arrencada, ss -lntp o ss -lunp mostra l'adreça local a la qual cada oient s'ha enllaçat realment, i journalctl -b -u openvpn-server@server mostra si el primer intent va fallar. Compareu l'adreça enllaçada amb la del perfil i després repetiu la comparació després d'una reconnexió de xarxa.
Si el perfil mai no va necessitar una adreça fixa, eliminar local és una simplificació legítima, però feu-ne una decisió de seguretat i no un hàbit de resolució de problemes.
Ampliar l'oient canvia qui hi pot arribar, així que combineu aquest canvi amb la política de tallafocs que l'hauria d'haver restringit. Un servei que arrenca de manera fiable a totes les interfícies no ha resolt el problema original; ha traslladat el problema a la vora de la xarxa.