Forum Linux.général Probléme de MTU avec wireguard

Posté par (page perso) . Licence CC by-sa.
Tags : aucun
2
9
jan.
2020

Bonjour,

Je suis en train de convertir mes liens VPN de openvpn à wireguard, dans un AS avec de multiple sous réseaux routé. La MTU du lien wireguard est défini à 1420 (comme celle de OpenVPN).

Avec OpenVPN ca marche:
http://files.first-world.info/temp/ok.pcapng
Avec Wireguard ca ne marche pas:
http://files.first-world.info/temp/bug.pcapng

Quand je change ma MTU en bout de chaine de 1500 à 1420, cela marche (sauf que cela ne s'applique que à mon poste).
J'ai aussi testé sans succès:
- mettre le sous réseau avant wireguard a 1420
- augmenter et diminuer la MTU de wireguard
- iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --set-mss 1420

J'arrive pas a trouver et donc corrigé ce qui est différent entre les 2 dump. Merci de votre aide.

  • # Header Wireguard

    Posté par . Évalué à 2 (+1/-0).

    • [^] # Re: Header Wireguard

      Posté par (page perso) . Évalué à 2 (+0/-0).

      Merci de la réponse, mais vu que j'ai déjà mit la MTU a cette valeur…

      Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

      • [^] # Re: Header Wireguard

        Posté par . Évalué à 1 (+0/-0).

        Et en mettant le mtu de la carte réseau à 1420 ?
        ip link set dev enp0s25 mtu 1420

        • [^] # Re: Header Wireguard

          Posté par (page perso) . Évalué à 2 (+0/-0).

          J'ai essayer de mettre cette MTU sur toutes les cartes réseaux sur le chemain, cela ne change rien. (wireguard inclut).

          La seule MTU qui corrige le probléme c'est celle de ma machine personnel. Et je doit corriger tout le réseau de toute l'entreprise, pas juste mon poste de travail.

          Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

  • # ICMP comme d'hab

    Posté par . Évalué à 2 (+0/-0).

    Tout d'abord, tes liens renvoient des 404.

    Donc à l'aveugle, je dirais que c'est un problème classique de blocage d'ICMP. La MTU ça n'est pas un truc « magique » qu'il faut appliquer par petites touches à droite à gauche en croisant les doigts, ni un truc de bourrin qu'on doit mettre partout à la main : c'est une manière de dire qu'il y a des liens qui ont une taille de paquet plus petite, et que soit la machine re-découpe, soit elle indique qu'elle ne peut pas. Je parle de blocage ICMP car c'est souvent la cause en IPv6, mais ça peut aussi arriver en IPv4.

    En passant, bidouiller le MSS c'est souvent mettre un bandage sur une jambe de bois : ça marche que pour TCP, et que dans un sens.

    Bon, pour mieux diagnostiquer, avoir les dump serait mieux quand même (idéalement des deux côtés).

    • [^] # Re: ICMP comme d'hab

      Posté par (page perso) . Évalué à 2 (+0/-0).

      Je vois bien sortir le packet ICMP: Destination unreachable (Fragmentation needed), mais si mon upstream provider le bloque je peu rien faire (j'ai déjà demandé, mais je suis resté sans réponse). Le probléme avec cela, c'est les RTTs https://en.wikipedia.org/wiki/Round-trip_delay_time.

      J'ai fixé la MSS à 1326 et cela semble marché. Ca me suffit car je doit encore debuggé encore d'autres morceaux plus urgent.

      Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

      • [^] # Re: ICMP comme d'hab

        Posté par . Évalué à 2 (+0/-0).

        C'est pas clair du tout : sortir d'où ça ? vers où ? Et donc si ya du "fragmentation needed", c'est bien qu'il va falloir fragmenter quelque-part, et que si la machine qui est sensée le recevoir ne le reçoit pas, c'est bien un blocage ICMP. Et les admins qui ne répondent pas, classique : je pense qu'ils ne comprennent même pas le problème, malheureusement. C'est triste cette incompétence crasse qu'on retrouve dans beaucoup d'endroits.

        Ce que je ne comprends pas par contre, c'est qu'au lieu de bidouiller le MSS, tu devrais juste avoir à réduire la MTU de ton tunnel pour que ton point d'entrée VPN fragmente comme il faut, et ça devrait passer tout seul.

        • [^] # Re: ICMP comme d'hab

          Posté par (page perso) . Évalué à 2 (+0/-0).

          Je suis d'accords, cela semble un blocage ICMP.

          Sur OpenVPN la réduction de la MTU en tap (Layer 3) s'accompagne d'une réécriture de la MSS, mais pas sur wireguard (peu être un bug de ce dernier).

          Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

          • [^] # Re: ICMP comme d'hab

            Posté par . Évalué à 2 (+0/-0).

            Sur OpenVPN la réduction de la MTU en tap (Layer 3) s'accompagne d'une réécriture de la MSS, mais pas sur wireguard (peu être un bug de ce dernier).

            Les deux ne sont pas forcément liées : OpenVPN a un comportement « tout en un » pour soit-disant faciliter la vie, mais il n'y a aucune raison de toujours ajouter du fix de MSS, qui est quand même une verrue assez immonde ! Diminuer la MTU devrait très bien permettre au routeur ayant l'interface VPN de fragmenter comme il faut, pour les paquets qui lui arrivent à forwarder dans le tunnel. Après, il faut faire gaffe que ça marche également dans l'autre sens, à l'autre bout. Bref, sans plus de détail sur ton setup et la description exacte de tes problèmes, pas facile d'être sûr du problème.

            • [^] # Re: ICMP comme d'hab

              Posté par (page perso) . Évalué à 2 (+0/-0).

              Sans fix MSS c'est 500ms par paquet. Avec fix MSS c'est 250ms. Donc je considére que c'est une solution + propre (ne pas envoyer une MSS incorrecte).

              Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

              • [^] # Re: ICMP comme d'hab

                Posté par . Évalué à 2 (+0/-0).

                Tu n'as toujours pas compris… ou alors il y a quelque-chose que je ne saisis pas, mais vu que tu as ajouté zéro précision sur ton cas…

                Tu me dis, si je comprends bien, que tu as un lien avec une très grande latence, et que tu souhaiterais que tes extrémités discutent avec des paquets de taille adaptée à la taille réduite du tunnel. Oui ? Le MSS est un hack qui modifie en vol les SYN TCP afin que les extrémités s'adaptent à cette taille. Ça marche en TCP seulement.

                Moi au début je croyais que tu parlais uniquement de problème de passage tout court de paquet, pas de problème de perf. Faire fragmenter le routeur qui gère le VPN est la manière « classique » de régler le problème de non-passage de paquet, modulo qu'il faille vérifier que l'ICMP est correctement routé des deux côtés à l'extérieur du tunnel. Si tu voulais en plus des bonne perfs, tu pourrais te baser sur les réponses ICMP pour dire que les paquets sont trop gros. C'est inclus de base en IPv6, pour v4 le routeur fait par défaut la fragmentation, mais tu pourrais rajouter une règle pour qu'il renvoie à la place à « fragmentation needed ». Et là ça marcherait pour tous les protocoles.

                Après si ton cas d'utilisation principal c'est du Web-only et que tu t'en fous du reste…

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.