9 votes

IPv6 ne fonctionne qu'après avoir envoyé une requête à la passerelle par défaut.

Nous sommes maintenant en 2013 et j'ai pensé qu'il était grand temps d'activer l'IPv6 sur mon serveur. Mais malheureusement, j'ai rencontré quelques problèmes. Pour être honnête, je n'ai que peu d'expérience avec IPv6. J'espère donc que vous pourrez m'aider à résoudre mon "petit" problème.

Une petite remarque : Les adresses suivantes sont obfusquées, ce n'est pas ce que j'ai utilisé dans mes configurations ;)

J'utilise un squeeze Debian (Debian 2.6.32-46) et j'ai obtenu un bloc IPv6 /64 de mon fournisseur : 2a01:4f8:a0:aaaa::/64

J'ai donc changé le /etc/network/interfaces comme suit (ce qui est également la façon dont mon fournisseur le recommande) :

# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   85.10.xxx.zz
  broadcast 85.10.xxx.yy
  netmask   255.255.255.224
  gateway   85.10.xxx.1

iface eth0 inet6 static
  # Main IPv6 Address of the server
  address 2a01:4f8:a0:aaaa::2
  netmask 64
  gateway fe80::1

auto eth0:1
iface eth0:1 inet static
        address 85.10.xxxx.uu
        netmask 255.255.255.224

# default route to access subnet
up route add -net 85.10.xxx.0 netmask 255.255.255.224 gw 85.10.xxx.1 eth0

Après un redémarrage (je suis paresseux et je n'ai pas voulu ajouter tout ce qu'il fallait en utilisant le logiciel route o ip ) mon eth0 ressemble à ceci :

eth0      < first line removed >  
          inet addr:85.10.xxx.zz  Bcast:85.10.xxx.yy  Mask:255.255.255.224
          inet6 addr: 2a01:4f8:a0:aaaa::2/64 Scope:Global
          inet6 addr: fe80::bbbb:cccc:dddd:eeee/64 Scope:Link <--- from MAC address
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24133 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21712 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3464246 (3.3 MiB)  TX bytes:5776451 (5.5 MiB)
          Interrupt:25 Base address:0x2000 

et les routes ip -6 route ressemble à ça :

2a01:4f8:a0:aaaa::/64 dev eth0  metric 1024  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev vboxnet0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
default via fe80::1 dev eth0  metric 1024  mtu 1500 advmss 1440 hoplimit 4294967295

Maintenant, mon problème est que mon IPv6 ne fonctionne pas correctement. Si j'essaie d'envoyer un ping à une adresse IPv6, par exemple ping6 ipv6.google.com. J'obtiens : "Destination inaccessible : Adresse inaccessible"

Ce qui ressemble à ceci dans tcpdump -i eth0 ip6 :

00:29:05.386500 IP6 2a01:4f8:a0:aaaa::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32
00:29:05.390869 IP6 2a01:4f8:a0:bbbb::1 > 2a01:4f8:a0:aaaa::2: ICMP6, neighbor advertisement, tgt is fe80::1, length 32

2a01:4f8:a0:bbbb::1 est d'ailleurs répertorié comme ma passerelle (dans la console d'administration en ligne de mon fournisseur).

Je pense que la raison de tout ceci est l'entrée NDP manquante / l'adresse MAC manquante de l'utilisateur. fe80::1 . Parce que ip -6 neigh me donne :

fe80::1 dev eth0  router FAILED 

Je pense que oui, parce que si je le fais : ping6 -I eth0 fe80::1 J'obtiens une réponse d'écho correcte et l'adresse mac désirée pour mon fe80::1 ainsi qu'une pile IPv6 parfaitement fonctionnelle :

$ip -6 neigh
fe80::1 dev eth0 lladdr ll:mm:nn:oo:pp:qq router REACHABLE

Voici encore une fois la décharge de tcpdump -i eth0 ip6 :

00:30:37.555702 IP6 fe80::bbbb:cccc:dddd:eeee > fe80::1: ICMP6, echo request, seq 1, length 64
00:30:37.560219 IP6 fe80::1 > fe80::bbbb:cccc:dddd:eeee: ICMP6, echo reply, seq 1, length 64

