Comment enregistrer un grand nombre d'adresses IP avec Debian/Ubuntu ? | INTROSERV
EUR
european

EUR

usa

USD

French Fr
Ex. VAT Ex. VAT 0%

Comment enregistrer un grand nombre d'adresses IP avec Debian/Ubuntu ?

Un seul serveur a souvent besoin de plus d'une adresse IP. Ce guide décrit deux façons d'attribuer plusieurs adresses IPv4 à une seule interface réseau sous Debian et Ubuntu :

  • automatiquement, avec un script shell et un service systemd, recommandé pour les grandes plages ;
  • directement dans netplan, recommandé lorsque les adresses doivent survivre à une reconfiguration du réseau et pas seulement à un redémarrage.

Les deux méthodes rendent la configuration persistante après les redémarrages. Lisez la note à la fin de chaque méthode pour choisir celle qui convient à votre cas.

Quand vous avez besoin de plusieurs adresses IP

Plusieurs charges de travail courantes sur un seul serveur nécessitent plus d'une adresse publique :

  • Serveurs de messagerie qui utilisent des adresses distinctes et des enregistrements PTR pour isoler la réputation d'envoi de différents domaines.
  • Serveurs web qui nécessitent des adresses dédiées pour des applications héritées, l'isolation des clients ou des règles de pare-feu spécifiques.
  • Infrastructure proxy et VPN, où chaque instance proxy ou chaque point de terminaison VPN est lié à sa propre adresse publique.
  • Conteneurs ou machines virtuelles utilisant des adresses IP routées.

Les forfaits VPS d'INTROSERV incluent par défaut deux adresses IPv4 et un sous-réseau IPv6 /112. Des adresses IPv4 supplémentaires sont disponibles dans de nombreux emplacements. Vérifiez la disponibilité pour votre région dans le configurateur de commande.

Avant de commencer

Vous avez besoin d'un accès root et du nom de l'interface qui portera les adresses supplémentaires. Les versions modernes de Debian et Ubuntu n'utilisent plus l'ancien nom eth0, ne le présumez donc pas. Listez les interfaces avec leurs adresses actuelles et identifiez celle qui possède déjà votre adresse principale :

ip -br addr show

La sortie affiche des entrées telles que ens3, enp1s0 ou eth0 à côté des adresses déjà configurées sur elles. L'interface qui porte déjà votre IP principale est celle à utiliser dans les étapes ci-dessous. Les exemples ici utilisent ens3.

Avertissement : Ces étapes modifient la configuration réseau d'un serveur auquel vous accédez très probablement par SSH. Une erreur peut couper votre propre accès. Si possible, gardez une seconde voie d'entrée, comme la console du fournisseur ou IP-KVM, et préférez les options d'application sécurisée présentées ci-dessous.

Créer le script d'adresses

Un court script ajoute une plage d'adresses en une seule passe. Créez-le dans /usr/local/sbin :

nano /usr/local/sbin/extra-ips.sh

Collez le script suivant. Remplacez le nom de l'interface, le préfixe et la plage par le bloc qui vous est attribué. Les adresses ci-dessous utilisent la plage de documentation de RFC 5737 et sont des espaces réservés :

#!/bin/bash set -euo pipefail # Interface qui portera les adresses supplementaires. IFACE="ens3" # Prefixe commun ainsi que la premiere et la derniere valeur de l'octet d'hote. # Remplacez-les par le bloc qui vous est attribue. PREFIX="203.0.113" FIRST=10 LAST=60 # Arreter tot avec un message clair si le nom de l'interface est incorrect. if ! ip link show "$IFACE" >/dev/null 2>&1; then echo "Interface $IFACE introuvable. Verifiez le nom avec : ip -br addr show" >&2 exit 1 fi for HOST in $(seq "$FIRST" "$LAST"); do ip addr replace "${PREFIX}.${HOST}/32" dev "$IFACE" done

Info : Les adresses utilisent un préfixe /32 à dessein. L'interface principale possède déjà la route de son sous-réseau, de sorte que chaque adresse secondaire n'a besoin que d'une route d'hôte locale. Un préfixe /32 empêche le noyau d'ajouter une route de sous-réseau en double et garde la table de routage propre. Le script utilise ip addr replace plutôt que ip addr add afin de pouvoir être réexécuté en toute sécurité sans signaler d'erreur pour les adresses qui existent déjà.

Rendez le script exécutable. Notez le chemin complet, qui était la partie manquante dans la version précédente de ce guide :

chmod +x /usr/local/sbin/extra-ips.sh

Rendre les adresses persistantes avec un service systemd

