Configurer des adresses IPv4 et IPv6 publiques sur un serveur Cloud ou un vServer avec netplan (Ubuntu 22.04)

Pour Serveurs Cloud

Dans cet article, nous vous montrons comment ajouter des adresses IPv4 et IPv6 publiques supplémentaires sur un serveur sur lequel Ubuntu 20.04 ou 22.04 est installé.

La configuration du réseau est effectuée dans les images IONOS pour Ubuntu 20.04 et Ubuntu 22.04 via netplan. La configuration du réseau n'est plus contrôlée par le fichier /etc/network/interfaces, mais par des fichiers avec l'extension .yaml, qui se trouvent dans le répertoire /etc/netplan. S'il y a plusieurs fichiers dans ce répertoire, ils sont chargés dans l'ordre lexical.

Remarque

Les articles suivants expliquent comment établir une connexion réseau chiffrée avec votre serveur à l'aide de Secure Shell (SSH) :

Ordinateur avec système d'exploitation Windows

Ordinateur avec système d'exploitation Linux

Attention

Ces instructions ne sont valables que pour un Serveur Cloud. Pour ajouter des adresses IPv4 et des adresses IPv6 sur un Serveur Dédié, veuillez consulter les articles suivants :

Ajouter une adresse IPv4 publique sur un Serveur Dédié (Ubuntu 20.04)

Ajouter une adresse IPv6 publique sur un Serveur Dédié (Ubuntu 20.04)

La manière de configurer des adresses IPv4 et des adresses IPv6 sur un vServer ou Serveur Cloud sur lequel Ubuntu 18.04, Ubuntu 20.04, Debian 10, 11 ou Debian 12 est installé est décrite dans l'article suivant :

Ajouter des adresses IPv4 et IPv6 publiques sur un serveur Linux (Ubuntu 18.04, Ubuntu 20.04, Debian 10, 11 et Debian 12)

Voici comment configurer d'autres adresses IPv4 et IPv6 publiques dans Ubuntu 20.04 et 22.04 :

Conditions préalables
  • Vous avez attribué une ou plusieurs adresses IPv4 et/ou IPv6 publiques supplémentaires à votre serveur dans Cloud Panel.

  • Vous avez ouvert une session sur le serveur.

  • Vous avez noté les adresses IPv4 et les adresses IPv6 du serveur.

Vérifier si netplan est utilisé pour la configuration du réseau

Pour vérifier si votre serveur utilise déjà netplan pour la configuration du réseau, saisissez la commande suivante :

  • Pour vérifier si le paquet netplan.io est installé sur ton système Ubuntu ou Debian, saisissez la commande suivante :
    [root@localhost ~]# dpkg -l | grep netplan.io
     Si le paquet netplan.io est installé, vous obtiendrez par exemple les informations suivantes :

    root@localhost:~# dpkg -l | grep netplan.io
    ii netplan.io 0.105-0ubuntu2~22.04.3 amd64 YAML network configuration abstraction for various backends

  • Allez dans le répertoire /etc/netplan.
    [root@localhost ~]# cd /etc/netplan

  • Vérifiez qu'il n'y a pas déjà un fichier de configuration dans ce répertoire. Pour cela, saisissez la commande suivante :
    [root@localhost ~]

Remarque

Si le paquet netplan.io n'est pas installé et que le répertoire /etc/netplan n'existe pas, cela signifie que netplan n'a pas été installé. Dans ce cas, n'installez pas Netplan, mais suivez dans ce cas les étapes décrites dans l'article suivant :

Ajouter des adresses publiques IPv4 et IPv6 sur un serveur dédié (Ubuntu 20.04, 22.04 et Debian 10 et 11)

Déterminer l'interface réseau

Déterminez le nom de fichier de l'interface réseau. Pour ce faire, saisissez la commande suivante :

[root@localhost ~]# ip addr

Dans cet exemple, le nom de l'interface réseau est ens192 :

root@localhost:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:08:a5:c6 brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 217.160.141.60/32 metric 100 scope global dynamic ens192
    inet6 2001:8d8:1801:5d2::1/64 scope global dynamic noprefixroute
       valid_lft 3443sec preferred_lft 3443sec
    inet6 fe80::250:56ff:fe08:a5c6/64 scope link
       valid_lft forever preferred_lft forever