(encore : fe80::bbbb:cccc:dddd:eeee est mon adresse locale de liaison, dérivée de l'adresse MAC)

À partir de ce moment, je peux utiliser IPv6 : je peux faire un ping6 des sites web, je peux me connecter à des services en utilisant IPv6 ou même me connecter à mon serveur via ssh en utilisant IPv6.

Alors, qu'est-ce que je fais de mal ici ? J'ai passé beaucoup de temps à essayer de trouver comment "réparer" ce problème. Je parie qu'il peut être résolu en utilisant deux commandes. C'est d'ailleurs la première fois que je m'occupe d'IPv6 sur un serveur. Veuillez donc me pardonner pour mon inexpérience. J'ai également essayé de modifier certains drapeaux sysctl net.ipv6.*, mais sans succès. Si cela est nécessaire pour la solution, je peux également poster ma configuration ici.

Tous les conseils sont les bienvenus !

Merci beaucoup d'avance !

10voto

J'ai réessayé le problème aujourd'hui, quelques semaines plus tard. Et qu'est-ce que je peux dire, je l'ai résolu. Quelqu'un peut-il m'expliquer pourquoi l'ajout d'un loopback ipv6 a réglé mon problème ? Voici ce que j'ai ajouté à mon /etc/network/interfaces fichier :

iface lo inet6 loopback

Je n'ai aucune idée de pourquoi j'ai oublié de l'ajouter en premier lieu !^^ Merci à tous pour vos réponses !

1voto

Sander Steffann Points 7432

Je regarde la partie de votre question où vous dites :

Maintenant, mon problème est que mon IPv6 ne fonctionne pas correctement. Si j'essaie de ping une adresse IPv6, par exemple ping6 ipv6.google.com. J'obtiens : "Destination unreachable : Adresse inaccessible"

Ce qui ressemble à ceci dans tcpdump -i eth0 ip6 :

00:29:05.386500 IP6 2a01:4f8:a0:aaaa::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32 00:29:05.390869 IP6
2a01:4f8:a0:bbbb::1 > 2a01:4f8:a0:aaaa::2: ICMP6, neighbor advertisement, tgt is fe80::1, length 32

C'est étrange. Votre système envoie une sollicitation de voisin correcte (d'après ce que je peux voir de votre tcpdump) et le routeur renvoie une annonce de voisin correcte (encore une fois AFAICT). Cela indiquerait un problème sur votre machine locale.

Avez-vous mis en place un pare-feu sur cette machine ? Le filtrage ICMPv6 est très différent du filtrage ICMP. Beaucoup plus de parties de la communication IPv6 besoin de ICMPv6 fonctionne correctement. Si vous filtrez trop ou de la mauvaise façon, vous obtiendrez des problèmes exactement comme ceux que vous rencontrez actuellement.

Si vous souhaitez obtenir plus de détails, veuillez consulter le site suivant RFC 4890 .

0voto

Michael Hampton Points 232226

Essayez d'utiliser l'une des adresses réelles du routeur comme passerelle par défaut, au lieu de fe80::1 .

0voto

Le fait est que l'IPv6 utilise ICMPv6 pour vérifier l'état des liens, contrairement à l'IPv4 où ARP remplit cette fonction. C'est pourquoi, après le ping, tout commence à fonctionner. Ajustez vos règles de pare-feu :

ip6tables -A INPUT -p icmpv6 -j ACCEPT

-1voto

Cem Karaca Points 22

Votre passerelle pour IPv6 doit être dans le même sous-réseau.

iface eth0 inet6 static
  # Main IPv6 Address of the server
  address 2a01:4f8:a0:aaaa::2
  netmask 64
  gateway fe80::1

quelque chose comme 2a01:4f8:a0:aaaa::1 ceci est défini dans la configuration du routeur ou du VLAN, veuillez vérifier ce que vous avez dans votre routeur. un exemple :

interface GigabitEthernet0/0/1.201
 encapsulation dot1Q 201
 ipv6 address 2A00:7XXX:100::1/48
!

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