Proxmox / Debian - IPV6 sur les Containers

Petit nouveau ! | 4 Messages

31 août 2019, 21:12

Bonjour tout le monde,
je suis très embêté sur un problème depuis maintenant 4 jours avec Proxmox.
Si avez l'aimabilité de m'aider ce serait super sympathique car je suis dans l'impasse...

Mon projet :

Je souhaite avec Proxmox créer plusieurs Containers pour y faire tourner quelques applications, ces applications necéssitent une adresse IP unique pour chaque containers,
je souhaiterai donc utilisé le BLOC IPV6 fourni par mon prestataire qui le bloc suivant :

Code : Tout sélectionner

Assigned IPs 2a04:2180:1:15::/64 2a04:2180:ffff:fffe::15 fe80::/64 IPv6 Nameservers 2a04:2180::101:53 - 2a04:2180::102:53 IPv6 Gateway 2a04:2180:0:2::1
J'ai tout essayé pour essayer de faire fonctionner les containers, mais maintenant je suis vraiment bloqué car je ne peux vraiment plus avancer, car à chaque modification effectué,
le service networking ne veut pas redémarrer, pourriez-vous m'aider à configurer la partie IPV6 de mon fichier pour que l'hôte est accès à internet via l'IPV6 et pour que les containers,
aient aussi une adresse IPV6 unique (tout en ayant effectué un petit NAT pour leur permettre l'accès IPV4).

J'ai l'impression que ma configuration ne permets pas de joindre la gateway IPV6...

Voici mon fichier de configuration actuel,
j'utilise le périphérique vmbr0 mis en place d'origine par Proxmox, j'ai donc effectué les modifications necéssaires :

Code : Tout sélectionner

The loopback network interface auto lo iface lo inet loopback The primary network interface auto enp2s0f0 iface enp2s0f0 inet static address 185.64.XXX.111 netmask 255.255.255.0 broadcast 185.64.XXX.111 post-up route add 185.64.XXX.1 dev enp2s0f0 post-up route add default gw 185.64.XXX.1 dev enp2s0f0 iface enp2s0f0 inet6 static address 2A04:2180:0001:0015:0000:0000:0000:0001 netmask 64 post-up /sbin/ip -r route add 2a04:2180:0:2::1 dev enp2s0f0 post-up /sbin/ip -r route add default via 2a04:2180:0:2::1
En vous remerciant énormément pour votre aide, franchement, cette histoire me tape sur les nerfs...
Merci !

ViPHP
ViPHP | 5904 Messages

01 sept. 2019, 22:06

Bonjour,

Tout d'abord je vais te rassurer. La mise en oeuvre d'une connectivité IPv6 sur Proxmox est quelque chose de classique et normalement bien supporté. Pour ma part j'ai un Proxmox sur lequel j'ai un bloc IPv6 dans lequel chaque VMs a une adresse IPv6. Il n'y a pas de raison non plus que ça ne fonctionne pas avec des conteneurs.

Déjà, avant tout, la première étape est de faire fonctionner sur l'hôte avant de chercher à faire fonctionner sur les conteneurs. Je suppose que la configuration que tu as indiqué est celle de l'hôte.

Je ne pense pas que cela vienne de là mais j'ai déjà des objections sur la configuration /etc/network/interfaces que tu as copié :

1/ Pour IPv4 comme pour IPv6, ta configuration utilise des "route add" ou "ip -6 r add", alors que c'est quelquechose qui est géré directement par le service networking si c'est correctement configuré (avec le paramètre "gateway"). En ajoutant la route à la main, tu bypasses des opérations qui peuvent être faites par le service networking, c'est donc à éviter autant que possible. Dans certains cas, le setup réseau est particulier et tu n'as pas d'autre choix que d'ajouter la route à la main, mais ce n'est pas le cas ici.

2/ La convention veut que les paramètres de la directive iface soient indentés pour une meilleure lisibilité.

3/ Enfin, par lisibilité, je recommanderais de compresser l'adresse IPv6 2A04:2180:0001:0015:0000:0000:0000:0001 en 2A04:2180:1:15::1, mais il n'y a rien d'obligatoire.

Voici à quoi ton fichier devrait ressembler :

Code : Tout sélectionner

The loopback network interface auto lo iface lo inet loopback The primary network interface auto enp2s0f0 iface enp2s0f0 inet static address 185.64.XXX.111 netmask 255.255.255.0 broadcast 185.64.XXX.111 gateway 185.64.XXX.1 iface enp2s0f0 inet6 static address 2A04:2180:0001:0015:0000:0000:0000:0001 netmask 64 gateway 2a04:2180:0:2::1 pre-up /bin/ip -6 route add 2a04:2180:0:2::1 dev enp2s0f0

Note : Dans le cas de ton adresse IPv6, l'adresse 2a04:2180:0:2::1 n'est pas dans le subnet 2A04:2180:1:15::1/64 donc il faut explicitement indiquer que le routeur est joignable directement sur le lien. C'est pourquoi on doit utiliser la commande "ip -6 route ...". Dans le cas de ton adresse IPv4, l'adresse du routeur 185.64.XXX.1 est dans le network 185.64.XXX.111/24, donc ce n'est pas nécessaire.

Une fois correctement configuré, tu peux rebooter et voir les erreurs avec la commande suivante :

Code : Tout sélectionner

$ sudo journalctl -u networking

Ensuite, une fois l'interface correctement configurée au boot, tu dois avoir une route IPv6 par défaut :

Code : Tout sélectionner

$ ip -6 r 2a04:2180:1:15::/64 dev enp2s0f0 proto kernel metric 256 pref medium 2a04:2180:0:2::1 dev enp2s0f0 metric 1024 pref medium (...) default via 2a04:2180:0:2::1 dev enp2s0f0 metric 1024 pref medium

Pour tester, je te recommande d'installer le paquet mtr-tiny, c'est un traceroute amélioré.
Je te recommande de faire les tests suivants (dans cet ordre) :
* Pinguer la gateway:

Code : Tout sélectionner

$ ping6 2a04:2180:0:2::1

* Pinguer l'adresse IPv6 d'un serveur connu (2001:4860:4860::8888 = DNS public google) :

Code : Tout sélectionner

$ ping6 2001:4860:4860::8888

* Pinguer en IPv6 un nom de domaine connu pour être IPv6 ready:

Code : Tout sélectionner

$ ping6 google.fr

* Pinguer (depuis un autre serveur ou un PC) le proxmox :

Code : Tout sélectionner

$ ping6 2a04:2180:1:15::1

* En cas de problème sur l'un des tests, utiliser mtr pour voir où se situe l'erreur :

Code : Tout sélectionner

$ mtr -6 2001:4860:4860::8888

Une fois la connectivité de base en place, tu pourras ensuite passer aux conteneurs.

Cordialement

Petit nouveau ! | 4 Messages

02 sept. 2019, 00:22

Merci beaucoup pour votre aide et vos explications, le problème persiste toujours, j'ai bien utilisé la configuration que vous avez laissé dans votre message et je l'ai mis en place, pour l'IPV4 cela fonctionne parfaitement, cependant pour l'IPV6, je ne peux en aucun cas pinguer la passerelle et l'extérieur, voici le routage actuel :

Code : Tout sélectionner

[email protected]:~# ip -6 r 2a04:2180:0:2::1 dev enp2s0f0 metric 1024 pref medium 2a04:2180:1:15::/64 dev enp2s0f0 proto kernel metric 256 pref medium fe80::/64 dev enp2s0f0 proto kernel metric 256 pref medium default via 2a04:2180:0:2::1 dev enp2s0f0 metric 1024 onlink pref medium

La configuration mis en place dans le fichier interfaces :

Code : Tout sélectionner

auto lo iface lo inet loopback auto enp2s0f0 iface enp2s0f0 inet static address 185.64.XXX.111 netmask 255.255.255.0 broadcast 185.64.XXX.111 gateway 185.64.XXX.1 iface enp2s0f0 inet6 static address 2A04:2180:0001:0015:0000:0000:0000:0001 netmask 64 gateway 2a04:2180:0:2::1 pre-up /bin/ip -6 route add 2a04:2180:0:2::1 dev enp2s0f0

Les informations données par l'hébergeur du serveur dédié :

Code : Tout sélectionner

Assigned IPs : 2a04:2180:1:15::/64 2a04:2180:ffff:fffe::15 fe80::/64 IPv6 Nameservers : 2a04:2180::101:53 2a04:2180::102:53 IPv6 Gateway : 2a04:2180:0:2::1

Je peine encore à finaliser la mise en place, merci bien...

Petit nouveau ! | 4 Messages

02 sept. 2019, 00:42

Ce qui est très étrange, ce que quand j'assigne ces adresses IPV6 cela fonctionne pour l'hôte, mais impossible de donner une IPV6 aux containers... :

Code : Tout sélectionner

iface enp2s0f0 inet6 static address : 2a04:2180:ffff:fffe::15 netmask 64 gateway : 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe

Je suis un peu perdu...

Petit nouveau ! | 4 Messages

02 sept. 2019, 15:17

Bonjour !
J'ai eu une réponse du support qui m'informe que je dois utiliser ces adresses :

Code : Tout sélectionner

IPV6 correct config: iface enp2s0f0 inet6 static address 2a04:2180:ffff:fffe::15 netmask 64 gateway 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe
Use ipv6 addresses in containers: 2a04:2180:1:15::/64

La connectivité en IPV6 sur l'hôte fonctionne parfaitement, mais quand j'assigne par exemple une IPV6 à un container (2a04:2180:0001:0015:0000:0000:0000:0010), je n'arrive pas à pinguer la passerelle ni rien d'autre de l'extérieur d'ailleurs...
Modifié en dernier par teddy76db le 02 sept. 2019, 23:47, modifié 1 fois.

ViPHP
ViPHP | 5904 Messages

02 sept. 2019, 22:52

Bonjour
J'ai eu une réponse du support qui m'informe que je dois utiliser ces adresses :

Code : Tout sélectionner

IPV6 correct config: iface enp2s0f0 inet6 static address 2a04:2180:ffff:fffe::15 netmask 64 gateway 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe
Use ipv6 addresses in containers: 2a04:2180:1:15::/64
Ça ne me parait pas illogique, il est probable que le préfixe 2a04:2180:1:15::/64 soit routé vers l'adresse 2a04:2180:ffff:fffe::15. Dans ce cas il faut que l'adresse 2a04:2180:ffff:fffe::15 soit assignée sur ton proxmox pour que le préfixe /64 soit routé vers ton serveur. Au passage, cela va simplifier le routage vers les conteneurs (voir ci-dessous).

Il y a par contre une chose que je ne vois pas, c'est la configuration du bridge sur lequel les conteneurs sont connectés (probablement vmbr0).


Le setup classique doit être le suivant, je vais essayer de résumer par un schéma :

Code : Tout sélectionner

+------------------ Proxmox ----------------------+ | | | +---------------------------------+ | | | container1 | | | | IPv6: 2a04:2180:1:15::1/64 | | | | GW: 2a04:2180:1:15::ffff | | | +---------------------------------+ | | ^ | | | | | | Subnet: 2a04:2180:1:15::/64 | | | | | v | | +----------------------------------+ | | | vmbr0 | | | | IPv6: 2a04:2180:1:15::ffff/64 | | | | GW: (not set) | | | +----------------------------------+ | | ^ | | | | Routing | | | | v | | +---------------------------------------------+ | +-| enp2s0f0 |-+ | IPv6: 2a04:2180:ffff:fffe::15/64 | | GW: 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe | +---------------------------------------------+ ^ | | Subnet: 2a04:2180:ffff:fffe::/64 | v +----------------------------------------------+ | Routeur (hébergeur) | | IPv6: 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe| +----------------------------------------------+

Pour expliciter:
* La configuration de l'interface ethernet physique (enp2s0f0) reliée au réseau de l'hébergeur est correcte et ne doit pas changer
* Je suppose que les interfaces ethernet virtuelles des conteneurs sont bridgées sur le bridge vmbr0. Dans ce setup, l'hôte proxmox est le routeur par défaut pour les conteneurs. Le réseau supporté par le bridge vmbr0 est donc le réseau interne via qui interconnecte les conteneurs avec le proxmox.
* Pour donner une connectivité aux conteneurs, il faut donc tout d'abord que l'interface vmbr0 ait une adresse IPv6 dans le subnet 2a04:2180:1:15::/64. C'est l'IP qui servira de gateway pour les conteneurs. Il n'y a pas de règle absolue, une bonne pratique est d'utiliser une adresse en fin de subnet (comme le fait l'hébergeur avec l'adresse 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe). En pratique, l'adresse 2a04:2180:1:15::ffff conviendra tout à fait.
* Les conteneurs doivent avoir une adresse dans le subnet 2a04:2180:1:15::/64, et doivent avoir pour gateway l'adresse 2a04:2180:1:15::ffff.
* Enfin, le plus important, le routage IPv6 doit être activé sur le serveur. En effet, dans ce setup, les paquets seront routés par le serveur de l'interface vmbr0 vers l'interface enp2s0f0, et vice-versa. Cela ne sera le cas que si le routage IPv6 est activé.

Pour configurer le bridge, il doit y avoir quelquechose de ce style dans /etc/network/interfaces :

Code : Tout sélectionner

allow-hotplug vmbr0 iface vmbr0 inet6 static address 2a04:2180:1:15::ffff netmask 64

Et pour activer le routage, il doit y avoir quelquechose de ce style dans l'un des fichiers /etc/sysctl.d/* :

Code : Tout sélectionner

net.ipv6.conf.all.forwarding=1

Cordialement