Proxmox VE 9 • Réseau des machines virtuelles • Guide

Attribuer une adresse IP publique à une machine virtuelle Proxmox

À la livraison de votre serveur, une seule adresse IPv4 y est configurée et les autres restent libres. C’est voulu, et cette page vous explique comment terminer le travail. Trois méthodes s’offrent à vous, aucune ne prend longtemps : placer la machine directement sur le réseau avec sa propre adresse, faire passer son trafic par l’hôte, ou masquer tout un ensemble de machines derrière l’adresse que vous possédez déjà. Nous avons testé les trois sur notre propre réseau avant de rédiger ce guide.

Rien à enregistrer au préalable Aucun redémarrage nécessaire Quelqu’un au téléphone, toujours

Guide pas à pas

Lisez les deux premières étapes. Ensuite, les étapes trois, quatre et cinq sont des alternatives — choisissez celle qui correspond à ce que vous construisez.

1

Où sont vos adresses, et quelle passerelle chacune utilise

Cherchez l’e-mail intitulé Configuration du serveur dédié, envoyé le jour où la machine a été créée. Il liste tout ce qui est alloué au serveur : d’abord les adresses IPv4, puis les éventuelles IPv6. La même liste se trouve dans votre compte, sur la page du serveur, dans le panneau intitulé Accès, réseau et rDNS.

Sur un serveur Proxmox, cet e-mail ajoute une ligne sous la liste, vous indiquant que l’hôte n’a reçu que la première adresse et que les autres vous appartiennent pour les distribuer — à des machines virtuelles, ou à l’hôte également si vous voulez qu’il en détienne plusieurs. Nous configurons une seule adresse pour que la machine démarre joignable, puis nous nous arrêtons. Configurez-les toutes sur l’hôte et il répondra pour toutes, ne laissant rien à réclamer à vos machines virtuelles.

Deux chiffres comptent chaque fois que vous saisissez une adresse. Le masque de réseau est /24, soit 255.255.255.0. La passerelle est la plage de cette adresse, se terminant par .1 — ainsi une adresse dans 203.0.113.0/24 utilise 203.0.113.1. Les adresses attribuées ensemble sont côte à côte et partagent une passerelle. Les adresses ajoutées à un serveur des mois plus tard peuvent provenir d’une autre de nos plages, et elles utilisent alors leur propre .1. Se tromper ici est la raison la plus courante pour laquelle une nouvelle machine virtuelle ne peut rien joindre, et cela coûte un après-midi aux gens.

Pour le DNS, nous configurons 209.244.0.3 sur l’hôte. Pointez vos machines virtuelles où bon vous semble.

2

Voyez ce qui est déjà configuré sur l’hôte

Connectez-vous en SSH en tant que root et jetez un œil :

ip -br addr
cat /etc/network/interfaces

Sur une machine que nous venons de construire, ce fichier ressemble à peu près à ceci, avec le nom de votre interface et votre propre première adresse à la place de celles affichées :

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    bridge-ports eno1
    bridge-stp off
    bridge-fd 0

Ce qu’il est utile de remarquer, c’est que vmbr0 est déjà un pont, et que la carte réseau y est déjà branchée. Rien d’autre n’est nécessaire pour l’étape trois, c’est pourquoi l’étape trois ne vous demande de ne rien changer ici.

Proxmox VE 9 repose sur Debian 13 et utilise ifupdown2, donc les changements réseau prennent effet sans redémarrer la machine. Enregistrez le fichier et exécutez :

ifreload -a

Modifier via l’interface web Proxmox écrit plutôt vos changements dans /etc/network/interfaces.new et les retient jusqu’à ce que vous appuyiez sur Appliquer la configuration. Quelle que soit la méthode, ouvrez d’abord la console depuis votre compte. Une faute de frappe dans ce fichier et la machine disparaît du réseau ; la console passe par un autre chemin et continuera de fonctionner.

3

La méthode rapide : placez la machine directement sur le réseau

Commencez ici. Votre machine virtuelle se comporte comme un ordinateur séparé branché sur le même commutateur, elle parle elle-même à nos routeurs, et l’hôte n’a besoin d’aucune modification.

Dans Proxmox, ajoutez un périphérique réseau à la machine, réglez le pont sur vmbr0, et laissez l’adresse MAC que Proxmox a remplie. Configurez ensuite l’adresse à l’intérieur de la machine. Debian ou Ubuntu avec la configuration classique :

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/24
    gateway 203.0.113.1
    dns-nameservers 209.244.0.3 1.1.1.1

Ubuntu avec netplan, dans /etc/netplan/01-netcfg.yaml :

network:
  version: 2
  ethernets:
    ens18:
      addresses: [203.0.113.58/24]
      routes:
        - to: default
          via: 203.0.113.1
      nameservers:
        addresses: [209.244.0.3, 1.1.1.1]

Sous Windows, les trois mêmes valeurs vont dans les paramètres IPv4 de l’adaptateur. Peu importe réellement ce que la machine exécute ; pour nous, c’est un ordinateur de plus sur le câble.

