El cron reinicia cada deu minuts un VPN perfectament sa, i la mateixa feina deixa un de mort funcionant durant una setmana. Les dues fallades venen de tractar «actiu» com un sol fet quan és com a mínim quatre. Un dispositiu pot estar habilitat administrativament, encaminat correctament, totalment xifrat i, tot i així, no transportar res d'útil. Separeu primer les observacions, i la comprovació gairebé s'escriu sola.

Els flags de l'enllaç descriuen el dispositiu, no el camí

La comprovació que tothom copia busca una adreça de maquinari tota de zeros. Aquest truc separa una interfície real d'un marcador de posició en alguns controladors i no demostra res en la resta, perquè un dispositiu tun no té cap MAC per informar. ip -brief link show tun0 dona flags en canvi: UP vol dir que un administrador ha habilitat el dispositiu, i LOWER_UP vol dir que el controlador considera l'enllaç utilitzable. Llegits junts, diuen que el dispositiu existeix i que no està administrativament desactivat. Cap dels dos no diu que un paquet tingui on anar.

OpenVPN crea el seu dispositiu tun abans que s'instal·lin les rutes, així que els flags poden semblar perfectes mentre no hi ha res encaminat. Tracteu-los com a precondició, mai com a resposta.

Pregunteu on aniria un paquet

La consulta de ruta respon la pregunta que els flags no poden. ip route get 10.8.0.1 from 10.8.0.2 anomena la interfície, l'adreça d'origen i la taula que el nucli faria servir, que és exactament allò amb què cal contrastar un túnel dividit. Sense l'adreça d'origen esteu preguntant una altra cosa, i amb encaminament per polítiques la resposta pot diferir segons l'origen. Aquesta és la prova honesta més barata, perquè consulta les mateixes regles que farà servir el vostre trànsit.

Per a WireGuard, afegiu l'encaixada. wg show imprimeix una marca de temps de l'última encaixada per parell, i una marca que ha deixat d'avançar significa que el parell ha desaparegut, diguin el que diguin els flags de la interfície. Una interfície configurada sense encaixada recent és un dels falsos positius més habituals en monitoratge fet a casa.

La taula 220 explica la història de l'IPsec

strongSwan instal·la rutes per als selectors negociats a la taula 220 quan la instal·lació de rutes està habilitada. ip route list table 220 per tant separa el negociat de l'encaminat: una taula buida al costat d'una connexió carregada vol dir que les SA d'IKE i CHILD s'han aixecat mentre cap trànsit no s'hi dirigeix. Comproveu ip xfrm state al costat, ja que llista les associacions de seguretat instal·lades i els seus extrems.

Una política de trampa és el cas que cal vigilar. Espera trànsit interessant en lloc d'encaminar-lo, així que la taula continua buida fins que alguna cosa activa el túnel.

L'estat del gestor i l'estat del dimoni són llistes diferents

NetworkManager només llista les connexions que posseeix. nmcli -t -f NAME,TYPE connection show --active no retorna res per a un túnel iniciat directament per wg-quick o per un dimoni OpenVPN.

Aquesta distinció importa quan un script ha de decidir a quin dels dos gestors preguntar. Trieu el que realment posseeix el túnel en aquest amfitrió i ignoreu el silenci de l'altre. Si existeixen tots dos, decidiu quin és l'autoritatiu i desactiveu el segon, perquè dos gestors que reescriuen rutes en una sola interfície produeixen fallades que ningú pot reproduir. Una entrada absent és informació sobre el gestor, no sobre el túnel.

Condicioneu el pas següent a la sonda que necessita

Sondejar un port UDP no demostra res sobre la disponibilitat, perquè UDP no té encaixada i nc -u té èxit tan aviat com el paquet surt. Sondegeu què consumeix realment el pas següent: una connexió TCP al port redirigit, una petició a un amfitrió dins del túnel, un nom que només es resol allà. Limiteu l'espera amb un temps d'espera i un nombre d'intents, i fallau sorollosament quan s'esgoti.

Els ganxos superen el sondeig quan el client els ofereix. --up i --down els scripts d'OpenVPN s'executen després que la interfície canviï d'estat, cosa que elimina la cursa del tot, però s'executen amb els privilegis que el dimoni ha conservat. Si OpenVPN ha baixat a un compte sense privilegis mitjançant user i group, el ganxo s'executa com aquest compte. Reiniciar un servei del sistema aleshores requereix sudo per permetre exactament aquesta ordre. Confieu el reintent al gestor de serveis en lloc d'un bucle de cron: una política de reinici limitada amb un límit d'inicis fa aflorar un túnel trencat, mentre que un bucle il·limitat l'amaga indefinidament.

Articles relacionats