Nous avons des dizaines d'appareils intégrés installés chez les clients, tous appelant à la maison à notre service OpenVPN. Cela fonctionne bien en général, mais quelques-uns de nos clients ont de graves problèmes de MTU. Notre influence sur les clients pour réparer leurs réseaux est limitée, nous avons donc besoin d'OpenVPN pour y faire face. En un mot, ma question est:
Comment puis-je atténuer les MTU à faible chemin de certains clients sur une base par client, c'est-à-dire sans utiliser de paramètres globaux adaptés au pire des cas pour tous les clients
Notez que notre pire cas est assez mauvais: le chemin MTU 576, supprime tous les fragments, ne se fragmente pas, n'honore pas le bit DF. Vous voyez pourquoi je préfère ne pas résoudre ce problème à l'échelle mondiale.
La page de manuel OpenVPN propose un certain nombre d'options liées à MTU, notamment --link-mtu, --tun-mtu, --fragment and --mssfix
. Mais ça dit aussi
--link-mtu [...] Il est préférable de ne pas définir ce paramètre à moins de savoir ce que vous faites.
--tun-mtu [...] Il est préférable d'utiliser les options --fragment et / ou --mssfix pour traiter les problèmes de dimensionnement MTU.
J'ai donc commencé à expérimenter --fragment
et j'ai --mssfix
vite compris qu'au moins le premier devait être défini non seulement côté client, mais aussi côté serveur . J'ai ensuite examiné la configuration par client côté serveur via --client-config-dir
mais il est dit
Les options suivantes sont légales dans un contexte spécifique au client: --push, --push-reset, --iroute, --ifconfig-push et --config.
Aucune mention des options MTU!
Voici donc mes questions les plus spécifiques:
- Pourquoi exactement
link-mtu
ettun-mtu
découragés? Quels sont les problèmes potentiels avec ces options? Notez que je suis assez à l'aise avec le munging d'en-tête IP de bas niveau. - Laquelle des options
link-mtu tun-mtu fragment mssfix
doit être mise en miroir côté serveur pour fonctionner? - Dans laquelle des options
link-mtu tun-mtu fragment mssfix
peut-on utiliserclient-config-dir
? - Dans le cas où les quatre options doivent être mises en miroir côté serveur et ne peuvent pas être utilisées à l'intérieur
client-config-dir
: existe-t-il des alternatives pour lutter contre la MTU à faible chemin par client?
Remarques:
- Certaines parties de mes questions ont déjà été posées il y a 5 ans ici , mais elles n'ont pas vraiment été répondues à l'époque, donc j'ose les dupliquer.
- Le serveur OpenVPN est actuellement 2.2.1 sur Ubuntu 12.04. Nous préparons une mise à niveau vers 2.3.2 sur Ubuntu 14.04
- Les clients OpenVPN sont 2.2.1 sur Debian 7.6
- Je suis heureux de déterminer moi-même le chemin d'un client-MTU manuellement
- Actuellement, nous ne pouvons pas tester beaucoup côté serveur. Mais nous construisons un banc d'essai séparé complet, devrait être prêt bientôt.
Je suis reconnaissant pour tout conseil utile.
la source
iptables
règles pour réduire le MSS sur tous les paquets SYN vers ou depuis cette adresse IP cliente.Réponses:
J'ai résolu le problème côté client en ajoutant l'option
mssfix 1300
au fichier de configuration.Depuis la page de manuel openvpn:
L'idée originale de ma solution est venue de personalvpn.org
la source
mssfix
Peut donc être défini côté client uniquement? Eh bien, c'est au moins quelque chose. Cependant, cela n'aide pas avec les paquets UDP (c'est pourquoi j'étais intéressé par les autres options, mais au moins les recommandationsfragment
doivent également être définies côté serveur)Étant donné le manque de réponses, je poste maintenant une solution qui n'est pas très élégante, mais simple: exécuter une autre instance OpenVPN sur TCP pour les "mauvais clients"
et abaisser le TCP MSS sur le client, par exemple
Un avantage de cette solution est que chaque client peut définir son MSS individuel.
Il s'agit certes de TCP sur TCP, mais cela devrait fonctionner assez bien dans de nombreux scénarios .
Notez que je suis toujours très intéressé par les solutions qui ne nécessitent pas
proto tcp
, et je les marquerai comme une réponse valide si elles répondent plus ou moins à mes exigences décrites.la source