Auteur Sujet: Virtualbox : L'IPv6 ne fonctionne pas en wifi  (Lu 4268 fois)

0 Membres et 1 Invité sur ce sujet

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #12 le: 07 décembre 2022 à 08:54:51 »
Okay. hmmm... quand tu captures avec wireshark, tu captures bien uniquement sur l'interface physique (wlo0 ou enp2s0) ?
J'enfonce très certainement des portes ouvertes, mais cette duplication de paquets ne me dit rien de bon : si tu as bien deux réseaux séparés, tu ne devrais pas voir de duplication, et surtout, tu ne devrais jamais voir les MAC source des VM sur la patte upstream du pfSense...

J'ai l'impression que ces deux bridges ne sont pas étanches, et que tes soucis viennent de là.
As-tu moyen de faire une capture externe au PC également? Par exemple, sur ton routeur physique ? Pour s'assurer que les paquets sont bien dupliqués sur le réseau et que ce n'est pas qu'une vue de l'esprit de Wireshark.
Si les paquets sont effectivement dupliqués, tu envoies 2x plus de traffic sur le LAN/WAN que tu ne devrais. Ca ne va pas être top si c'est le cas.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #13 le: 07 décembre 2022 à 13:47:44 »
Pas de duplication côté routeur, ça doit donc être wireshark qui a un peu de mal.

Okay. hmmm... quand tu captures avec wireshark, tu captures bien uniquement sur l'interface physique (wlo0 ou enp2s0) ?

Yep

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #14 le: 22 mars 2023 à 02:41:59 »
Après avoir lâché l'affaire, je viens d'avoir une illumination. Étant donné que VB ne veut toujours rien savoir :  j'utilise l'interface host-only de vmware qui s'installe comme une interface classique et apparaît donc dans la liste des interfaces par pont sur virtualbox et magie, ça marche !  8)
 
Le seul soucis c'est que les deux se font concurrence sur l’utilisation de la virtualisation, du coup, les VM virtualbox crashent de temps en temps (bizarrement que Linux pour le moment, windows ne bronche pas).

Il faudrait pouvoir désactiver la virtualisation sur vmware, mais je n'ai pas trouvé comment faire.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #15 le: 16 avril 2023 à 01:52:26 »
Bon, je change de tactique. La cohabitation vmware/virtualbox, ça va pas du tout.

Je me suis rappelé du réseau de milkywan à base de VxLAN, je me suis dit que j'allais faire pareil. Montage d'un tunnel entre une VM debian vers mon rapberry pi qui me sert de DHCP/DNS/serveur wireguard... et qui ressort sur le LAN. En plus j'ai déjà un bout de conf tout prêt d'autres essais. J'ai donc tenté le coup avec cette architecture :

Routeur principal --- LAN --- AP wifi - - - PC portable (hôte) -bridge- VM debian (VTEP) -bridge- /réseau interne/ --- pfsense
                                    |
                           Raspberry (bridge vxlan/eth0)
 
Sauf, qu'il y a un couac. Car je bridge eth0 sur le Rpi qui est l'unique interface par où tout sort. Ça doit faire une boucle (je suppose) et la connexion tombe.

J'ai fini par créer un VLAN supplémentaire bridgé avec le vxlan, que je fais remonter jusqu'à mon routeur principal et là fonctionne  8)

Par contre, j'ai un problème de MTU. Je suis obligé de la baisser à 1450 sur les VM, sinon le trafic ne passe pas en dehors des requêtes DNS et ICMP. Je n'arrive pas à trouver comment la faire s'adapter toute seule (ou que la debian fragmente) car de que j'ai lu la fragementation n'est pas supportée ni le PMTU car L2 et pas L3. Bizarrement, lorsque je l'avais essayé sur mon tunnel WG je n'ai rien fait de particulier (si ce n'est adapter la MTU du vxlan lui-même) et ça fonctionnait parfaitement je pensais donc que ça serait pareil ici.

Elle est à 1450 par défaut (qui est à priori la valeur en v4), mais visiblement ça ne suffit pas.  Ça fait plusieurs heures que je cherche des infos claires, sans succès.