Exécuter le script à la main n'ajoute les adresses que jusqu'au prochain redémarrage. Pour les appliquer automatiquement au démarrage, créez un service systemd qui exécute le script pendant le démarrage. Cette méthode fonctionne de la même manière que le système utilise netplan, systemd-networkd ou l'ancienne pile ifupdown.

Créez le fichier d'unité :

nano /etc/systemd/system/extra-ips.service

Ajoutez ce qui suit :

[Unit] Description=Assign additional IP addresses After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/sbin/extra-ips.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target

Rechargez systemd et activez le service pour qu'il s'exécute maintenant et à chaque démarrage :

systemctl daemon-reload systemctl enable --now extra-ips.service

Confirmez que le service a démarré correctement :

systemctl status --no-pager extra-ips.service

Avertissement : Les adresses ajoutées par ce script ne font pas partie de la configuration de netplan ou de systemd-networkd. Un netplan apply ultérieur, un networkctl reconfigure ou tout redémarrage du réseau peut les supprimer. Elles reviennent au prochain redémarrage, ou immédiatement si vous exécutez systemctl restart extra-ips.service. Si les adresses doivent également rester en place après une reconfiguration du réseau, utilisez plutôt la méthode netplan décrite ci-dessous.

Alternative : définir les adresses dans netplan

Sous Ubuntu, où netplan est la solution par défaut, les adresses peuvent être déclarées directement dans netplan. La pile réseau les traite alors comme des adresses gérées, de sorte qu'elles survivent à une reconfiguration. Cela convient à une petite liste fixe. Pour une grande plage, le service systemd ci-dessus s'adapte mieux, car netplan nécessite une ligne par adresse.

Lorsque plusieurs fichiers netplan définissent la même interface, leurs paramètres peuvent se remplacer ou se combiner de manière inattendue, ce qui peut écarter votre adresse principale et couper l'accès. Modifier le fichier de configuration existant est généralement plus sûr que de créer un autre fichier pour la même interface. Ouvrez le fichier qui configure déjà votre interface, généralement /etc/netplan/50-cloud-init.yaml ou /etc/netplan/00-installer-config.yaml :

ls /etc/netplan/ nano /etc/netplan/50-cloud-init.yaml

Conservez tous les paramètres existants de l'interface, tels que dhcp4, l'adresse principale, la passerelle et les serveurs de noms. Ajoutez les adresses supplémentaires sous une liste addresses sur la même interface. L'exemple ci-dessous conserve DHCP pour l'adresse principale et ajoute trois adresses secondaires :

network: version: 2 ethernets: ens3: dhcp4: true addresses: - 203.0.113.10/32 - 203.0.113.11/32 - 203.0.113.12/32

Les versions récentes de netplan avertissent si le fichier est lisible par d'autres utilisateurs. Restreignez les autorisations pour supprimer cet avertissement :

chmod 600 /etc/netplan/50-cloud-init.yaml

Testez la modification avec netplan try. Il applique la configuration et la rétablit automatiquement au bout de 120 secondes si vous ne confirmez pas, ce qui vous protège d'une perte d'accès distant :

netplan try

Si la connexion reste active et que tout semble correct, confirmez à l'invite, puis appliquez la configuration de façon permanente :

netplan apply

Vérifier le résultat

Listez les adresses actuellement liées à l'interface et confirmez que les nouvelles sont présentes :

ip -br addr show ens3

Les adresses supplémentaires devraient maintenant apparaître dans la sortie et seront rétablies automatiquement après chaque redémarrage.

Supprimer les adresses

Pour supprimer une seule adresse, retirez-la de l'interface :

ip addr del 203.0.113.10/32 dev ens3

Si vous avez utilisé le script et le service, arrêtez l'attribution de toute la plage au démarrage en désactivant et en supprimant le service :

systemctl disable --now extra-ips.service rm /etc/systemd/system/extra-ips.service systemctl daemon-reload

Si vous avez utilisé netplan, supprimez les lignes supplémentaires de la liste addresses dans le fichier netplan, puis exécutez netplan apply.

Dépannage

Si le service ne démarre pas, vérifiez son état et ses journaux :

systemctl status --no-pager extra-ips.service journalctl -u extra-ips.service

Confirmez les points suivants :

  • le nom de l'interface dans le script correspond au nom réel donné par ip -br addr show ;
  • les adresses appartiennent au bloc qui vous est attribué ;
  • le script est exécutable.

Si vous avez utilisé par erreur un préfixe /24 au lieu de /32, la table de routage montre le symptôme sous la forme de plusieurs routes de sous-réseau en double. Vérifiez-la avec :

ip route

Ce guide se concentre sur IPv4. Comme pour IPv4, les adresses IPv6 secondaires sont normalement ajoutées comme adresses d'hôte avec un préfixe /128, avec la même commande ip addr replace, par exemple ip addr replace 2001:db8::10/128 dev ens3.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA