Una Raspberry Pi que solo necesita proteger su propio tráfico saliente tiene dos diseños realistas: dejar que el gestor de red sea dueño del túnel, o mantener un script que lo sea. Ambos pueden transportar tráfico. Fallan en lugares distintos, y el fallo que usted puede diagnosticar en remoto a las dos de la madrugada es el que merece la pena elegir. Compárelos en propiedad, en qué significa túnel completo cuando entran IPv6 y DNS, y en qué ocurre en el momento en que cae el túnel.

Dos dueños para un túnel

El diseño A es un perfil dentro del gestor de red del sistema: un perfil OpenVPN importado o una conexión WireGuard nativa, activada al arranque por el mismo servicio que levanta Ethernet y Wi-Fi. El diseño B es una unidad propia que ejecuta el cliente directamente, edita la configuración del resolutor e instala sus propias rutas y reglas de cortafuegos. Ambos son diseños legítimos; difieren en quién tiene permiso para cambiar la tabla de enrutamiento.

Los fallos difieren porque los dueños difieren. Con A, un perfil que no se activa deja la interfaz arriba y el túnel abajo, y los registros del gestor dicen por qué. Con B, un script que tiene éxito a medias deja rutas que sobreviven al proceso que las creó. Ejecutar ambos es el peor resultado: dos procesos escribiendo la ruta por defecto, dos ediciones del resolutor compitiendo en el arranque y dos conjuntos de secretos que rotar.

Elija un dueño por túnel y desactive el otro antes de probar nada. Dos dueños también significan dos lugares donde mirar cuando el túnel está levantado y nada se resuelve. Esa única regla evita la mayoría de los estados confusos descritos en los hilos de Pi VPN.

Qué crea una importación y qué no

En Raspberry Pi OS Bookworm y posteriores, la herramienta de configuración de red por defecto es NetworkManager, así que un perfil es el hogar natural para un túnel de cliente. La importación necesita el complemento correspondiente instalado; sin él, la importación falla con un mensaje sobre un tipo de conexión no admitido, que es la señal honesta para detenerse e instalar el complemento.

nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name

Importar guarda un perfil. No demuestra que el otro extremo sea alcanzable, y no garantiza que cada directiva del archivo haya sobrevivido a la conversión. Vuelva a leer la conexión resultante y revise las partes que llevan identidad y confianza: el certificado, el host remoto y el puerto, y si se pide o se almacena una contraseña.

La activación con --ask mantiene una frase de paso fuera del historial del intérprete en una máquina compartida. Para una Pi sin supervisión, con el tiempo querrá que el perfil se levante al arranque, lo que es una decisión aparte de levantarlo una vez a mano.

Túnel completo, comparado en ambos diseños

Un túnel completo es una afirmación sobre rutas, no sobre intenciones, y los dos diseños lo expresan de forma distinta. El enfoque con perfil pide al gestor que instale una ruta por defecto y sus ajustes de resolutor; el enfoque con script hace lo que dice el script, incluido nada. Ninguno de los diseños cubre IPv6 a menos que se le diga, y una ruta por defecto IPv6 intacta llevará alegremente tráfico fuera del túnel mientras IPv4 parece perfecto.

ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org

Use una dirección de documentación para la consulta de ruta y sustituya un host que tenga permiso para sondear. El primer comando muestra qué interfaz usaría la Pi para un destino corriente; el segundo muestra si sigue existiendo una ruta por defecto IPv6; el tercero demuestra qué resolutor respondió. Lea los tres antes de creer cualquier afirmación sobre un túnel completo.

Si las instrucciones del proveedor prometen un túnel completo pero la ruta por defecto IPv6 sobrevive, la Pi tiene una fuga. Desactive IPv6 en el enlace ascendente o pida al perfil que lo reclame, y decida deliberadamente en lugar de descubrirlo más tarde.

Fallo abierto contra fallo cerrado

Cuando el túnel cae, una tabla de enrutamiento que pierde su ruta por defecto simplemente vuelve al enlace ascendente físico, y el tráfico continúa en claro. Eso es fallo abierto, y es el comportamiento por defecto de ambos diseños a menos que algo lo impida. La mayoría de la gente lo descubre semanas después leyendo un registro del cortafuegos.

El fallo cerrado le cuesta el acceso remoto cuando el túnel está caído, así que necesita una excepción deliberada para la ruta de gestión. Una forma es una regla que solo permita la dirección del igual de VPN fuera del túnel:

sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject

Compare el coste operativo con honestidad. Un perfil normalmente no puede expresar esta regla, así que el fallo cerrado le empuja hacia el diseño con script o hacia una unidad pequeña que instala la regla con independencia del túnel. En cualquier caso, registre los rechazos durante una semana: un rechazo silencioso parece idéntico a un servicio roto, y querrá el contador cuando un usuario informe de que un sitio ha dejado de cargar.

Elegir para una Pi sin pantalla

Si la imagen ya ejecuta NetworkManager, el túnel no necesita nada exótico y quiere que siga el enlace ascendente automáticamente, tome el perfil. Si necesita enrutamiento por políticas, varios túneles elegidos por destino, o una regla de fallo cerrado que deba existir antes de que el túnel suba, tome el script y posea cada parte de él, incluidos el orden de arranque y la limpieza. Mezclar los dos diseños cuesta más que cualquiera de ellos por separado.

Migrar entre ellos es sobre todo cuestión de orden: desactive al dueño antiguo, confirme que no sobrevive ninguna ruta ni entrada de resolutor obsoleta, después active el nuevo y reinicie dos veces. Un solo reinicio puede ocultar una carrera que un segundo expone. Termine probando la Pi en lugar del túnel: resuelva un nombre, descargue algo por IPv4, descargue por IPv6 si lo conservó, luego tire el túnel y confirme que el comportamiento que eligió ocurre de verdad. Una interfaz en ip link es el principio de la prueba, no el final.

Artículos relacionados