La conf :

Rapspberry :
auto vxlan10
iface vxlan10 inet manual
        pre-up ip link add vxlan10 type vxlan id 10 dev eth0 remote 192.168.1.164 dstport 4789 || true
        up ip link set vxlan10 up
        down ip link set vxlan10 down
        post-down ip link del vxlan10 || true

auto br0
iface br0 inet manual
   bridge_ports eth0.40 vxlan10
5: eth0.40@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
    link/ether b8:27:eb:ea:xx:xx brd ff:ff:ff:ff:ff:ff
8: vxlan10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br0 state UNKNOWN group default qlen 1000
    link/ether 3e:6b:d2:c5:xx:xx brd ff:ff:ff:ff:ff:ff
9: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
    link/ether 3e:6b:d2:c5:67:73 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::3c6b:d2ff:fec5:6773/64 scope link
       valid_lft forever preferred_lft forever


VM debian  :
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
#iface enp0s3 inet dhcp
# This is an autoconfigured IPv6 interface
iface enp0s3 inet6 static
address 2a01:xx:xx:xx::164
netmask 64
gateway fe80::1a1e:78ff:xx:xx

auto enp0s8
iface enp0s8 inet manual

iface enp0s3 inet static
address 192.168.1.164
netmask  255.255.255.0
gateway 192.168.1.1

auto vxlan10
iface vxlan10 inet manual
        pre-up ip link add vxlan10 type vxlan id 10 dev enp0s3 remote 192.168.1.10 dstport 4789 || true
        up ip link set vxlan10 up
        down ip link set vxlan10 down
        post-down ip link del vxlan10 || true

auto br0
iface br0 inet static
   bridge_ports enp0s8 vxlan10
address 192.168.10.254
netmask 255.255.255.0


(enp0s8 est l'interface attachée au réseau interne)

root@debian:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:88:13:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.164/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 2a01:cb14:xx:xx::164/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe88:13f5/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 08:00:27:0f:c7:30 brd ff:ff:ff:ff:ff:ff
4: vxlan10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br0 state UNKNOWN group default qlen 1000
    link/ether 36:8f:1f:51:88:ad brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
    link/ether de:4a:81:2a:13:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.254/24 brd 192.168.10.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::dc4a:81ff:fe2a:13e5/64 scope link
       valid_lft forever preferred_lft forever

Merci

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #16 le: 17 avril 2023 à 01:59:50 »
Bon, j'ai essayé d'augmenter la MTU pour que tout rentre, sauf que pas de bol, le chip du rasp ne supporte pas plus de 1500... Je suis donc condamné à faire avec.

Après recherche, j'ai vu qu'on pouvait faire du MSS clamping sur un bridge. J'ai donc essayé et ça fonctionne enfin sans toucher la MTU :

-charger le module : br_netfliter
-ajouter la règle iptables : iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1410

Par contre, il faudra qu'on m'explique : je n'ai pas touché à l'IPv6, et celui-ci semble fonctionner sans soucis avec un MSS de... 1440. Comment est-ce possible ?

Si j'augmente à 1420 en IPv4, j'ai de nouveau des soucis, il faut impérativement 1410 ce qui est logique si on enlève les 50 octets du VxLAN. J'ai cru au début que c'était un hasard car en fait je recevais en réponse un MSS bien en dessous de 1440 de certains serveurs, mais j'ai testé avec le forum ainsi que la weathermap de mylkywan qui répondent bien 1440 et ça fonctionne sans problème non plus.

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #17 le: 17 avril 2023 à 09:55:35 »
Bon, j'ai essayé d'augmenter la MTU pour que tout rentre, sauf que pas de bol, le chip du rasp ne supporte pas plus de 1500... Je suis donc condamné à faire avec.
C'est un raspi 4? À mon sens le chip le supporte mais le driver n'a pas ce qu'il faut pour changer la MTU du hardware.

Après recherche, j'ai vu qu'on pouvait faire du MSS clamping sur un bridge. J'ai donc essayé et ça fonctionne enfin sans toucher la MTU :

-charger le module : br_netfliter
-ajouter la règle iptables : iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1410
Tu es sur que tu as besoin de br_netfilter ? J'utilise nftables de nos jours, je sais plus trop.
Tu dois pouvoir limiter ta règle au traffic venant de l'interface vxlan, sans quoi tout le traffic forwardé par le raspi aura une MSS réduite.

Par contre, il faudra qu'on m'explique : je n'ai pas touché à l'IPv6, et celui-ci semble fonctionner sans soucis avec un MSS de... 1440. Comment est-ce possible ?

Seuls les hotes fragmentent en IPv6, les routeurs ne le font pas.
Lorsqu'un routeur voit passer un paquet trop gros pour la MTU de l'interface sortante, il le jette et renvoie un ICMP packet too big à la source.
La source enregistre une MTU plus faible dans son route cache et ré-émet les segments TCP avec une MSS réduite. C'est ce qu'on appelle PMTUd (Path MTU Discovery), mais il me semble que tu connais déjà et que je radote :-)

