Como comprobar se un túnel VPN de Linux está realmente activo
Os indicadores da interface, as consultas de ruta, a táboa 220 e as marcas de tempo do saúdo responden a preguntas distintas. Condicione cada paso do script á sonda que demostra a súa premisa.
Cron reinicia cada dez minutos un VPN perfectamente san, e o mesmo traballo deixa un morto funcionando durante unha semana. Ambos os fallos veñen de tratar «activo» como un único feito cando é polo menos catro. Un dispositivo pode estar habilitado administrativamente, encamiñado correctamente, totalmente cifrado e, aínda así, non transportar nada útil. Separe primeiro as observacións e a comprobación case se escribe soa.
Os indicadores da ligazón describen o dispositivo, non a ruta
A comprobación que todos copian busca un enderezo de hardware de puros ceros. Ese truco separa unha interface real dun marcador de posición nalgúns controladores e non demostra nada nos demais, porque un dispositivo tun non ten ningunha MAC que informar. ip -brief link show tun0 ofrece en cambio indicadores: UP significa que un administrador habilitou o dispositivo, e LOWER_UP significa que o controlador considera utilizábel a ligazón. Lidos xuntos, din que o dispositivo existe e non está administrativamente desactivado. Ningún dos dous di que un paquete teña onde ir.
OpenVPN crea o seu dispositivo tun antes de que se instalen as rutas, así que os indicadores poden verse perfectos mentres nada está encamiñado. Trátelos como unha precondición, nunca como a resposta.
Pregunte onde iría un paquete
A consulta de ruta responde á pregunta que os indicadores non poden. ip route get 10.8.0.1 from 10.8.0.2 nomea a interface, o enderezo de orixe e a táboa que usaría o núcleo, que é exactamente aquilo contra o que hai que comprobar un túnel dividido. Sen o enderezo de orixe está preguntando outra cousa, e con encamiñamento por políticas a resposta pode variar segundo a orixe. É a proba honesta máis barata, porque consulta as mesmas regras que usará o seu tráfico.
Para WireGuard, engada o saúdo. wg show imprime unha marca de tempo do último saúdo por par, e unha marca que deixou de avanzar significa que o par desapareceu, digan o que digan os indicadores da interface. Unha interface configurada sen saúdo recente é un dos falsos positivos máis habituais na monitorización caseira.
A táboa 220 conta a historia de IPsec
strongSwan instala rutas para os selectores negociados na táboa 220 cando a instalación de rutas está habilitada. ip route list table 220 polo tanto separa o negociado do encamiñado: unha táboa baleira xunto a unha conexión cargada significa que as SA de IKE e CHILD subiron mentres ningún tráfico se dirixe cara a elas. Comprobe ip xfrm state ao lado, xa que enumera as asociacións de seguridade instaladas e os seus extremos.
Unha política de trampa é o caso ao que hai que estar atento. Espera tráfico interesante en lugar de encamiñalo, así que a táboa segue baleira ata que algo dispara o túnel.
O estado do xestor e o estado do daemon son listas distintas
NetworkManager enumera só as conexións que posúe. nmcli -t -f NAME,TYPE connection show --active non devolve nada para un túnel iniciado directamente por wg-quick ou por un daemon OpenVPN.
Esa distinción importa cando un script ten que decidir a cal dos dous xestores preguntar. Escolla o que realmente posúe o túnel neste host e ignore o silencio do outro. Se existen ambos, decida cal é o autoritativo e desactive o segundo, porque dous xestores que reescriben rutas nunha soa interface producen fallos que ninguén pode reproducir. Unha entrada ausente é información sobre o xestor, non sobre o túnel.
Condicione o paso seguinte á sonda que necesita
Sondear un porto UDP non demostra nada sobre a dispoñibilidade, porque UDP non ten saúdo e nc -u ten éxito en canto o paquete sae. Sondee o que o paso seguinte consume de verdade: unha conexión TCP ao porto redirixido, unha petición a un host dentro do túnel, un nome que só se resolve alí. Acoite a espera cun tempo de espera e un número de intentos, e falle ruidosamente cando se esgote.
Os ganchos superan o sondado cando o cliente os ofrece. --up e --down os scripts de OpenVPN execútanse despois de que a interface cambie de estado, o que elimina a carreira por completo, pero execútanse cos privilexios que conservou o daemon. Se OpenVPN baixou a unha conta sen privilexios mediante user e group, o gancho execútase como esa conta. Reiniciar un servizo do sistema entón require sudo para permitir exactamente ese comando. Confíe o reintento ao xestor de servizos en lugar dun bucle de cron: unha política de reinicio acoutada cun límite de arrinques saca á luz un túnel roto, mentres que un bucle sen límite o oculta indefinidamente.