43 votes

Comment configurer une adresse IP statique sur Ubuntu Server 18.04

J'ai vu certaines personnes dire que le fichier pour définir une adresse IP statique est toujours /etc/network/interfaces

Et j'ai vu d'autres personnes dire que dans 18.04 c'est maintenant dans /etc/netplan (ce qui semble rendre les gens mécontents)

J'ai essayé de mettre ceci:

version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.9/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]

Dans mon /etc/netplan/50-cloud-init.yaml et en faisant sudo netplan apply mais cela coupe simplement la connexion du serveur à Internet.

32voto

Ludovic Kuty Points 428

Toutes les réponses vous disant de modifier directement /etc/netplan/50-cloud-init.yaml sont fausses car CloudInit est utilisé et générera ce fichier. Dans Ubuntu 18.04.2, il est clairement écrit à l'intérieur du fichier :

$ cat /etc/netplan/50-cloud-init.yaml
# Ce fichier est généré à partir des informations fournies par la source de données. Les modifications apportées ne persisteront pas à travers une instance.
# Pour désactiver les capacités de configuration réseau de cloud-init, écrivez un fichier
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg avec ce qui suit :
# network: {config: disabled}
network:
    ethernets:
        eno1:
            dhcp4: true
    version: 2

Vous ne devriez donc pas modifier ce fichier mais celui sous /etc/cloud/cloud.cfg.d/ si vous voulez toujours utiliser CloudInit.

Une autre façon est de désactiver complètement CloudInit en créant d'abord un fichier vide /etc/cloud/cloud-init.disabled (voir https://cloudinit.readthedocs.io/en/latest/topics/boot.html) et ensuite les autres réponses sont OK. Sous Ubuntu 18.04.2, j'ai dû utiliser dpkg-reconfigure cloud-init pour qu'il prenne en compte le fichier /etc/cloud/cloud-init.disabled. Je trouve cela un peu bizarre.

Je vous suggère de renommer le fichier (pas le bon nom puisque 50-cloud-init.yaml nous laisse penser qu'il utilise toujours CloudInit).

Ensuite, vous pourriez vous retrouver avec un fichier nommé /etc/netplan/01-netcfg.yaml qui contient la configuration ci-dessous. Notez l'utilisation du moteur networkd au lieu de NetworkManager car la configuration est sur un serveur.

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
      addresses: [192.168.1.246/24]
      gateway4: 192.168.1.1
      nameservers:
         addresses: [192.168.1.1]

15voto

Benyamin Jafari Points 1687

Ceci est une instruction pour définir une adresse IP statique dans Ubuntu-Server 18.04 et 20.04

$ sudo nano /etc/netplan/50-cloud-init.yaml

Remplacez votre configuration, par exemple, les lignes suivantes:

# Ce fichier décrit les interfaces réseau disponibles sur votre système
# Pour plus d'informations, voir netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:  # Le nom de votre interface Ethernet.
     dhcp4: no
     addresses: [192.168.1.137/24]
     gateway4: 192.168.1.1
     nameservers:
       addresses: [8.8.8.8,8.8.4.4]

Appliquez les changements:

$ sudo netplan apply

En cas de problèmes, exécutez:

$ sudo netplan --debug apply

[REMARQUE]:

  • /24 équivaut à 255.255.255.0
  • ens160 est le nom de votre interface Ethernet, vous pouvez l'obtenir en utilisant $ ifconfig
  • La configuration des interfaces réseau d'Ubuntu 16.04 et 14.04 se fait par une méthode différente.
  • Le fichier est au format YAML : Utilisez des espaces, pas de tabulations.

8voto

Bill Gary Points 2638

J'ai trouvé une autre façon d'utiliser cloud-init.

  1. Modifiez le fichier /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg - le contenu semble être le même que celui de /etc/netplan.

  2. Nettoyez, redémarrez et réinitialisez cloud-init avec cette commande :

    sudo cloud-init clean -r
  3. C'est tout ! Votre système redémarrera, cloud-init se réinitialisera et prendra en compte le changement dans /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg et les appliquera à /etc/netplan/50-cloud-init.yaml et tout ira bien. Vérifiez avec ifconfig.

7voto

badger_8007 Points 228

Ubuntu 18.04 utilise désormais Netplan pour configurer les interfaces réseau, donc la configuration doit être faite dans le fichier /etc/netplan/50-cloud-init.yaml, la documentation conseille de ne plus toucher au vieux fichier /etc/network/interfaces. J'ai utilisé cette configuration avec ma machine virtuelle Ubuntu Server et cela fonctionne jusqu'à présent, assurez-vous simplement que les informations sont correctes; le paramètre optional: true est censé accélérer le temps de démarrage en ne vérifiant pas si l'interface est connectée ou non, c'est la valeur par défaut, de plus il n'est pas nécessaire de déclarer des valeurs non utilisées, par exemple DHCP, s'ils sont absents, ils sont considérés comme désactivés, le moteur de rendu par défaut dans Ubuntu Server est networkd donc il n'est pas nécessaire de le déclarer. En se basant sur les informations de votre publication, cela devrait ressembler à ceci :

network:
    ethernets:
        eht0:
            addresses:
            - 192.168.1.9/24
            gateway4: 192.168.1.1
            nameservers:
                addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]
            optional: true
    version: 2

Une fois que vous avez enregistré le fichier, exécutez sudo netplan --debug apply le drapeau debug affichera plus d'informations et peut aider à détecter toute erreur. Vérifiez le câble Ethernet, s'il s'agit d'une machine virtuelle, vérifiez la configuration de la VM. Si vous utilisez un WLAN j'ai lu que c'est un peu plus compliqué à configurer mais je n'ai pas encore configuré de machine connectée en WiFi avec cette version serveur.

Si vous souhaitez plus d'informations sur Netplan, il existe un site web, avec quelques exemples de configuration basiques.

https://netplan.io/

6voto

HubbleT Points 61

Le fichier de configuration est au format YAML : n'utilisez pas de TABULATION lors de la configuration du fichier. Cela ne fonctionne qu'avec un ESPACE.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X