OpenVPN est un serveur VPN très populaire qui offre de nombreuses options et qui peut rendre sa configuration compliquée.
Parmi les problèmes courants que l’on peut rencontrer : les problèmes de MTU.
Les problèmes de MTU se manifestent souvent par des connexions qui se bloquent pendant les périodes d’utilisation active.
Dans ce tutoriel, je vous propose de découvrir les options MTU d’OpenVPN et comment configurer le MTU dans OpenVPN.
Je termine par quelques problèmes courants de MTU.
Comprendre le MTU dans OpenVPN
Le MTU est mesuré en octets et représente la plus grande taille de paquet qui peut être transmise sur un réseau sans être décomposée en fragments plus petits. Des valeurs MTU plus élevées permettent une transmission de données plus efficace, car moins de paquets sont nécessaires pour transmettre la même quantité de données. Cependant, si le MTU est trop élevé et dépasse les capacités de n’importe quel appareil réseau le long du chemin de transmission, une fragmentation peut se produire, entraînant des problèmes de performance ou la perte de paquets
OpenVPN fonctionne en encapsulant les données dans ses propres paquets, qui ont leur propre MTU.
Par défaut, OpenVPN définit un MTU de 1500 octets, qui est le MTU standard pour les réseaux Ethernet.
Le MTU par défaut n’est pas toujours adapté à toutes les configurations de réseau, et il peut être nécessaire de le modifier pour garantir des performances optimales.
Quelles sont les options MTU dans OpenVPN
Paramètre | Description | Côté (serveur/client) |
tun-mtu 1400 | Détermine la taille maximale des paquets que le VPN peut transporter, Du côté du serveur (le serveur VPN), vous pouvez modifier le fichier de configuration du serveur OpenVPN pour définir le MTU à l’aide de l‘option tun-mtu. |
Serveur/Client |
link-mtu 1400 | Réfère à la taille maximale de la charge utile UDP qui sont envoyés entre les pairs OpenVPN. Cette taille n’inclut pas l’en-tête IP ou UDP. |
Serveur |
mssfix 1400 | Définit le MTU côté client, vous pouvez utiliser l’option mssfix. Cette option réduit la taille maximale de segment (MSS) à 1400 octets, ce qui permet d’éviter la fragmentation. La valeur tun-mtu du serveur ne doit pas être modifiée (à 1500) sinon le client ignore cette option. |
Client |
fragment 1400 | Permet la fragmentation effectuée par OpenVPN lui-même en utilisant son propre algorithme interne (pas la fragmentation IP), et en tant que telle, elle doit être acceptée par les deux points d’extrémité. Cependant, lorsqu’il est présent, il peut avoir des valeurs asymétriques. L’option fragment doit être soit présent des deux côtés, soit absent des deux côtés |
Des deux côtés |
Path MTU Discovery (PMTUD) | L’activation de la découverte du MTU du chemin (PMTUD) peut permettre aux points d’extrémité d’ajuster dynamiquement le MTU en fonction des conditions du chemin. Vous pouvez l’activer en ajoutant les lignes suivantes à votre serveur OpenVPN et aux configurations de vos clients : fragment 1300 mssfix 1300 Ceci indique à OpenVPN de tenter de réduire le MTU à 1300 octets si des problèmes sont rencontrés. |
Client |
mtu-disc | Active ou désactive la découverte du Path MTU sur le canal TCP/UDP. Uniquement sur les systèmes d’exploitation tels que Linux qui supportent l’appel système nécessaire pour définir le MTU. Trois valeurs sont valides : no — Ne jamais envoyer de trames DF (Don’t Fragment) maybe — Utiliser des conseils par itinéraire yes — Toujours DF (Don’t Fragment) |
Pour plus de configurations : https://openvpn.net/community-resources/reference-manual-for-openvpn-2-6/
link-mtu vs tun-mtu
Il peut y avoir des confusions entre ceux options d’OpenVPN.
En voici les différences :
- Link-MTU :
- La MTU (Maximum Transmission Unit) de la liaison (link-MTU) fait référence à la taille maximale des paquets qui peuvent être transmis sur une interface réseau physique ou virtuelle, telle qu’une carte réseau Ethernet.
- La valeur de la link-MTU dépend des caractéristiques de la connexion réseau sous-jacente, comme le type de carte réseau, le protocole utilisé, et les paramètres de configuration du système d’exploitation.
- Tun-MTU :
- La MTU du tunnel (tun-MTU) fait référence à la taille maximale des paquets qui peuvent être encapsulés dans le tunnel VPN entre les deux points de terminaison du VPN.
- Dans le contexte d’OpenVPN, la tun-MTU est spécifiée dans la configuration du serveur et du client. Elle détermine la taille maximale des paquets que le VPN peut transporter, en tenant compte de la surcharge de l’en-tête VPN.
En résumé, la link-MTU est la taille maximale des paquets pouvant être transmis sur une interface réseau, tandis que la tun-MTU est la taille maximale des paquets pouvant être encapsulés dans le tunnel VPN.
mtu-disc
L’option “mtu-disc” permet à OpenVPN de détecter automatiquement la MTU maximale autorisée sur le chemin réseau entre les deux points de terminaison du VPN. Cela se fait en envoyant des paquets ICMP “Fragmentation Needed” (Type 3, Code 4) et en ajustant la MTU en conséquence pour éviter la fragmentation des paquets.
Lorsque cette option est activée, OpenVPN utilise la découverte automatique de la MTU pour ajuster la taille des paquets envoyés par la connexion VPN, ce qui peut améliorer les performances et la fiabilité de la transmission des données. Cependant, dans certains cas, il peut être nécessaire de désactiver cette option si la découverte automatique de la MTU provoque des problèmes de connectivité ou de performances sur le réseau.
Celle-ci est à configurer côté serveur :
mtu-disc yes
net.ipv4.ip_forward_use_pmtu sur Linux
L’option net.ipv4.ip_forward_use_pmtu
dans Linux contrôle la façon dont le système gère la fragmentation des paquets IP lorsque la fonctionnalité de routage IP est activée (c’est-à-dire lorsque le routage est activé sur le système).
Plus précisément, lorsque cette option est activée (avec une valeur de 1), le système utilise le MTU (Maximum Transmission Unit) path discovery (PMTU) pour déterminer la taille maximale des paquets qu’il peut transmettre à travers les interfaces réseau. Cette fonctionnalité est utile pour éviter la fragmentation des paquets IP lors de leur transmission à travers des réseaux ayant des MTU différents. Elle contribue à améliorer l’efficacité et les performances de la transmission des données.
Pour modifier la valeur et tester celle-ci, utilisez la commande sysctl suivante :
sysctl net.ipv4.ip_forward_use_pmtu=1
Comment calculer la valeur du MTU optimale pour OpenVPN
Cela suggère que nous devons prendre en compte les octets de l’en-tête UDP. Donc 1470 – 28 (pour IPv4) = 1442.
Manuellement avec des tests ping
La première chose à faire pour résoudre votre problème de MTU OpenVPN est de déterminer quel est votre plus grand MTU.
Pour cela, on utilise l’utilitaire ping en faisant varier la valeur du MTU à l’aide des commandes suivantes :
ping <adresse IP passerelle VPN> -f -l <valeur mtu>
ping -c 10 -M do -s <valeur mtu> <adresse IP passerelle VPN>
L’idée est de commencer avec une valeur de 1500 et de réduire de 10 pour trouver la valeur où les paquets ne sont pas fragmenté et aucune perte de paquet n’a lieu.
ping <adresse IP passerelle VPN> -f -l 1500
A partir de là, vous pouvez déterminer la valeur optimale du MTU.
Automatiquement avec –mtu-test
Une autre façon de procéder est de laisser OpenVPN calculer la valeur du MTU.
Pour mesurer empiriquement le MTU au démarrage de la connexion, ajoutez l’option –mtu-test à votre configuration.
OpenVPN enverra des paquets ping de différentes tailles au pair distant et mesurera les plus gros paquets qui ont été reçus avec succès. Le processus –mtu-test prend normalement environ 3 minutes.
La sortie des journaux est la suivante :
2024-05-13 12:06:08 NOTE: Beginning empirical MTU test -- results should be available in 3 to 4 minutes.
2024-05-13 12:06:11 read UDPv4 [EMSGSIZE Path-MTU=1436]: Message too long (fd=5,code=90)
2024-05-13 12:09:08 NOTE: Empirical MTU test completed [Tried,Actual] local->remote=[1454,1454] remote->local=[1454,1454]
Résoudre les erreurs MTU
Lorsque les valeurs du MTU sont trop importantes, vous pouvez rencontrer une baisse des performances allant même jusqu’à des freez et blocage du VPN.
Dans les logs, vous pouvez rencontrer les entrées suivantes :
2024-05-13 11:49:34 write UDPv4 [EMSGSIZE Path-MTU=1436]: Message too long (fd=5,code=90)
Vous pouvez corriger cela, en ajoutant des paramètres fragment côté serveur et client et mssfix côté client.
Liens
- Installer et configurer un serveur VPN WireGuard sur Linux et client (Windows, Android, Ubuntu)
- Comment utiliser les commandes wg et wg-quick (Wireguard)
- Comment activer et voir les logs WireGuard
- Résoudre les erreurs dans les logs WireGuard
- Comment installer OpenVPN sur Ubuntu, Debian
- Installer un raspberry en routeur VPN + pi-hole (NordVPN ou ProtonVPN)
- Serveur d’anonymat : OpenVPN + Proxy et TOR
- pi-hole : bloquer la publicité et trackers
- Configurer pihole avec DNSCrypt ou DNS over HTTPS (DoH)
L’article OpenVPN : configurer le MTU et résoudre les problèmes de MTU est apparu en premier sur malekal.com.
0 Commentaires