Proxmox - IPV6 sur les Containers - Configuration réseaux

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 :

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 :

# 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 !

Tu sais que si c’est un besoin pour les machines entre elles, tu peux les mettre sur un réseau interne virtuel avec un adressage privé, pas obligé d’utiliser des adresses publiques ?
C’est juste un détail.

Je suis tout pourri en ipv6, donc merci de ne pas taper pour les pros qui trouveront des conneries dans ce que je dis
D’abord, c’est pas pratique, ton adresse en notation explicite, avec la notation compacte utilisée partout ailleurs, 2a04:2180:1:15::1 c’est mieux (en plus faut t’y habituer).
Sinon, ça m’étonne de voir une route manuelle en ipv6: a priori, c’est le genre de truc que le routeur refile tout seul. Ton hébergeur ne parlerait pas de SLAAC ou d’autoconfiguration, quelquepart dans ses docs? S’il peut y avoir de l’autoconf, c’est bien.

Tu parles des containers ou de l’hote ?
La config précédente concernait bien l’hote ?
Et elle ne casse pas le networking, sinon, tu n’aurais plus accés à ton proxmox, je me trompe (c’est pas clair en fait) ?

Ben ça, tu peux essayer de la ping -6 ou ping6, déjà, pour en être sûr ?

Qu’est-ce que l’adresse 2a04:2180:ffff:fffe::15 qui est en dehors du préfixe attribué ?
A quoi sert-elle ?

Comment le routage est-il censé se passer ? Le préfixe /64 est-il routé par l’hébergeur directement sur le réseau physique ou bien via l’adresse 2a04:2180:ffff:fffe::15 ?
Cela conditionne un point important : l’hôte doit-il faire du routage ou du pontage entre les conteneurs et l’extérieur ?

Quelles sont les interfaces membres de ce pont ? Uniquement les conteneurs ou aussi l’interface ethernet de l’hôte ? Pourquoi n’est-il pas présent dans ton fichier interfaces ?

Erreur. L’adresse de broadcast ne peut pas être identique à l’adresse de l’interface. Pas besoin de la spécifier en général, elle est calculée automatiquement à partir de l’adresse et du masque.

Pas besoin de ces bidouilles si l’adresse de passerelle est dans le sous-réseau défini par l’adresse et le masque de l’interface, ici 185.64.XXX.*, l’option “gateway” suffit. A moins que ce ne soit pas le même XXX partout ?

Je suis d’accord.

Ce type de configuration tordue semble assez courant chez les hébergeurs. L’adresse de routeur n’est pas dans le même préfixe que la machine. Aussi, par défaut l’autoconf est désactivée si la machine est configurée en routeur IPv6 pour faire communiquer ses VM/conteneurs avec l’extérieur.

Je préconise de faire la configuration IPv6 à la main et de l’inscrire dans les fichiers interfaces de l’hôte et des conteneurs seulement quand elle sera au point.

Merci à tous pour vos réponses, il s’agit en fait d’un serveur dédié loué, l’hébergeur en question me fourni le bloc IPV6 qui est le suivant : 2a04:2180:1:15::/64, pour être plus clair dans mes propos, je souhaiterais que tous les containers disposent d’un IP IPV6 publique externe et je ne souhaite pas de réseaux interne, concernant les routes, dès l’installation de proxmox effectuée par l’hébergeur lui même, il y avait déjà les routes suivantes, voici dans le screen suivant, ce que l’hébergeur a configuré quand j’ai eu la machine de livrée :
configdebase

Merci de remplacer cette image incomplète et inexploitable par le contenu en texte brut complet présenté en format “texte préformaté”.

L’image est complète mis à part que je n’ai pas pris le début :

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto vmbr0

Non, elle ne peut pas être complète car il y a des options en haut sans déclaration d’interface. Je demande une version texte complète, pas une capture d’écran avec les bouts de texte manquants, et présentée proprement (texte préformaté). Est-ce trop demander ?

Voici le fichier au format pré-formatté, merci :

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto vmbr0
iface vmbr0 inet static
address 185.64.XXX.111
netmask 255.255.255.0
gateway 185.64.106.1
bridge_ports enp2s0f0
bridge_stp off
bridge_fd 0

iface vmbr0 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 vmbr0
post-up /sbin/ip -r route add default via 2a04:2180:0:2::1

Je viens actuellement d’apporter quelques modifications à ma configuration, voici la dernière configuration, mais celle-ci ne me permets pas le ping vers ipv6.google.com, ni le ping de la gateway : 2a04:2180:0:2::1

auto lo
iface lo inet loopback
iface lo inet6 loopback

# The primary network interface
iface enp2s0f0 inet static
        address 185.64.XXX.111
        netmask 255.255.255.0
        gateway 185.64.XXX.1
        dns-nameservers 91.216.163.2 91.216.163.3