Donc pas besoin de hack de MSS en IPv6 (pour peu que les ICMP packet too big ne soient pas filtrés, et avant que tu demandes, si, si, en 2023, les DSI de grosses boites maintiennent dûr comme fer qu'il faut bloquer ICMP car "on se fait hacker avec", mais c'est de plus en plus rare...).

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #18 le: 17 avril 2023 à 16:39:50 »
C'est un raspi 4? À mon sens le chip le supporte mais le driver n'a pas ce qu'il faut pour changer la MTU du hardware.

Non, un "vieux" mais encore vaiillant Raspi 2B. Vu le prix du 4 en ce moment (200€ sur amazon), je suis pas prêt de le remplacer... Même le mien se vend encore 80 balles, honteux.

Tu es sur que tu as besoin de br_netfilter ? J'utilise nftables de nos jours, je sais plus trop.
Tu dois pouvoir limiter ta règle au traffic venant de l'interface vxlan, sans quoi tout le traffic forwardé par le raspi aura une MSS réduite.

Oui j'ai vu passer un truc à base de nftables qui se passe de br_filter mais là, je n'ai qu'une seule règle. Pas très grave.

table bridge t
delete table bridge t

table bridge t {
    chain c {
        type filter hook forward priority filter; policy accept;
        oifname vxlan0 tcp flags syn tcp option maxseg size set 1400
    }
}

Pour la limitation, oui faut que j'affine genre iptables -A FORWARD -i br0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1410


Seuls les hotes fragmentent en IPv6, les routeurs ne le font pas.
Lorsqu'un routeur voit passer un paquet trop gros pour la MTU de l'interface sortante, il le jette et renvoie un ICMP packet too big à la source.
La source enregistre une MTU plus faible dans son route cache et ré-émet les segments TCP avec une MSS réduite. C'est ce qu'on appelle PMTUd (Path MTU Discovery), mais il me semble que tu connais déjà et que je radote :-)

Ah oui c'est vrai que les routeurs ne fragmentent pas (je l'ai lu hier en plus  ::)), j'ai donc bien des packet too big.
root@LEDE:~# tcpdump -i dsl0 icmp6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on dsl0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:06:24.501731 IP6 2a01:cb14:xxxx:xxxx:9c6e:bf99:e8b7:6099 > fr.archive.ubuntu.com: ICMP6, packet too big, mtu 1450, length 1240
14:06:24.502161 IP6 2a01:cb14:xxxx:xxxx:9c6e:bf99:e8b7:6099 > fr.archive.ubuntu.com: ICMP6, packet too big, mtu 1450, length 1240
14:06:50.641458 IP6 fe80::ba0:bab > fe80::46a6:1eff:xxxx:xxxx: ICMP6, neighbor solicitation, who has fe80::46a6:1eff:xxxx:xxxx, length 32
14:06:50.641795 IP6 fe80::46a6:1eff:xxxx:xxxx > fe80::ba0:bab: ICMP6, neighbor advertisement, tgt is fe80::46a6:1eff:xxxx:xxxx, length 24
14:10:47.739630 IP6 fe80::ba0:bab > fe80::46a6:1eff:xxxx:xxxx: ICMP6, router advertisement, length 32
14:11:13.939693 IP6 2a01:cb14:xxxx:xxxx:9c6e:bf99:e8b7:6099 > fr.archive.ubuntu.com: ICMP6, packet too big, mtu 1450, length 1240
14:11:13.942018 IP6 2a01:cb14:xxxx:xxxx:9c6e:bf99:e8b7:6099 > fr.archive.ubuntu.com: ICMP6, packet too big, mtu 1450, length 1240
14:11:30.395438 IP6 2a01:cb14:xxxx:xxxx:9c6e:bf99:e8b7:6099 > hubble.milkywan.cloud: ICMP6, packet too big, mtu 1450, length 1240
14:11:30.396301 IP6 2a01:cb14:xxxx:xxxx:9c6e:bf99:e8b7:6099 > hubble.milkywan.cloud: ICMP6, packet too big, mtu 1450, length 1240

