1 votes

Comment puis-je résoudre le problème d'IPv6 ne transmettant pas correctement le trafic entre les interfaces?

J'ai deux serveurs OpenSUSE, l'un avec IPv6 et IPv4 tandis que l'autre n'a que des capacités IPv4. Les deux sont connectés avec OpenVPN et peuvent communiquer en utilisant IPv6 à travers le tunnel sans problème.

La configuration est la suivante:

Serveur A (IPv6 et IPv4)
  Il a attribué un sous-réseau IPv6 /64, disons que c'est: 2aFF:FFFF:FFFF:FFFF::/64
  interface ens3:
    2aFF:FFFF:FFFF:FFFF::1/112
    fe80::***/64 (local)
    (J'ai également essayé d'utiliser le masque /64 comme indiqué ci-dessous au lieu du masque /112. Même résultat)
    2aFF:FFFF:FFFF:FFFF::1/64

  interface tun0:
    2aFF:FFFF:FFFF:FFFF::1:1/112
    fe80::***/64 (local)

  Routes:
    ::1 dev lo proto kernel metric 256 pref moyen
    2aFF:FFFF:FFFF:FFFF::/112 dev ens3 proto kernel metric 256 pref moyen
    2aFF:FFFF:FFFF:FFFF::1:0/112 dev tun0 proto kernel metric 256 pref moyen
    fe80::/64 dev ens3 proto kernel metric 256 pref moyen
    fe80::/64 dev tun0 proto kernel metric 256 pref moyen
    default via fe80::1 dev ens3 metric 1024 pref moyen

Serveur B (uniquement IPv4 sur les interfaces non-tun)
  Interface eno1:
    fe80::***/64 (local)
  Interface tun0:
    2aFF:FFFF:FFFF:FFFF::1:8000/112
    fe80::***/64 (local)

  routes (ip -6 route):
    ::1 dev lo proto kernel metric 256 pref moyen
    2aFF:FFFF:FFFF:FFFF::1:0/112 dev tun0 proto kernel metric 256 pref moyen
    fe80::/64 dev eno1 proto kernel metric 100 pref moyen
    fe80::/64 dev tun0 proto kernel metric 256 pref moyen
    default dev tun0 metric 1024 pref moyen

    (En outre, définir explicitement l'IP de la route. Cela donne le même résultat)
    default via 2aFF:FFFF:FFFF:FFFF::1:1 dev tun0 metric 1024 pref moyen

Le transfert sur IPv6 est apparemment activé selon sysctl:

# sudo sysctl net.ipv6.conf.all.forwarding
net.ipv6.conf.all.forwarding = 1
# sudo sysctl net.ipv6.conf.ens3.forwarding
net.ipv6.conf.ens3.forwarding = 1

Avec cette configuration, je peux, depuis le serveur B, pinguer et me connecter à 2aFF:FFFF:FFFF:FFFF::1:1 (adresse tun0 sur le serveur A) donc le tunnel VPN fonctionne; Et je peux également pinguer et me connecter à 2aFF:FFFF:FFFF:FFFF::1 (adresse ens3 sur le serveur A) mais si j'essaie de me connecter à une autre adresse IPv6 (par exemple wget -6 google.com) cela fonctionnera seulement depuis le serveur A mais pas depuis le serveur B.

Le traceroute depuis B montre des étoiles après le premier saut, comme si les routes étaient incorrectes.

1  2aFF:FFFF:FFFF:FFFF::1:1 (2aFF:FFFF:FFFF:FFFF::1:1)  30.739 ms  30.755 ms  30.758 ms
2  * * *
[...]
30 * * *

Comment pourrais-je résoudre ce problème de connectivité IPv6?

2voto

Daniel B Points 52129

Vous avez besoin de proxy_ndp. Vous avez actuellement la configuration IPv6 suivante :

  • Routeur externe (que vous ne contrôlez pas) : Autres choses, [2001:0DB8::1]/64 sur eth0
  • Serveur A : [2001:0DB8::2]/112 sur eth0, [2001:0DB8::1:1]/112 sur tun0
  • Serveur B : [2001:0DB8::1:2]/112 sur tun0, autres choses

Vous pouvez tout de suite voir le problème : Les appareils ne sont pas d'accord sur la taille du sous-réseau. Le routeur externe attend que tout [2001:0DB8::0]/64 soit directement accessible via eth0. S'il essaie d'atteindre un hôte qui fait accidentellement partie de [2001:0DB8::1:0]/112, il ne recevra jamais de réponse à ses requêtes de protocole de découverte de voisins, car l'hôte n'est pas sur le réseau local.

C'est là qu'intervient proxy_ndp : Cela fera en sorte que le serveur A agisse en tant que proxy pour les requêtes NDP vers des hôtes spécifiques, que vous devez ajouter manuellement :

sysctl -w net.ipv6.conf.all.proxy_ndp=1
ip -6 neigh add proxy 2001:0DB8::1:2 dev eth0

Ceci indique au PC de répondre aux requêtes NDP pour 2001:0DB8::1:2 qui arrivent sur eth0.

Je crois aussi que vous devez utiliser [2001:0DB8::1]/64 à la fois sur eth0 et sur tun0, mais je ne suis pas entièrement sûr. Cela signifierait bien sûr de devoir ajouter des routes explicites sur le serveur A pour chaque adresse IPv6 en raison de l'ambiguïté.

Une configuration comme celle-ci peut fonctionner, mais je ne la recommande pas vraiment. Utilisez simplement le NAT IPv6 et l'adressage local unique sur le réseau VPN. Oui, le NAT était censé disparaître. Non, il est là pour rester. :-)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X