IPv6 VM derrière OPNsense sur Proxmox chez OVH

L’IPv6 chez OVH semble exploitée de manière un poil exotique et il m’a fallu pas mal de temps avant de trouver une configuration qui semble fonctionnelle (même si peut-être pas tout à fait respectueuse des bonnes pratiques IPv6 si j’ai bien compris ce que j’ai lu sur le sujet).

Côté Proxmox

Affecter une IPv6 à vmbr0 sur Proxmox

Pour cette partie, en principe rien de compliqué, soit l’installation de Proxmox via l’image OVH l’a déjà configurée, soit il faut suivre la doc OVH ou pour mémoire la première partie d’un article précédent sur ce blog : Proxmox VE6 et configuration IP sur SoYouStart et OVH

La version dans /etc/network/interfaces avec les post-up semblant plus fonctionnelle toutefois que celle avec gateway (à confirmer ??)

auto vmbr0
iface vmbr0 inet6 static
        address 2001:41d0:cafe:b52::ffff/64
        gateway 2001:41d0:cafe:bff:ff:ff:ff:ff
        post-up ip -6 route add 2001:41d0:cafe:bff:ff:ff:ff:ff dev vmbr0 || true
        post-up ip -6 route add default via 2001:41d0:cafe:bff:ff:ff:ff:ff || true
        post-down ip -6 route del default via 2001:41d0:cafe:bff:ff:ff:ff:ff || true
        post-down ip -6 route del 2001:41d0:cafe:bff:ff:ff:ff:ff dev vmbr0 || true

L’adresse 2001:41d0:cafe:b52::ffff est à choisir par vous en piochant dans la plage d’adresse IPv6 mise à disposition par OVH. (visiblement assez variable et allant d’une /128 [vu sur une kimsufi 🙁 ] à /56 en passant par /64). Idéalement il faudrait du /56, mais si vous n’avez que du /64, la configuration de cette article se base sur ce cas.

Activer IP Forwarding IPv6

Modifier /etc/sysctl.conf en ajoutant ces lignes :

net.ipv6.conf.all.autoconf=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.forwarding=1

Il est possible de prendre en compte ces paramètres soit en redémarrant soit via cette ligne de commande :

sysctl -p /etc/sysctl.conf

Côté OPNsense

Nous allons partir du principe que vous avez une VM avec OPNsense déjà installée avec une patoune WAN sur vmbr0 et une LAN sur vmbr1. Considérons aussi que vous avez une IPv4 FO fonctionnelle sur la patte WAN. (a priori obligatoire pour que l’IPv6 fonctionne chez OVH si j’ai bien compris. edit 23/08/2023 : en fait il semble que ça ne soit pas/plus d’actualité et j’ai pu avoir de l’ipv6 fonctionnelle sans ipv4 FO).

IPv6 sur le WAN

  • Ajouter une IPv6 statique dans la configuration de cette interface (à choisir toujours par vous dans la plage d’adresses liées à votre serveur). Par exemple 2001:41d0:cafe:b52::1/112
  • Ajouter une passerelle amont IPv6 avec l’IP donnée à Proxmox sur vmbr0 (2001:41d0:cafe:b52::ffff dans cet exemple).

Penser à ajouter des règles pour autoriser ICMP sur le WAN si vous souhaitez faire des ping.

A ce stade en principe vous pouvez pinguer le WAN d’OPNsense depuis proxmox et vice-versa.

IPv6 sur le LAN

Nous pouvons choisir d’utiliser un sous réseau en /88, et par exemple une adresse de ce type :

2001:41d0:cafe:b52:100:1::ffff/88

Afin de pouvoir accéder à ce sous-réseau depuis l’hôte proxmox il faut ajouter une route statique dans /etc/network/interfaces

Le fait de découper le réseau pour le(s) LAN(s) en /88 permet de n’ajouter qu’une route en /80 sur proxmox.

Votre fichier interfaces doit alors ressembler à ceci :

auto vmbr0
iface vmbr0 inet6 static
        address 2001:41d0:cafe:b52::ffff/64
        gateway 2001:41d0:cafe:bff:ff:ff:ff:ff
        post-up ip -6 route add 2001:41d0:cafe:bff:ff:ff:ff:ff dev vmbr0 || true
        post-up ip -6 route add default via 2001:41d0:cafe:bff:ff:ff:ff:ff || true
        post-up ip -6 route add 2001:41d0:cafe:b52:100::/80 via 2001:41d0:cafe:b52::1 || true
        post-down ip -6 route del 2001:41d0:cafe:b52:100::/80 via 2001:41d0:cafe:b52::1 || true
        post-down ip -6 route del default via 2001:41d0:cafe:bff:ff:ff:ff:ff || true
        post-down ip -6 route del 2001:41d0:cafe:bff:ff:ff:ff:ff dev vmbr0 || true

A ce stade il doit être possible de pinguer 2001:41d0:cafe:b52:100:ffff depuis l’hôte proxmox.

Installer ndppd sur Proxmox

Enfin installer et configurer ndppd:

apt install ndppd

Créer le fichier /etc/ndppd.conf :

proxy vmbr0 {
  rule 2001:41d0:cafe:b52::1/128 {
    static
  }
  rule 2001:41d0:cafe:b52:100::/80 {
    static
  }
}

La rule en /128 permet d’indiquer l’IP donnée à OPNSense comme voisine à ce serveur (afin de pouvoir accéder/pinguer OPNSense depuis l’extérieur).

Redémarrer ndppd :

systemctl restart ndppd