Kerio en Linux: dar a kvnet la MAC que espera el servidor
kvnet se recrea en cada conexión, así que un cambio de dirección puntual se pierde. Lea el valor que registró el cliente y aplíquelo desde un gancho posterior a la conexión.
Tres cosas tienen que coincidir antes de que un túnel de Kerio transporte tráfico: la dirección de la interfaz kvnet, el valor que registró el cliente y lo que espera la política del servidor o el DHCP. Cuando no coinciden, el túnel igualmente se autentica e igualmente se levanta, y eso es exactamente lo que hace confuso el fallo. La interfaz se crea por conexión, así que una dirección puesta a mano pertenece a esa sesión y a nada más. Esa es la forma del problema, y la solución es un gancho en lugar de un archivo de configuración. El resto es dónde leer el valor y dónde aplicarlo.
Por qué la dirección no deja de revertirse
kvnet es un adaptador virtual que el cliente crea al iniciar una conexión y elimina al terminarla. Un ip link set manual sobrevive por tanto exactamente lo que dura la sesión a la que se aplicó, y la siguiente conexión empieza con lo que asigne el cliente. En una máquina donde el cliente no logra aplicar la dirección esperada, cada reconexión reintroduce la misma discrepancia, y la regla de concesión o de acceso vuelve a rechazar el dispositivo.
Ese patrón es diagnóstico por sí mismo. Un túnel que funciona una sesión y falla en la siguiente no es un problema de credenciales, porque las credenciales no cambian entre conexiones.
Lea el valor del cliente, no de la interfaz
El cliente de Linux escribe los detalles de la negociación en su registro de depuración, y la dirección que pretende usar aparece allí como el último testigo con forma de dirección de la secuencia de conexión. Compárelo con lo que el núcleo tiene realmente, que está a un readlink de distancia: cat /sys/class/net/kvnet/address.
Si los dos difieren, el cliente conocía el valor correcto y no logró aplicarlo, y un gancho que lo aplica después de que exista la interfaz cierra esa brecha. Si el registro no contiene ninguna dirección, el problema es anterior y corresponde a la versión del cliente o al perfil del servidor, no a un script.
Aplíquelo después de que exista la interfaz
Los usuarios de NetworkManager pueden dejar un script en su directorio de despachador y actuar solo cuando la interfaz VPN sube. Un cliente gestionado por systemd requiere más cuidado: un drop-in que se ejecuta al inicio del servicio suele activarse antes de que exista el adaptador, así que el gancho debe esperar la interfaz en lugar de suponerla. Fije la dirección entonces, y si el núcleo la rechaza mientras el enlace está arriba, bájelo, fije la dirección y vuelva a subirlo. Vuelva a leer el testigo extraído mediante un patrón de MAC antes de pasarlo a ip link, para que una línea de registro inesperada no pueda convertirse en un argumento.
Cualquier cosa que se ejecute como root desde el registro de un cliente merece una propiedad estrecha: un archivo propiedad de root, no escribible por otros y sin interpolación de shell más allá de la dirección validada. Mantenga la comprobación del patrón dentro del script. No deje que el contenido del registro decida qué comando se ejecuta.
Verifique la concesión en lugar del enlace
ip -4 -o addr show dev kvnet debería mostrar una dirección en el rango esperado, ip neigh show dev kvnet debería mostrar la puerta de enlace, y un servicio detrás de la VPN debería responder. Luego desconecte y vuelva a conectar una vez; si la dirección vuelve, el gancho se dispara con el evento equivocado o no se dispara en absoluto.
Una interfaz que aparece con la dirección correcta y nunca obtiene una concesión apunta al lado del servidor. Esa es otra comprobación y normalmente otro equipo. Confirme que la cuenta está permitida y que el grupo todavía tiene una dirección antes de editar el gancho otra vez.
Revise el apaño después de una actualización
Una compilación del cliente que fija la dirección correctamente deja su gancho aplicando un valor obsoleto, lo que es un fallo nuevo introducido por una corrección. Tampoco copie nunca una MAC de otra máquina ni de una publicación de foro; use el valor que este cliente registra para esta cuenta y anote la fecha en que lo verificó.
Mantenga el script lo bastante corto para leerlo de una sentada. Los apaños que analizan registros son temporales por naturaleza. Los que sobreviven son los que un lector futuro puede entender sin el hilo original.