Routage IPv6 sur une passerelle chez OVH (et probablement Free)

Tags: , , ,
2 Comments »

Free et OVH proposent tous deux une connectivité IPv6 depuis un certain temps. Les deux ont ceci de commun que sur le papier, ils fournissent un prefixe /64, il se trouve qu’OVH fournit en réalité un /56, mais cela a peu d’intérêt pour l’astuce qui va suivre.

Les routeurs des deux sociétés s’attendent donc à recevoir du flux IPv6 depuis un réseau “plat”, et ceci pose un réel soucis lorsque vous souhaitez distribuer une connectivité IPv6 à votre réseau possiblement NATté derrière votre passerelle. Plusieurs astuces sont disponibles depuis belle lurette, parmi elles l’utilisation d’un bridge associé à une règle ebtables, mais aussi et surtout la mise en place du proxying NDP. Je me suis basé sur cette dernière méthode, que j’ai adapté à mon éternel setup: dom0 debian GNU/Linux et domU NetBSD.

La procédure est la suivante:

On active en premier lieu le mode proxy NDP ainsi que le forwarding IPv6 sur notre dom0:

sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.proxy_ndp=1

Il conviendra evidemment de rendre cette configuration permanente en ajoutant ces valeurs dans le fichier /etc/sysctl.conf
Puis, sur notre interface de bridging Xen, nous ajoutons l’IPv6 dans le sous-réseau fourni par le fournisseur, cette adresse sera l’IP passerelle pour nos domUs:

# ifconfig xenbr0 inet6 add 2001:41e8:1:fe10::1/64

Toute l’astuce consiste à proxyiser l’adresse MAC de l’interface xenbr0 sur l’interface physique de la machine que voit réellement le fournisseur à l’aide de la commande ip:

ip neigh add proxy 2001:41e8:1:fe10::1 dev eth0

Il convient évidemment d’ajouter une route par défaut pour les adresses IPv6, cette dernière vous est fournie par votre fournisseur, par exemple pour OVH:

route -A inet6 add default gw 2001:41e8:1:feff:ff:ff:ff:ff

Nous attribuerons à notre domU l’IPv6 2001:41e8:1:fe10::2, ainsi, nous proxyisons également cette dernière de cette façon:

ip neigh add proxy 2001:41e8:1:fe10::2 dev eth0

Enfin, sur notre domU, nous ajoutons cette IP à l’interface raccordée au bridge ainsi qu’une route par défaut pointant vers l’IP de ce dernier:

ifconfig xennet0 inet6 2001:41e8:1:fe10::2 prefixlen 64
route -n add -inet6 default 2001:41e8:1:fe10::1

Et rendons ces paramètres permanents en ajoutant dans le fichier /etc/ifconfig.xennet0:

inet6 2001:41e8:1:fe10::2 prefixlen 64
!route -n add -inet6 default 2001:41e8:1:fe10::1

Finalement, nous inscrivons dans le fichier /etc/network/interfaces de notre dom0:

iface xenbr0 inet6 static
	2001:41e8:1:fe10::1
	netmask 64
	gateway 2001:41e8:1:feff:ff:ff:ff:ff
	# NDP / ARP proxying for xenbr0
	up ip neigh add proxy 2001:41e8:1:fe10::1 dev eth0
	down ip neigh del proxy 2001:41e8:1:fe10::1 dev eth0
	# NDP / ARP proxying for domU 1
	up ip neigh add proxy 2001:41e8:1:fe10::2 dev eth0
	down ip neigh del proxy 2001:41e8:1:fe10::2 dev eth0

Et le tour est joué.

Notez que je n’ai pas eu besoin, au contraire de ce qu’indique la documentation sur laquelle je me suis appuyé, de passer l’interface eth0 en mode promiscuous, probablement parce que j’utilise un bridge monté sur une interface de type dummy, dissocié de l’interface physique, et que les routes IPv6 de mes domU utilisent explicitement l’IP montée sur ce dernier.

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in
Optimization WordPress Plugins & Solutions by W3 EDGE