(Copié depuis Unix Stack Exchange)
Vous avez les symptômes d'un MTU problème :certaines connexions TCP se bloquent, de manière plus ou moins reproductible pour une commande ou une URL donnée, mais sans modèle global facilement discernable. Un symptôme révélateur est que les sessions ssh interactives fonctionnent bien mais que les transferts de fichiers échouent presque toujours. De plus, pppoe est le premier fournisseur de problèmes de MTU pour les utilisateurs à domicile. Je prescris donc un contrôle MTU.
Qu'est-ce que c'est ? Le m t maximal transmission u nit est la taille maximale d'un paquet sur une liaison réseau. Le MTU varie d'un support de transport à l'autre, par ex. l'Ethernet filaire et le wifi (802.11) ont des MTU différents, et les liaisons ATM (qui constituent la majeure partie de l'infrastructure longue distance) ont chacune leur propre MTU. PPPOE est un protocole encapsulé, ce qui signifie que chaque paquet se compose de quelques octets d'en-tête suivi du paquet sous-jacent - cela réduit donc la taille maximale des paquets de la taille de l'en-tête. IP permet aux routeurs de fragmenter les paquets s'ils détectent qu'ils sont trop volumineux pour le saut suivant, mais cela ne fonctionne pas toujours. En théorie, le bon MTU devrait être découvert automatiquement, mais cela ne fonctionne pas toujours non plus. En particulier, la recherche sur Google suggère que Network Manager n'agit pas toujours correctement sur les informations MTU obtenues à partir de la découverte MTU, mais je ne sais pas quelles versions sont affectées ou quels sont les cas d'utilisation problématiques.
Comment le mesurer. Essayez d'envoyer des paquets ping d'une taille donnée à un hôte extérieur qui y répond, par ex. ping -c 1 -s 42 8.8.8.8
(sous Linux ; sur d'autres systèmes, consultez la documentation de votre ping
commande). Vos paquets devraient passer pour des valeurs suffisamment petites de 42 (si 42 ne fonctionne pas, quelque chose bloque les pings.). Pour des valeurs plus grandes, le paquet ne passera pas. 1464 est une valeur maximale typique si l'élément d'infrastructure limitant est votre réseau Ethernet local. Si vous avez de la chance, lorsque vous envoyez un paquet trop volumineux, vous verrez un message du type Frag needed and DF set (mtu = 1492)
. Si vous n'êtes pas chanceux, continuez à expérimenter avec la valeur jusqu'à ce que vous trouviez le maximum, puis ajoutez 28 (-s
spécifie la taille de la charge utile, et il y a 28 octets d'en-têtes en plus). Voir aussi Comment optimiser votre connexion Internet à l'aide de MTU et RWIN sur les forums Ubuntu.
Comment le configurer (remplacez 1454 par le MTU que vous avez déterminé, et eth0
par le nom de votre interface réseau)
- Comme une seule fois (Linux) :exécutez
ifconfig eth0 mtu 1454
- En permanence (Debian et ses dérivés tels qu'Ubuntu, si vous n'utilisez pas Network Manager) :modifiez
/etc/network/interfaces
. Juste après l'entrée de votre interface réseau (après leiface eth0 …
directive), ajouter une ligne avecpre-up ifconfig $IFACE mtu 1454
. Alternativement, si votre adresse IP est statique, vous pouvez ajouter lemtu 1454
paramètre auiface eth0 inet static
directive. -
De manière permanente (Debian et dérivés tels qu'Ubuntu, avec ou sans Network Manager) :Créez un script nommé
/etc/network/if-pre-up.d/mtu
avec le contenu suivant et rendez-le exécutable par tous (chmod a+rx
):#!/bin/sh ifconfig $IFACE mtu 1454