Les pings réussissent, les gros transferts se bloquent et le tunnel se déclare en bonne santé. Quelqu’un baisse le MTU de l’interface, un autre ajuste le MSS, et parfois le problème disparaît pour des raisons que personne ne consigne. Les deux nombres décrivent des objets différents, donc changer le mauvais produit un correctif qui ressemble à de la chance. Voici la marche à suivre : identifier la couche, appliquer le réglage correspondant, puis tester sur une nouvelle connexion.

Deux nombres, deux objets

Le MTU appartient à un lien ou à une interface : c’est le plus grand paquet qui peut être remis sans être découpé. Le MSS appartient à TCP : c’est la plus grande quantité de charge TCP qu’un segment peut porter, et il exclut à la fois l’en-tête TCP et l’en-tête IP. Sur un lien Ethernet ordinaire en IPv4, un MTU de 1500 octets donne le MSS bien connu de 1460 octets. Ces nombres décrivent des couches différentes et sont échangés par des mécanismes différents. Les confondre est facile car les deux se mesurent en octets et les deux avoisinent 1500.

L’un arrive comme un réglage d’interface. L’autre arrive comme une option dans un segment SYN, négociée entre des extrémités qui ne voient jamais votre interface.

Où atterrit la surcharge extérieure

Un VPN place le paquet intérieur dans un autre, et le paquet extérieur doit tenir dans le chemin physique. Les en-têtes d’encapsulation, l’en-tête IP extérieur, l’en-tête de transport et toute étiquette d’authentification consomment des octets que le paquet intérieur ne peut pas utiliser. Laissez l’interface du tunnel à 1500 et le paquet extérieur dépasse régulièrement ce que le chemin peut transporter. Avec le bit « ne pas fragmenter » activé, le routeur le rejette et devrait renvoyer une erreur ICMP ; si cette erreur est filtrée, l’émetteur ne l’apprend jamais.

C’est pourquoi la panne paraît sélective. Les petites requêtes aboutissent et tout ce qui remplit un segment se bloque, car seuls les gros paquets sont écartés. Un tunnel qui laisse passer un ping n’est pas un tunnel qui transporte des données.

Ajuster le MSS, et où cela s’applique

L’ajustement du MSS réécrit la valeur dans le segment SYN lorsqu’il traverse un point choisi, ce qui fait que les deux extrémités choisissent une charge plus petite sans qu’aucune sache pourquoi. Sous Linux, c’est une cible de la table mangle appliquée par une règle explicite, et elle doit atteindre les paquets SYN dans la direction voulue. Limitez-la à l’interface du tunnel et à la plage d’adresses, car une règle large modifie le comportement d’un trafic qui n’entre jamais dans le tunnel.

L’effet ne concerne que TCP. Une application UDP, une session QUIC et tout protocole qui construit ses propres datagrammes n’y sont pas soumis.

Diagnostiquer avec un chemin fixe

Ne changez qu’une variable à la fois. Testez avec un paquet dont vous choisissez la taille, et activez l’indicateur « ne pas fragmenter » pour que le noyau rapporte le résultat au lieu de le masquer.

Notez où la panne commence : dans le tunnel, à l’interface du tunnel ou sur le chemin physique après encapsulation. Changez ensuite un seul nombre et répétez le même test plutôt qu’un autre. Les connexions existantes conservent le MSS négocié, donc un changement de politique n’est visible que sur une nouvelle connexion, ce qui explique qu’une page en cache ne prouve rien dans un sens ou dans l’autre. Si un gros téléversement se met à fonctionner, vous avez appris quelque chose sur ce chemin et non sur chaque protocole qui y passe.

Ce que chaque changement ne corrige pas

Baisser le MTU de l’interface ne modifie pas le MSS d’une session déjà établie. Ajuster le MSS n’aide pas un flux UDP et ne répare pas un chemin où les erreurs ICMP sont filtrées dans un seul sens. Chaque changement corrige une classe de problème et laisse le reste exactement comme il était.

Notez quel réglage vous avez appliqué, où, et quel test a montré la différence, sinon l’ingénieur suivant applique les deux et perd la capacité de dire lequel comptait. Si la contrainte est réelle et permanente, préférez un MTU de tunnel qui la reflète à un ajustement qui la dissimule. Si vous devez ajuster, laissez la règle limitée et commentée, car une règle mangle inexpliquée devient permanente par défaut.

Articles similaires