Kerio a Linux: donar a kvnet la MAC que el servidor espera
kvnet es recrea a cada connexió, així que un canvi d’adreça puntual es perd. Llegeix el valor que el client va registrar i aplica’l des d’un ganxo posterior a la connexió.
Tres coses han de coincidir abans que un túnel de Kerio transporti trànsit: l’adreça de la interfície kvnet, el valor que el client va registrar i el que espera la política del servidor o el DHCP. Quan no coincideixen, el túnel igualment s’autentica i igualment s’aixeca, i això és exactament el que fa que la fallada sigui confusa. La interfície es crea per connexió, així que una adreça posada a mà pertany a aquella sessió i a res més. Aquesta és la forma del problema, i la solució és un ganxo i no un fitxer de configuració. La resta és on llegir el valor i on aplicar-lo.
Per què l’adreça torna una i altra vegada
kvnet és un adaptador virtual que el client crea quan comença una connexió i elimina quan acaba. Per tant, una ip link set manual sobreviu exactament tant com la sessió a què es va aplicar, i la connexió següent comença amb el que assigni el client. En una màquina on el client no aconsegueix aplicar l’adreça esperada, cada reconnexió reintrodueix la mateixa discrepància, i la regla de lloguer o d’accés torna a rebutjar el dispositiu.
Aquest patró és diagnòstic per si mateix. Un túnel que funciona en una sessió i falla en la següent no és un problema de credencials, perquè les credencials no canvien entre connexions.
Llegeix el valor del client, no de la interfície
El client de Linux escriu els detalls de la negociació al seu registre de depuració, i l’adreça que pretén utilitzar hi apareix com l’últim testimoni amb forma d’adreça de la seqüència de connexió. Compareu-ho amb el que el nucli realment té, que és a un readlink de distància: cat /sys/class/net/kvnet/address.
Si els dos difereixen, el client coneixia el valor correcte i no va aconseguir aplicar-lo, i un ganxo que l’aplica després que existeixi la interfície tanca aquesta escletxa. Si el registre no conté cap adreça, el problema és anterior i correspon a la versió del client o al perfil del servidor, no a un script.
Aplica’l després que existeixi la interfície
Els usuaris de NetworkManager poden deixar un script al seu directori de despatxador i actuar només quan la interfície VPN s’aixeca. Un client gestionat per systemd necessita més cura: un drop-in que s’executa a l’inici del servei normalment s’activa abans que existeixi l’adaptador, així que el ganxo ha d’esperar la interfície en lloc de suposar-la. Fixa l’adreça llavors, i si el nucli la rebutja mentre l’enllaç està aixecat, baixa’l, fixa l’adreça i torna’l a aixecar. Torna a llegir el testimoni extret amb un patró de MAC abans de passar-lo a ip link, perquè una línia de registre inesperada no es converteixi en un argument.
Qualsevol cosa que s’executi com a root a partir del registre d’un client mereix una propietat estreta: un fitxer propietat de root, no escriptible per altres, i cap interpolació d’intèrpret més enllà de l’adreça validada. Mantén la comprovació del patró dins del script. No deixis que el contingut del registre decideixi quina ordre s’executa.
Verifica el lloguer en lloc de l’enllaç
ip -4 -o addr show dev kvnet hauria de mostrar una adreça dins del rang esperat, ip neigh show dev kvnet hauria de mostrar la passarel·la, i un servei darrere de la VPN hauria de respondre. Després desconnecta i torna a connectar un cop; si l’adreça torna, el ganxo s’activa amb l’esdeveniment equivocat o no s’activa gens.
Una interfície que apareix amb l’adreça correcta i mai no obté un lloguer apunta al costat del servidor. Aquesta és una altra comprovació i normalment un altre equip. Confirma que el compte està permès i que el pool encara té una adreça abans de tornar a editar el ganxo.
Revisa la solució alternativa després d’una actualització
Una compilació del client que fixa l’adreça correctament deixa el teu ganxo aplicant un valor obsolet, que és una fallada nova introduïda per una correcció. Tampoc no copiïs mai una MAC d’una altra màquina ni d’una publicació de fòrum; usa el valor que aquest client registra per a aquest compte, i anota la data en què el vas verificar.
Mantén el script prou curt per llegir-lo d’una tirada. Les solucions alternatives que analitzen registres són temporals per naturalesa. Les que sobreviuen són les que un lector futur pot entendre sense el fil original.