Ce n’est pas Free qui qui contruit l’adresse IPv6 à partir du préfixe et de l’adresse MAC, c’est l’hôte client lui-même, […]n’a rien à voir avec les requêtes DHCPv6, d’ailleurs dans tes captures de paquets tu ne vois aucune réponse de la box, normalement. Les annonces et sollications de routeur font partir du protocole NDP (Neighbour Discovery Protocol) qui est un sous-ensemble d’ICMPv6. C’est pourquoi l’autoconf ne fonctionne pas si on bloque les paquets ICMPv6.
[/quote]J’ai compris. J’ignorais complètement ce mécanisme (plutôt astucieux je trouve). Ça explique beaucoup de choses.[quote]
Ce à quoi tu dois t’intéresser, ce sont les messages ICMPv6 de type Router Advertisement et Router Solicitation, suivre leur trajet sur les différentes interfaces traversées et voir où ça coince exactement dans le cas du wifi.
[/quote]
passerelle=cerbere (pont tap0+eth1+eth0)
point d’accès=hercule (pont eth0+wlan0, variables bridge* à 0, pas de règles iptables)
C’est assez étonnant, j’ai tracé tout ce qui n’est pas UDP et TCP sur les machines. Moralité les paquets icmp6 sont présents sur eth0, wlan0 (et br0) de la machine qui sert de point d’accès (hercule, tcpdump peut tracer un seul port d’entrée d’un pont, j’ai tout mis pour vérifier), par contre sur l’interface wlan0 de mon portable, aucun de ces paquets n’apparait.
Plus étonnant, si je met une adresse IPV6 à la main sur l’interface wlan0 du portable et je «ping6» ma passerelle, là ça passe bien entre les différentes machines pendant un laps de temps puis soudain ça ne passe plus sans que je fasse quoi que ce soit:
Voilà ce que ça donne sur le portable (6262 = hercule, 11f6 = cerbere, 13 = portos, j’ai modifié des octets de la plage IPV6), en gros au début hercule et cerbere répondent, tant que je fais des pings à partir de cerbere vers portos, les pings vers cerbere répondent toujours, par contre hercule se met à ne plus répondre. J’arrête les pings à partir de cerbere et là aucune des machines ne répond à l’autre:
[code]root@portos:/home/francois# ifconfig wlan0 inet6 add 2a01:a:b:c:d:e:fe04:13/64
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe07:6262
PING 2a01:a:b:c:d:e:fe07:6262(2a01:a:b:c:d:e:fe07:6262) 56 data bytes
From 2a01:a:b:c:d:e:fe04:13 icmp_seq=1 Destination unreachable: Address unreachable
From 2a01:a:b:c:d:e:fe04:13 icmp_seq=2 Destination unreachable: Address unreachable
From 2a01:a:b:c:d:e:fe04:13 icmp_seq=3 Destination unreachable: Address unreachable
^C
— 2a01:a:b:c:d:e:fe07:6262 ping statistics —
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4000ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe07:6d62
PING 2a01:a:b:c:d:e:fe07:6d62(2a01:a:b:c:d:e:fe07:6d62) 56 data bytes
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=1 ttl=64 time=3.38 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=2 ttl=64 time=1.27 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=3 ttl=64 time=1.19 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=4 ttl=64 time=1.19 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=5 ttl=64 time=1.21 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=6 ttl=64 time=3.21 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=7 ttl=255 time=1.32 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=8 ttl=255 time=1.22 ms
^C
— 2a01:a:b:c:d:e:fe07:6d62 ping statistics —
8 packets transmitted, 8 received, 0% packet loss, time 7008ms
rtt min/avg/max/mdev = 1.195/1.752/3.384/0.895 ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe07:6d62
PING 2a01:a:b:c:d:e:fe07:6d62(2a01:a:b:c:d:e:fe07:6d62) 56 data bytes
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=1 ttl=255 time=1.98 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=2 ttl=255 time=1.28 ms
^C
— 2a01:a:b:c:d:e:fe07:6d62 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.288/1.637/1.987/0.351 ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe04:11f6
PING 2a01:a:b:c:d:e:fe04:11f6(2a01:a:b:c:d:e:fe04:11f6) 56 data bytes
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=1 ttl=64 time=4.97 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=2 ttl=64 time=1.66 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=3 ttl=64 time=1.55 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=4 ttl=64 time=1.45 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=5 ttl=64 time=1.47 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=6 ttl=64 time=1.44 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=7 ttl=64 time=1.98 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=8 ttl=64 time=14.4 ms
^C
— 2a01:a:b:c:d:e:fe04:11f6 ping statistics —
8 packets transmitted, 8 received, 0% packet loss, time 7010ms
rtt min/avg/max/mdev = 1.440/3.624/14.446/4.241 ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe07:6d62
PING 2a01:a:b:c:d:e:fe07:6d62(2a01:a:b:c:d:e:fe07:6d62) 56 data bytes
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=1 ttl=255 time=1.23 ms
64 bytes from 2a01:a:b:c:d:e:fe07:6d62: icmp_seq=2 ttl=255 time=1.27 ms
^C
— 2a01:a:b:c:d:e:fe07:6d62 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.234/1.252/1.270/0.018 ms
root@portos:/home/francois#
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe07:6d62
PING 2a01:a:b:c:d:e:fe07:6d62(2a01:a:b:c:d:e:fe07:6d62) 56 data bytes
^C
— 2a01:a:b:c:d:e:fe07:6d62 ping statistics —
9 packets transmitted, 0 received, 100% packet loss, time 8062ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe04:11f6
PING 2a01:a:b:c:d:e:fe04:11f6(2a01:a:b:c:d:e:fe04:11f6) 56 data bytes
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=1 ttl=64 time=2.19 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=2 ttl=64 time=1.53 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=3 ttl=64 time=3.04 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=4 ttl=64 time=1.30 ms
^C
— 2a01:a:b:c:d:e:fe04:11f6 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 1.306/2.020/3.041/0.674 ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe07:6d62
PING 2a01:a:b:c:d:e:fe07:6d62(2a01:a:b:c:d:e:fe07:6d62) 56 data bytes
^C
— 2a01:a:b:c:d:e:fe07:6d62 ping statistics —
9 packets transmitted, 0 received, 100% packet loss, time 8062ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe04:11f6
PING 2a01:a:b:c:d:e:fe04:11f6(2a01:a:b:c:d:e:fe04:11f6) 56 data bytes
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=1 ttl=64 time=1.39 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=2 ttl=64 time=1.35 ms
^C
— 2a01:a:b:c:d:e:fe04:11f6 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.358/1.378/1.399/0.042 ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe04:11f6
PING 2a01:a:b:c:d:e:fe04:11f6(2a01:a:b:c:d:e:fe04:11f6) 56 data bytes
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=1 ttl=64 time=1.91 ms
64 bytes from 2a01:a:b:c:d:e:fe04:11f6: icmp_seq=2 ttl=64 time=4.52 ms
^C
— 2a01:a:b:c:d:e:fe04:11f6 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.913/3.221/4.529/1.308 ms
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe07:6d62
PING 2a01:a:b:c:d:e:fe07:6d62(2a01:a:b:c:d:e:fe07:6d62) 56 data bytes
^C
— 2a01:a:b:c:d:e:fe07:6d62 ping statistics —
14 packets transmitted, 0 received, 100% packet loss, time 1007ms
[Là j’attends 4-5 mn]
root@portos:/home/francois# ping6 2a01:a:b:c:d:e:fe04:11f6
PING 2a01:a:b:c:d:e:fe04:11f6(2a01:a:b:c:d:e:fe04:11f6) 56 data bytes
^C
— 2a01:a:b:c:d:e:fe04:11f6 ping statistics —
7 packets transmitted, 0 received, 100% packet loss, time 5999ms
root@portos:/home/francois#
[/code]
Sur hercule puis cerbere:
[code]francois@hercule:~$ ping6 2a01:a:b:c:d:e:fe04:13
PING 2a01:a:b:c:d:e:fe04:13(2a01:a:b:c:d:e:fe04:13) 56 data bytes
From 2a01:a:b:c:d:e:fe07:6d62 icmp_seq=1 Destination unreachable: Address unreachable
From 2a01:a:b:c:d:e:fe07:6d62 icmp_seq=2 Destination unreachable: Address unreachable
From 2a01:a:b:c:d:e:fe07:6d62 icmp_seq=5 Destination unreachable: Address unreachable
From 2a01:a:b:c:d:e:fe07:6d62 icmp_seq=6 Destination unreachable: Address unreachable
From 2a01:a:b:c:d:e:fe07:6d62 icmp_seq=7 Destination unreachable: Address unreachable
^C
— 2a01:a:b:c:d:e:fe04:13 ping statistics —
10 packets transmitted, 0 received, +5 errors, 100% packet loss, time 8999ms
francois@hercule:~$ logout
Connection to hercule closed.
francois@cerbere:~$ ping6 2a01:a:b:c:d:e:fe04:13
PING 2a01:a:b:c:d:e:fe04:13(2a01:a:b:c:d:e:fe04:13) 56 data bytes
64 bytes from 2a01:a:b:c:d:e:fe04:13: icmp_seq=1 ttl=64 time=2.10 ms
64 bytes from 2a01:a:b:c:d:e:fe04:13: icmp_seq=2 ttl=64 time=1.96 ms
64 bytes from 2a01:a:b:c:d:e:fe04:13: icmp_seq=3 ttl=64 time=2.06 ms
^C
— 2a01:a:b:c:d:e:fe04:13 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2010ms
rtt min/avg/max/mdev = 1.964/2.047/2.108/0.060 ms
francois@cerbere:~$ ping6 2a01:a:b:c:d:e:fe04:13
PING 2a01:a:b:c:d:e:fe04:13(2a01:a:b:c:d:e:fe04:13) 56 data bytes
From 2a01:a:b:c:d:e:fe07:6d62 icmp_seq=1 Destination unreachable: Address unreachable
From 2a01:a:b:c:d:e:fe07:6d62 icmp_seq=2 Destination unreachable: Address unreachable
From 2a01:a:b:c:d:e:fe07:6d62 icmp_seq=5 Destination unreachable: Address unreachable
…
[/code]
Tout se passe comme si cerbere et hercule savaient pendant un cours instant où est portos puis oublient sa localisation sauf si on leur fait faire un ping. Cela peut s’expliquer par le fait suivant: quand j’attribue à la main une adresse ipv6 à wlan0 de portos (le portable), cerbere et hercule reçoivent immédiatement les paquets
18:45:03.166566 IP6 :: > ff02::1:ff04:13: ICMP6, neighbor solicitation, who has 2a01:a:b:c:d:e:fe04:13, length 24
18:45:03.454562 IP6 fe80::207:cbff:fe48:3855 > ff02::1:ff04:11f6: ICMP6, neighbor solicitation, who has 2a01:a:b:c:d:e:fe04:11f6, length 32
18:45:03.454751 IP6 2a01:a:b:c:d:e:fe04:11f6 > fe80::207:cbff:fe48:3855: ICMP6, neighbor advertisement, tgt is 2a01:a:b:c:d:e:fe04:11f6, length 32
qui doivent temporairement mettre portos/IPV6 dans leurs tables et donc la rendre accessible pendant quelque temps.
Mais tout ça c’est des suppositions, j’avoue que ça me laisse perplexe, je ne comprends pas pourquoi les paquets «ICMP6, neighbor …» ne passent pas le WIFI. Car c’est finalement ce qui ressort de tout ça: tout passe le WIFI sauf ces paquets ce qui me parait (à peu près) expliquer le tout. Par ne pas passer le WIFI j’entends apparait sur wlan0 du point d’accès et pas sur wlan0 de la machine connectée.
[Si tu lis encore ce message, tu as droit à un whisky, faisant les manipulations en même temps que la rédaction du message, je ne suis pas sûr de sa clarté, courage c’est fini!]
[quote]
Concernant tes règles ip6tables sur le routeur-pont (ce qui signifie que tu as laissé bridge-nf-call-ip6tables=1 je suppose),[/quote]
oui
donc ce serait --physdev-in eth0 ou --physdev-in tap0. Je ne connaissais pas…
Oui, c’est transitoire, pour le moment j’essaye plutôt de comprendre le fonctionnement de l’IPV6.