iface enp2s0f0 inet6 static
        address 2a04:2180:ffff:fffe::15:1
        netmask 64
        gateway 2a04:2180:0:2::1
        dns-nameservers 2a04:2180::101:53 2a04:2180::102:53
        post-up /sbin/ip -6 addr add 2a04:2180:1:15::1/64 dev enp2s0f0
        post-up /sbin/ip -6 addr add 2a04:2180:1:15::ff/64 dev enp2s0f0
        post-up /sbin/ip -6 addr add 2a04:2180:1:15::10/64 dev enp2s0f0

Ce n’est pas le même fichier que celui dont on voit une partie dans l’image postée précédemment. La configuration inet6 ne correspond pas du tout. Comment cela se fait-il ?

C’est-à-dire ? Que se passe-t-il exactement ?

Cette dernière configuration inet6 est incorrecte : l’adresse de routeur (gateway) 2a04:2180:0:2::1 n’est pas dans le préfixe 2a04:2180:ffff:fffe::/64 défini par l’adresse et le masque. Quelle est la vraie bonne adresse de routeur, 2a04:2180:0:2::1 ou celle qu’on voit dans l’image (qui est cohérente avec le préfixe) ?

A quoi servent les trois adresses dans 2a04:2180:1:15::1/64 ?

A vrai dire je suis un peu perdu, à ce que je constate la gateway fournie par l’hébergeur n’est pas sur le même subnet…

D’après ce que j’ai compris :

2a04:2180:1:15::/64 >> Ma subnet fournie par l'hébergeur
2a04:2180:ffff:fffe::15 >> Je n'en ai aucune idée, l'hébergeur ne me réponds pas...

Comment pourrais-je alors faire si l’adresse assignée à l’hôte (2a04:2180:1:15::1), puisse contacter la passerelle fournie par l’hébergeur :

IPv6 Gateway 2a04:2180:0:2::1

J’en perds la tête avec tout cela.
Je vais juste apporter quelques détails supplémentaires :

Quand la machine Proxmox est fraîchement installée, celle-ci paramètre le réseau sur l’interface “vmbr0”, c’est pour que cela que j’avais essayé de modifié cette interface bridge par défaut pour l’assigner directement à mon périphérique réseau (enp2s0f0).

Donc dans ma dernière configuration, j’ai mis en avant ma carte ethernet.

Merci pour le temps que vous accordez à mon problème, je viens de réinstaller entièrement proxmox pour recommencer la manoeuvre en étant un peu plus pointilleux mais rien n’y fait …

Dernière mise à jour :

Quand j’assigne ces IP’s IPV6, j’arrive à pinger la passerelle et j’ai accès à internet à l’extérieur, comment puis-je attribuer d’autres adresses IPV6 à mes containers svp ?

Adresse IPV6 assignée à l’hôte et passerelle :

Address : 2a04:2180:ffff:fffe::15
Gateway : 2a04:2180:0:2::1

Merci

Je l’ai constaté plusieurs fois sur les forums, mais je n’en connais pas la raison. Ce ne serait pourtant pas compliqué d’affecter au routeur une adresse dans le même préfixe que les adresses attribuées aux serveurs dédiés.
Tu as essayé de définir comme gateway l’adresse 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe qu’on voit sur l’image ?

Tu ne peux donc utiliser l’option gateway, tu dois ajouter la route directe vers le routeur et la route par défaut avec des options post-up.

Il faut déterminer si l’hébergeur route le préfixe 2a04:2180:1:15::/64 directement sur le réseau connecté à l’interface ethernet ou bien indirectement derrière 2a04:2180:ffff:fffe::15.

Pour déterminer si le préfixe est routé directement, tu peux remplacer l’adresse 2a04:2180:ffff:fffe::15 par une adresse du préfixe 2a04:2180:1:15::/64 sur l’interface ethernet et tester la connectivité internet.

Si le préfixe est routé directement, alors il faudra ponter l’interface ethernet et les conteneurs, donc que l’interface ethernet fasse partie du pont des conteneurs. C’est le pont qui aura l’adresse 2a04:2180:ffff:fffe::15 (et une adresse dans le préfixe 2a04:2180:1:15::/64 pour communiquer avec les conteneurs si besoin), la route par défaut…

Dans le cas contraire, il faudra router (activer le routage IPv6 sur l’hôte) et l’interface ethernet sera en dehors du pont. C’est l’interface ethernet qui aura l’adresse 2a04:2180:ffff:fffe::15, la route par défaut…, et le pont aura une adresse dans le préfixe 2a04:2180:1:15::/64 pour communiquer avec les conteneurs.

Juste une remarque pendant que vous discutez: cette config hébergeur fonctionnait (à la résolution prés au moins) pour l’ipv6 ?
Parce que dessus, je vois bien l’adresse en 2a04:2180:ffff:fffe::15 sur le même réseau que sa gateway, et ce que @teddy76db appelle des routes, ce sont des adresses supplémentaires sur le bridge qui lui rajoutent ses adresses sur la frange allouée 2a04:2180:1:15::/64, donc il me semble qu’on est dans la config souhaitée pour le proxmox lui même (indépendament des containers), là, non ?
Ou alors, il y a un truc à coté duquel je suis passé…