Afficher le serveur DNS par défaut

  • Pour afficher les serveurs DNS utilisés, saisissez les commandes suivantes :
    [root@localhost ~]# curl http://169.254.169.254/latest/meta_data/dns/nameservers -Lv

    [root@localhost ~]# curl http://169.254.169.254/latest/meta_data/dns/nameservers6 -Lv

    Ensuite, les serveurs DNS utilisés seront affichés à la fin de la sortie. Exemple :

    [root@localhost ~]# curl http://169.254.169.254/latest/meta_data/dns/nameservers -Lv
    * Trying 169.254.169.254...
    * TCP_NODELAY set
    * Connected to 169.254.169.254 (169.254.169.254) port 80 (#0)
    > GET /latest/meta_data/dns/nameservers HTTP/1.1
    > Host : 169.254.169.254
    > User-Agent : curl/7.61.1
    > Accept : */*
    >
    < HTTP/1.1 200 OK
    < Date : Thu, 08 Sep 2022 12:19:36 GMT
    < Serveur : Apache
    < Strict-Transport-Security : max-age=63072000 ; includeSubDomains
    < Vary : Accept-Encoding
    < Access-Control-Allow-Origin : *
    < Access-Control-Allow-Headers : X-TOKEN, X-HASH, X-MICROTIME, X-USER, Content-Type, X-API-TOKEN, Authorization
    < Access-Control-Allow-Methods : PUT, GET, POST, DELETE, OPTIONS
    < Access-Control-Expose-Headers : Error-Msg
    < Cache-control : no-cache, no-store, max-age=0
    < Access-Control-Allow-Origin : *
    < Access-Control-Allow-Headers : X-TOKEN, X-HASH, X-MICROTIME, Content-Type, X-API-TOKEN, Authorization
    < Access-Control-Allow-Methods : PUT, GET, POST, DELETE, OPTIONS
    < Access-Control-Expose-Headers : Error-Msg
    < Transfer-Encoding : chunked
    < Content-Type : text/plain;charset=UTF-8
    <
    212.227.123.16,212.227.123.17
    * Connection #0 to host 169.254.169.254 left intact

  • Notez les serveurs DNS. Dans l'exemple ci-dessus, les serveurs DNS sont affichés au-dessus de la ligne * Connection #0 to host 169.254.169.254 left intact.

  • Si le serveur DNS pour IPv6 ne s'affiche pas, saisissez la commande suivante :
    [root@localhost ~]# resolvectl --no-pager |grep Server
    Exemple :
    root@localhost:/etc/netplan# resolvectl --no-pager |grep Server
    Current DNS Server: 212.227.123.16
           DNS Servers: 212.227.123.16 212.227.123.17 2001:8d8:fe:53:72ec::1

Afficher la passerelle pour IPv4 et IPv6

  • Pour afficher la passerelle par défaut de l'interface active, saisissez les commandes suivantes :

    IPv4 :
    [root@localhost ~]# ip route show | grep 'default'
    IPv6 :
    [root@localhost ~]# ip -6 route show | grep 'default'.

  • Notez les adresses IP des passerelles. Elles sont listées directement après la partie default via. Exemples :

    Passerelle IPv4
    root@localhost:~# ip route show default
    default via 10.255.255.1 dev ens192 proto dhcp src 217.160.141.60 metric 100

    Passerelle IPv6 root@localhost:~# ip -6 route show | grep 'default'
    default via fe80::1 dev ens192 proto ra metric 100 expires 4sec pref high

    Dans cet exemple, la passerelle IPv6 est fe80::1.

Ajouter des adresses IPv4 et IPv6

  • Vérifiez qu'il n'y a pas déjà un fichier de configuration dans ce répertoire. Pour cela, saisissez la commande suivante :
    [root@localhost ~]# ls /etc/netplan

Attention !

Si le fichier 00-Public_network.yaml se trouve dans le répertoire, ne le renommez pas, car ce fichier est nécessaire pour le réseau public.

  • Si un fichier de configuration se trouve dans ce répertoire, renommez-le. Pour cela, saisissez la commande suivante et remplacez les caractères génériques.
    [root@localhost ~]# mv ANCIEN_FICHIER_DE_CONFIGURATION.yaml ANCIEN_FICHIER_DE_CONFIGURATION.yaml.old

  • Créez le fichier /etc/netplan/01-netcfg.yaml avec l'éditeur vi. Pour cela, saisissez la commande suivante :
    [root@localhost ~]# vi etc/netplan/01-netcfg.yaml

Remarques
  • L'éditeur vi dispose d'un mode d'insertion et d'un mode commande ou d'instruction. Vous pouvez accéder au mode d'insertion en appuyant sur la touche [i]. Dans ce mode, les caractères saisis sont immédiatement insérés dans le texte. Pour accéder au mode commande, appuyez ensuite sur [ESC]. Lorsque vous utilisez le mode commande, vos saisies au clavier sont interprétées comme des commandes.

  • Pour quitter vi et enregistrer le fichier, entrez la commande :wq, puis appuyez sur Entrée.

  • Ajoutez les informations suivantes :
    network:
      version: 2
      renderer: networkd
      ethernets:
        INTERFACE RESEAU:
          addresses:
            - ADRESSE-IPv4-PRINCIPALE/32
            - ADRESSE-IPv4-SUPPLEMENTAIRE 1/32
            - ADRESSE-IPv6-PRINCIPALE/64
            - ADRESSE-IPv6-SUPPLEMENTAIRE 1/64  
          gateway6: PASSERELLE POUR IPv6
          nameservers:
            addresses:
              - ADRESSE-IP POUR SERVEUR DE NOM 1
              - ADRESSE-IP POUR SERVEUR DE NOM 2
          routes:
            - to: default
              via: PASSERELLE POUR IPv4
            - to: default
              via: PASSERELLE POUR IPv6


    Exemple : network:
      ethernets:
        ens192:
          addresses:
          - 217.160.141.60/32
          - 82.165.254.101/32
          - 2001:8d8:1801:5d2::1/64
          - 2001:8d8:1801:5d2::2/64
          gateway6: fe80::1
          nameservers:
            addresses:
            - 127.0.0.53
          routes:
            - to: default
              via: 10.255.255.1
            - to: default
              via: fe80::1

     

  • Remplacez le caractère générique INTERFACE RESEAU par l'interface réseau déterminée. Dans l'exemple ci-dessus, il s'agit de l'interface réseau ens192. Saisissez ensuite l'adresse IPv4 principale, les adresses IPv4 supplémentaires ainsi que et l'adresse IPv6 principale et les adresses IPv6 supplémentaires. Pour ce faire, remplacez les caractères génériques.

Attention
  • Les indentations font partie de la syntaxe du format YAML. Veillez donc à ce qu'elles soient correctement respectées. Dans le cas contraire, la configuration ne peut pas être reprise correctement et le serveur peut ne plus être accessible.

  • Utilisez toujours la barre d'espace pour les indentations.

  • Remplacez le caractère générique PASSERELLE POUR IPv4 par la passerelle IPv4 déterminée.

  • Remplacez les caractères génériques ADRESSE IP DU SERVEUR DE NOM 1 et ADRESSE IP DU SERVEUR DE NOM 2 par les serveurs de noms déterminés.

  • Remplacez le caractère générique PASSERELLE POUR IPv6 par la passerelle IPv6 déterminée.

  • Pour quitter vi et enregistrer le fichier, saisissez la commande :wq et appuyez ensuite sur Entrée.

  • Pour modifier les permissions du fichier 01-netcfg.yaml de manière à ce que seul le compte root puisse lire et modifier le fichier, saisissez la commande suivante :
    root@localhost:~# sudo chmod 600 /etc/netplan/01-netcfg.yaml

  • Pour vérifier le fichier de configuration, saisissez la commande suivante :
    root@localhost:~# netplan --debug apply

Attention

Les modifications que vous avez apportées au fichier /etc/netplan/01-netcfg.yaml restent valables et vous devez les modifier si elles ne sont pas correctes. Dans le cas contraire, le système d'exploitation tentera de les charger après un redémarrage.

Remarque

Si un message d'erreur similaire à celui ci-dessous s'affiche après avoir saisi la commande netplan --debug apply, par exemple, cela signifie qu'il y a un problème d'indentation dans le fichier /etc/netplan/01-netcfg.yaml :

root@localhost:# netplan --debug apply
** (generate:1617): DEBUG: 16:52:11.664: starting new processing pass
/etc/netplan/01-netcfg.yaml:2:10: Invalid YAML: mapping values are not allowed in this context:
  version: 2

Dans ce cas, corrigez l'indentation et réessayez.

  • Pour éviter les conflits, il est nécessaire de désinstaller ifupdown. Pour désinstaller ifupdown ainsi que tous les autres paquets dépendants et pour supprimer les fichiers de configuration et/ou de données d'ifupdown, saisissez la commande suivante :
    root@localhost:~# sudo apt-get autoremove --purge ifupdown

  • Effectuez un redémarrage du serveur pour que les modifications soient prises en compte. Pour ce faire, saisissez la commande suivante :
    root@localhost:~# systemctl reboot

  • Pour vérifier si l'adresse IPv4 supplémentaire a été correctement configurée, saisissez la commande suivante :
    root@localhost:~# ip addr

Remarque

Si le serveur n'est plus accessible en raison d'une erreur de configuration, vous pouvez corriger la configuration au moyen de la console KVM. Vous trouverez des instructions sur l'utilisation de la console KVM dans l'article suivant :

Utiliser la console KVM pour accéder au serveur (Serveur Cloud et Virtual Server Cloud)

Pour plus d'informations sur netplan, vous pouvez consulter les pages suivantes :

http://manpages.ubuntu.com/manpages/bionic/man5/systemd.network.5.html

https://netplan.io/examples/