Erreur de routage en IPv6 au travers d'un OpenVPN

Bonjour,

Voici la configuration OpenVPN de mon dédié (Debian 10) :

proto udp6
dev nut2lookout
dev-type tun
port 11000
ifconfig 10.255.255.1 10.255.255.2
route 10.255.1.0 255.255.255.0
route 10.255.2.0 255.255.255.0
tun-ipv6
ifconfig-ipv6 2001:bc8:3335:ff00:: 2001:bc8:3335:ff00::1
route-ipv6 2a01:e0a:12c:3941::/64
route-ipv6 2a01:e0a:12c:3942::/64
<secret>
clef secrète super sécurisée
</secret>

Et de mon routeur chez moi (Raspbian 10) :

remote 2001:bc8:6005:1c:208:a2ff:fe0c:686c
port 11000
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
dev lookout2nut
dev-type tun
tun-ipv6

ifconfig 10.255.255.2 10.255.255.1
ifconfig-ipv6 2001:bc8:3335:ff00::1 2001:bc8:3335:ff00::

# almtesh.net
route 10.255.0.0 255.255.255.0
route 10.255.255.0 255.255.255.0
route-ipv6 2001:bc8:3335::/48

<secret>
clef secrète super sécurisée
</secret>

Le soucis, c’est que mon routeur chez moi, bien qu’ayant cette table de routage :

::1 dev lo proto kernel metric 256 pref medium
2001:bc8:3335:ff00::/64 dev lookout2nut proto kernel metric 256 pref medium
2001:bc8:3335::/48 dev lookout2nut metric 1024 pref medium
2a01:e0a:12c:3940::/64 dev eth0 proto kernel metric 256 pref medium
2a01:e0a:12c:3941::/64 dev eth1 proto kernel metric 256 pref medium
2a01:e0a:12c:3942::/64 dev wlan0 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth1 proto kernel metric 256 pref medium
fe80::/64 dev wlan0 proto kernel metric 256 pref medium
fe80::/64 dev lookout2nut proto kernel metric 256 pref medium
default via fe80::8c97:eaff:fe31:d570 dev eth0 proto ra metric 1024 expires 1736sec hoplimit 64 pref medium

Me donne ça comme retour de commande :

┌ (gilles@Lookout + 0) (11/11/20 - 7:44:28) (0.06 - 0%) (~)
└% ip r get 2001:bc8:3335:ff00::   
anycast 2001:bc8:3335:ff00:: from :: dev lo table local proto kernel src 2001:bc8:3335:ff00::1 metric 0 pref medium

Le problème, c’est que 2001:bc8:3335:ff00:: est l’adresse de mon dédié, ce routeur n’est pas censé utiliser l’interface lo pour joindre cette adresse. je ne vois pas où je ne me suis trompée.

Pourtant c’est écrit en toutes lettres : 2001:bc8:3335:ff00:: est considérée comme une adresse de type anycast. La première adresse d’un réseau IPv6 est réservée comme adresse anycast désignant n’importe quel routeur (généralement le plus proche) directement connecté au réseau en question. Elle ne doit pas être utilisée comme adresse unicast affectée à une interface.

Heu, justement, je crois que c’est ça que je n’ai pas compris. Je viens de consulter la page anycast de Wikipedia et ça ne m’a pas aidé plus.
En fait, je ne comprend pas pourquoi je ne pourrais pas utiliser 2001:bc8:3335:ff00:: alors que je peux utiliser 2001:bc8:3335::, 2a01:e0a:12c:3940::, 2a01:e0a:12c:3941:: et 2a01:e0a:12c:3942:: sans aucun problème. Ou peut-être que je m’en sers, mais que je vois pas les problème que ça pose…

Qu’entends-tu par « utiliser » ?

Ces adresses sont définie comme étant celles d’une interface sur mon routeur chez moi ou sur mon serveur dédié et du trafic réseau utilise cette adresse comme source ou destination.
Par exemple, j’ai un ordinateur sur mon réseau local et je peux faire du ping dans les deux sens.
Depuis le routeur :

┌ (gilles@Lookout + 1) (11/11/20 - 10:32:29) (0.05 - 0%) (~)
└% ping -c 1 thorn.lan.home.almtesh.net
PING thorn.lan.home.almtesh.net(Thorn.lan.home.almtesh.net (2a01:e0a:12c:3941::2)) 56 data bytes
64 bytes from Thorn.lan.home.almtesh.net (2a01:e0a:12c:3941::2): icmp_seq=1 ttl=64 time=0.490 ms

--- thorn.lan.home.almtesh.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.490/0.490/0.490/0.000 ms
┌ (gilles@Lookout + 0) (11/11/20 - 10:32:37) (0.04 - 0%) (~)
└% ip r get 2a01:e0a:12c:3941::2
2a01:e0a:12c:3941::2 from :: dev eth1 proto kernel src 2a01:e0a:12c:3941:: metric 256 pref medium

et depuis thorn

┌ (gilles@Thorn + 0) (11/11/20 - 10:33:36) (0.54 - 0%) (~)
└% ping -c 1 2a01:e0a:12c:3941::
PING 2a01:e0a:12c:3941::(2a01:e0a:12c:3941::) 56 data bytes
64 bytes from 2a01:e0a:12c:3941::: icmp_seq=1 ttl=64 time=0.451 ms

--- 2a01:e0a:12c:3941:: ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.451/0.451/0.451/0.000 ms
┌ (gilles@Thorn + 0) (11/11/20 - 10:33:40) (0.50 - 0%) (~)
└% ip r get 2a01:e0a:12c:3941::
2a01:e0a:12c:3941:: from :: dev enp8s0 proto ra src 2a01:e0a:12c:3941::2 metric 100 pref medium

Si thorn n’est pas un routeur IPv6, il n’est pas concerné par la gestion particulière des adresses anycast de routeur IPv6.

Je n’ai pas compris, mais, en gros, si je veux résoudre mon problème, il faut que je change l’adresse IP de mon dédié dans l’OpenVPN. Il faut que je mette 2001:bc8:3335:ff00::2 à la place de 2001:bc8:3335:ff00:: par exemple ?

Oui.
La première adresse d’un réseau est réservée comme adresse de routeur anycast.
Il ne faut pas attribuer une adresse de routeur anycast à une interface.

Bon, ça fonctionne maintenant, merci @PascalHambourg.