Il n’y a rien à nous signaler d’abord. Vous n’avez pas à nous envoyer l’adresse MAC de chaque machine virtuelle, et nous ne limitons pas le nombre que votre port peut utiliser. Un certain nombre d’hébergeurs le font, et leurs instructions vous font remplir un formulaire pour chaque nouvelle machine. Nous avons vérifié plutôt que supposé : le port sur lequel votre serveur est branché n’a aucune limite de MAC et la sécurité du port est désactivée, et avant de publier ceci nous avons mis une seconde adresse et une seconde MAC sur le port d’une machine du personnel et l’avons jointe depuis l’internet public.

Trois choses à bien faire :

• Chaque machine a besoin de sa propre adresse MAC. Deux machines qui en partagent une, ou qui copient celle de l’hôte, et aucune ne fonctionne correctement.
• Utilisez la passerelle appartenant à la plage de cette adresse, depuis l’étape un.
N’utilisez que des adresses qui sont sur votre compte. Ce pont fait face à un vrai réseau avec les machines d’autres personnes. Une adresse qui n’est pas la vôtre emporte leur trafic avec elle.

Même raison : rien qui distribue des adresses n’a sa place sur vmbr0. Pas de serveur DHCP, pas d’annonces de routeur. Si vous voulez attribuer automatiquement des adresses à vos propres machines, utilisez l’étape cinq, où le pont n’a aucune sortie et ne peut joindre personne d’autre.

4

La méthode contrôlée : tout par l’hôte

Choisissez ceci quand vous voulez que l’hôte voie chaque paquet, pour que son pare-feu puisse agir dessus, ou quand vous préférez que vos machines n’apparaissent jamais du tout sur le réseau partagé. Elles reçoivent toujours de vraies adresses publiques de votre compte ; seul le chemin change.

L’adresse publique quitte le pont et va sur la carte réseau, l’hôte est invité à transférer, et il répond au nom des machines derrière lui. Sur l’hôte :

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp

auto vmbr0
iface vmbr0 inet manual
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    up ip route add 203.0.113.58/32 dev vmbr0
    down ip route del 203.0.113.58/32 dev vmbr0

Une ligne up et down pour chaque adresse routée de cette façon. À l’intérieur de la machine, l’adresse est un /32, et l’hôte doit être joint par une route explicite avant celle par défaut :

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 203.0.113.58/32
    post-up ip route add 203.0.113.10 dev ens18
    post-up ip route add default via 203.0.113.10
    dns-nameservers 209.244.0.3 1.1.1.1

Ne supprimez pas la ligne proxy_arp. Nos routeurs demandent au réseau qui détient chaque adresse, et cette ligne est ce qui fait répondre l’hôte pour les machines derrière lui. Laissez-la de côté et elles sont tout simplement invisibles. Les deux lignes post-up echo sont la façon propre à Proxmox de l’écrire. Pour les définir de façon permanente à la place, déposez un fichier dans /etc/sysctl.d/ contenant :

net.ipv4.ip_forward=1
net.ipv4.conf.eno1.proxy_arp=1

Ce que vous achetez avec le travail supplémentaire, c’est un hôte qui peut filtrer et journaliser chaque paquet. Si vous n’en avez pas besoin, l’étape trois est moins sujette aux erreurs.

5

Les machines qui n’ont pas besoin de leur propre adresse

Beaucoup de machines ne font que lancer des conversations : des exécuteurs de build, des travailleurs de file d’attente, une base de données que rien d’extérieur ne devrait toucher. Donnez-leur une adresse privée sur un pont sans sortie propre, et laissez l’hôte traduire leur trafic sur son adresse au passage. Cela n’utilise rien de votre allocation, vous pouvez donc en exécuter autant que le matériel peut en porter.

Ajoutez un second pont, en laissant vmbr0 exactement tel quel :

auto vmbr1
iface vmbr1 inet static
    address 10.10.10.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE

Placez les machines sur vmbr1, donnez à chacune une adresse dans cette plage avec 10.10.10.1 comme passerelle, et elles sont parties. Pour le reste de l’internet, elles ressemblent à votre serveur. Rien ne les atteint de l’extérieur à moins que vous ne le demandiez, et demander est une règle de plus à côté de la première, sur un port que l’hôte n’utilise pas déjà :

post-up iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443
post-down iptables -t nat -D PREROUTING -i eno1 -p tcp --dport 8443 -j DNAT --to 10.10.10.2:443

Ce pont n’a aucun port physique, donc un serveur DHCP y est sûr et constitue une façon propre d’adresser les machines derrière lui.

6

Ajouter vos adresses IPv6

Ce que vous avez, c’est une poignée d’adresses IPv6 séparées, pas un bloc à subdiviser. Elles sont en bas du même e-mail de configuration, et elles se placent une à la fois exactement comme les IPv4 : une sur l’hôte si vous voulez que l’hôte soit joignable en IPv6, les autres sur les machines qui en ont besoin. L’installateur n’en configure aucune, donc tout ceci est à vous d’ajouter.