Ca pourrait être utile de connaitre l’hébergeur, en fait.
[edit: pas la peine, si tu me confiirmes que c’est en lituanie.]

Tout ce que je peux dire c’est qu’en effet le whois attribue les adresses IP à Bacloud localisé en Lituanie.

Selon nos conseils, vraiment ? Personne ici n’a conseillé de remettre ces lignes absurdes, bien au contraire :

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
...
post-up /sbin/ip -r route add 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe dev enp2s0f0
post-up /sbin/ip -r route add default via 2a04:2180:ffff:fffe:ffff:ffff:ffff:fffe

Ce n’est pas nous non plus qui avons conseillé de remettre cette adresse comme routeur IPv6 alors que tu as écrit que c’est l’autre qui permet d’atteindre l’extérieur.

Et les bidouillages de proxy NDP, ce n’est pas nous qui l’avons conseillé. Ça sort d’où ?

Ces phrases ne contiennent aucune information utile. Des faits !

En fait on t’a surtout posé des questions et demandé de faire des vérifications. Tu n’as pas répondu. Tant que tu ne sauras pas comment ce réseau est censé fonctionner, ça ne servira à rien de nous envoyer des versions successives de ton fichier interfaces.

Voici le fichier correct que je vais cessé d’éditer bêtement :

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

Mes routes actuelles :

root@9019-16511:~# 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

Informations initiale données par l’hébergeur :

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 édité une route vers la gateway “2a04:2180:0:2::1”, ça ne fonctionne toujours pas, c’est pourtant censé fonctionner, cependant :

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…

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

Merci.

Il y a une question à la quelle tu n’as pas répondu:
est ce que ta config initiale donnée par ton hébergeur, celle que tu as donnée en photo, sur le vmbr0 avec ton interface physique enp2s0f0 dans le bridge fonctionnait correctement en ipv6 ?
Parce qu’en partant d’un bridge de proxmox qui sait déjà causer ipv6, aprés tu l’utilises comme gateway.
Du coup, dans tes containers, tu mets juste des adresses ipv6 statiques en 2a04:2180:1:5::X avec un netmask 64 et gateway 2a04:2180:1:5::1 sur ton proxmox, plus éventuellement les dns-servers mais pas de route rien:
tes containers enverront ainsi leur paquets à router sur l’adresse du proxmox qui est sur le même réseau et saura lui même où les transfèrer.

A confirmer par @PascalHambourg que je ne dis pas de connerie.

En quoi est-il correct ? Pour moi il ne peut pas l’être pour au moins deux raisons :

  1. L’adresse de broadcast ne peut pas être égale à l’adresse de l’interface.

  2. Le préfixe IPv6 /64 ne peut pas être affecté à l’interface ethernet puisque ces adresses ne sont pas censées être affectées à des machines situées à l’extérieur de l’interface. La route suivante qui résulte de cette configuration n’a donc aucun sens :

2a04:2180:1:15::/64 dev enp2s0f0 proto kernel metric 256 pref medium

Qu’entends-tu exactement par “édité une route vers la gateway” ?
Qu’est-ce qui ne fonctionne pas exactement ? Que se passe-t-il ? Des faits concrets ! Des rapports de commandes valent mieux que des phrases vagues.

C’est-à-dire ? Des faits concrets !

C’est-à-dire ? Que fais-tu et que se passe-t-il exactement ?
Des faits concrets !

Ce n’est pas très propre du point de vue du routage mais si ça peut simplifier la configuration IPv6 des conteneurs, pourquoi pas.

Comme je l’ai écrit, de deux choses l’une (et on ne sait toujours pas laquelle des deux est vraie) :

  • soit le préfixe IPv6 est censé être joignable directement sur le réseau physique et le pont de proxmox doit englober l’interface physique de l’hôte. Les conteneurs peuvent utiliser directement le routeur du réseau physique et n’ont pas besoin d’utiliser l’hôte comme routeur. Mais comme l’adresse du routeur est hors du préfixe, ça simplifie la configuration IPv6 des conteneurs de leur faire utiliser l’hôte (avec une adresse dans le préfixe) comme routeur.

  • soit le préfixe IPv6 est censé être routé via l’hôte, et il est inutile que le pont de proxmox englobe l’interface physique de l’hôte car de toute façon la communication entre les conteneurs et le routeur extérieur doit passer par l’intermédiaire du routage de l’hôte.

Ce que tu proposes devrait fonctionner dans les deux cas mais ne serait propre ni dans l’un (routage asymétrique par l’hôte superflu) ni dans l’autre (pontage superflu et fuite de paquets).