Donc pas besoin de hack de MSS en IPv6 (pour peu que les ICMP packet too big ne soient pas filtrés, et avant que tu demandes, si, si, en 2023, les DSI de grosses boites maintiennent dûr comme fer qu'il faut bloquer ICMP car "on se fait hacker avec", mais c'est de plus en plus rare...).

J'avoue que ça m'a fait sourire quand j'ai lu ça.

J'aimerais bien faire marcher PMTUd en v4, mais ça à l'air de coincer... ou il me manque des règles sur mon OWRT ? Sachant que tout est openbar sur le rasp et la debian.

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #19 le: 18 avril 2023 à 10:22:19 »
J'aimerais bien faire marcher PMTUd en v4, mais ça à l'air de coincer... ou il me manque des règles sur mon OWRT ? Sachant que tout est openbar sur le rasp et la debian.

Oublie PMTUd en IPv4... entre les équipements qui fragmentent même lorsque le flag DF est à 1 (rare, mais ca existe, surtout sur les firewalls), les routeurs qui n'envoient jamais les ICMP "fragmentation needed and DF was set" (très courant), les NAT qui ré-écrivent les options TCP et ignorent les ICMP... ca n'a aucune chance de fonctionner en pratique.

Il y a toujours la méthode RFC 4821, mais comme elle est désactivée par défaut sur tous les OS, c'est d'efficacité limitée.

Si tu veux garder ton architecture à base de tunnels VxLAN, je pense que faire du MSS clamping pour TCPv4 et laisser PMTUd se débrouiller en IPv6 doit le faire.

Hugues

  • AS2027 MilkyWan
  • Modérateur
  • *
  • Messages: 12 446
  • Lyon (69) / St-Bernard (01)
    • Twitter
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #20 le: 18 avril 2023 à 10:26:40 »
Ouais alors y'a quand même des crétins comme Microsoft Azure qui bloquent ICMPv6 et qui empêchent PMTUd de fonctionner...

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #21 le: 18 avril 2023 à 10:29:24 »
Heh, comment dire, IPv6 et Azure... hm, même AWS fait mieux de nos jours.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 371
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #22 le: 18 avril 2023 à 14:19:57 »
Ouais alors y'a quand même des crétins comme Microsoft Azure qui bloquent ICMPv6 et qui empêchent PMTUd de fonctionner...

Ah ben bravo Microsoft, une fois de plus   ::)

Enfin, c'est pas trop étonnant quand on voit l'IPv6 sur Windows... Par ex depuis 11, le RDNSS est ignoré, sauf si on est en v6 only... Il faut du DHCPv6 pour avoir DNS v4 + v6. Ou encore cette manie d'envoyer des solicit alors qu'on a rien demandé et qui m'oblige à bloquer la distribution d'adresses.

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Virtualbox : L'IPv6 ne fonctionne pas en wifi
« Réponse #23 le: 18 avril 2023 à 14:24:45 »
Par ex depuis 11, le RDNSS est ignoré, sauf si on est en v6 only...

Je sais pas vous, mais moi, j'y vois une invitation à faire du v6-only :-)