Kerio sous Linux : donner à kvnet la MAC que le serveur attend
kvnet est recréée à chaque connexion, donc un changement d’adresse ponctuel est perdu. Lisez la valeur journalisée par le client et appliquez-la depuis un crochet après la connexion.
Trois choses doivent s’accorder avant qu’un tunnel Kerio ne transporte du trafic : l’adresse de l’interface kvnet, la valeur consignée par le client et ce que la politique du serveur ou le DHCP attend. Quand elles ne s’accordent pas, le tunnel s’authentifie quand même et monte quand même, et c’est exactement ce qui rend la panne déroutante. L’interface est créée à chaque connexion, donc une adresse posée à la main appartient à cette session et à rien d’autre. Telle est la forme du problème, et la solution est un crochet plutôt qu’un fichier de configuration. Le reste, c’est où lire la valeur et où l’appliquer.
Pourquoi l’adresse revient sans cesse
kvnet est un adaptateur virtuel que le client crée au début d’une connexion et supprime à la fin. Un ip link set manuel ne survit donc exactement que le temps de la session à laquelle il a été appliqué, et la connexion suivante repart de ce que le client attribue. Sur une machine où le client n’arrive pas à appliquer l’adresse attendue, chaque reconnexion réintroduit le même écart, et la règle de bail ou d’accès rejette à nouveau l’appareil.
Ce schéma est diagnostique en soi. Un tunnel qui fonctionne une session et échoue à la suivante n’est pas un problème d’identifiants, car les identifiants ne changent pas d’une connexion à l’autre.
Lisez la valeur chez le client, pas sur l’interface
Le client Linux écrit les détails de la négociation dans son journal de débogage, et l’adresse qu’il compte utiliser y apparaît comme le dernier jeton en forme d’adresse de la séquence de connexion. Comparez-la à ce que le noyau détient réellement, ce qui est à un readlink de distance : cat /sys/class/net/kvnet/address.
Si les deux diffèrent, le client connaissait la bonne valeur et n’a pas réussi à l’appliquer, et un crochet qui l’applique une fois l’interface créée comble cet écart. Si le journal ne contient aucune adresse, le problème est plus ancien et relève de la version du client ou du profil du serveur plutôt que d’un script.
Appliquez-la une fois l’interface créée
Les utilisateurs de NetworkManager peuvent déposer un script dans son répertoire de répartiteur et n’agir que lorsque l’interface VPN monte. Un client géré par systemd demande plus de soin : un drop-in exécuté au démarrage du service se déclenche généralement avant que l’adaptateur existe, donc le crochet doit attendre l’interface au lieu de la supposer. Fixez l’adresse à ce moment-là, et si le noyau refuse alors que le lien est monté, descendez-le, fixez l’adresse et remontez-le. Relisez le jeton extrait via un motif de MAC avant de le passer à ip link, pour qu’une ligne de journal inattendue ne puisse pas devenir un argument.
Tout ce qui s’exécute en root à partir du journal d’un client mérite une propriété étroite : un fichier possédé par root, non inscriptible par les autres, et aucune interpolation de shell au-delà de l’adresse validée. Gardez la vérification du motif dans le script. Ne laissez pas le contenu du journal décider quelle commande s’exécute.
Vérifiez le bail plutôt que le lien
ip -4 -o addr show dev kvnet devrait afficher une adresse dans la plage attendue, ip neigh show dev kvnet devrait afficher la passerelle, et un service derrière le VPN devrait répondre. Déconnectez-vous ensuite et reconnectez-vous une fois ; si l’adresse revient, le crochet se déclenche sur le mauvais événement ou pas du tout.
Une interface qui apparaît avec la bonne adresse et n’obtient jamais de bail pointe vers le côté serveur. C’est une autre vérification et généralement une autre équipe. Confirmez que le compte est autorisé et que le pool dispose encore d’une adresse avant de modifier à nouveau le crochet.
Repensez le contournement après une mise à jour
Une version du client qui fixe correctement l’adresse laisse votre crochet appliquer une valeur périmée, ce qui est une nouvelle panne introduite par un correctif. Ne copiez jamais non plus une MAC depuis une autre machine ou un message de forum ; utilisez la valeur que ce client journalise pour ce compte, et notez la date à laquelle vous l’avez vérifiée.
Gardez le script assez court pour être lu d’une traite. Les contournements qui analysent des journaux sont temporaires par nature. Ceux qui survivent sont ceux qu’un lecteur futur comprend sans le fil d’origine.