Écrivez chacune avec un /64 à la fin, et la passerelle est le préfixe avec ::1 après — une adresse dans 2001:db8:1234::/64 utilise 2001:db8:1234::1. Sur l’hôte, à côté du pont déjà présent :

iface vmbr0 inet6 static
    address 2001:db8:1234::2/64
    gateway 2001:db8:1234::1

Et dans une machine sur le pont :

iface ens18 inet6 static
    address 2001:db8:1234::5/64
    gateway 2001:db8:1234::1

Puis ifreload -a, comme avant. Parce que ce sont des adresses individuelles plutôt qu’un bloc à vous, n’annoncez pas de routes et ne distribuez pas d’adresses qui ne vous ont pas été données. Il vous en manque ? Demandez-nous.

7

Nommer vos adresses : le DNS inverse

Vous configurez vous-même le DNS inverse, sur n’importe quelle adresse, sans rien demander à personne. Connectez-vous, ouvrez le serveur, et trouvez le panneau intitulé Accès, réseau et rDNS. Chaque adresse est listée avec le nom auquel elle répond actuellement et un bouton Modifier le rDNS à côté. Les adresses IPv6 fonctionnent de la même façon.

Le champ attend un nom d’hôte : lettres, chiffres, tirets et points, chaque partie entre 1 et 63 caractères, au moins deux parties, et le point final est ajouté pour vous. Laissez quelques minutes pour que cela prenne effet.

Si la machine envoie des e-mails, l’adresse à nommer est celle d’où part réellement le courrier — avec l’étape cinq, c’est l’adresse de l’hôte, pas celle de la machine — et vous voudrez aussi l’enregistrement direct correspondant chez votre fournisseur DNS. Les serveurs de messagerie à l’autre bout vérifient que les deux concordent, et refusent le courrier quand ce n’est pas le cas.

FAQ

Ce que les gens nous demandent après avoir suivi cette page.

La machine virtuelle est démarrée mais rien ne fonctionne. Où chercher ?

La passerelle, neuf fois sur dix. Elle doit être le .1 de la plage à laquelle cette adresse appartient elle-même, et un serveur dont les adresses ont été achetées à des moments différents peut facilement avoir deux plages avec deux passerelles. Ensuite, vérifiez que l’adresse est bien sur votre compte, que vous avez utilisé /24, et qu’aucune autre machine ne porte la même adresse MAC.

Dois-je vous envoyer l’adresse MAC de chaque machine virtuelle ?

Non, et il n’y a rien à remplir nulle part. Votre port apprend autant d’adresses MAC que vous y mettez et la sécurité du port est désactivée, donc une machine virtuelle apparaît sur le réseau exactement comme une machine physique. Gardez l’adresse MAC générée par Proxmox, et assurez-vous qu’aucune machine n’en partage une.

Pourquoi une seule adresse était-elle configurée à l’arrivée du serveur ?

Parce qu’un hôte portant toutes les adresses répondrait pour toutes les adresses, et vos machines virtuelles n’auraient rien à prendre. Nous configurons la première pour que la machine démarre joignable et laissons les autres pour vous. L’e-mail de configuration le dit directement, sous la liste.

Que choisir, l’étape trois ou l’étape quatre ?

L’étape trois, sauf si vous savez pourquoi vous voulez l’étape quatre. Elle ne change rien sur l’hôte, ne nécessite aucun réglage inhabituel dans la machine, et se comporte comme un vrai ordinateur sur un réseau. L’étape quatre est pour quand vous voulez que l’hôte inspecte et filtre tout au passage, et que vous acceptez de configurer chaque machine un peu plus soigneusement en retour.

Puis-je distribuer automatiquement des adresses avec DHCP ?

Sur un pont privé sans port physique, absolument, et c’est une façon propre de gérer beaucoup de machines. Jamais sur vmbr0, qui est connecté à un réseau où d’autres clients sont aussi présents : un serveur DHCP ou des annonces de routeur là-bas commencent à répondre pour des machines qui ne sont pas les vôtres.

J’ai enregistré un mauvais fichier et le serveur a disparu. Que faire ?

Utilisez la console dans votre compte. Elle atteint la machine par sa carte de gestion plutôt que par le réseau, donc elle continue de fonctionner quand le réseau ne fonctionne pas. Réparez /etc/network/interfaces, exécutez ifreload -a, et vous êtes de retour. Ouvrir la console avant d’appliquer un changement est une habitude qui vaut la peine d’être prise.

Puis-je obtenir plus d’adresses ?

Oui. Écrivez-nous sur le chat en direct ou ouvrez un ticket, et dites-nous à quoi chacune servira — les registres d’adresses exigent une raison pour chaque attribution, c’est donc la première chose que nous devons enregistrer. Les adresses IPv4 supplémentaires sont facturées mensuellement sur le même compte, et elles apparaissent dans votre panneau une fois allouées.

Vous cherchez un serveur pour l’exécuter ?

Proxmox VE est l’un des systèmes d’exploitation que vous pouvez installer en un clic, sur du matériel qui vous appartient en propre, avec accès console et aucune licence à acheter.