13 votes

Comment ajouter une IP secondaire statique à une interface DHCP à l'aide de netplan ?

Mon serveur a un fichier /etc/netplan/50-cloud-init.yaml avec le contenu suivant :

# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    version: 2
    ethernets:
        ens3:
            dhcp4: true
            match:
                macaddress: fa:**:**:**:**:**
            set-name: ens3

Cela donne la configuration d'interface suivante :

2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc fq_codel state UP group default qlen 1000
    link/ether fa:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.5/24 brd 10.0.0.255 scope global dynamic ens3
       ...

Jusqu'à présent, tout va bien. Mais maintenant, je dois ajouter 10.0.0.250 comme IP statique secondaire supplémentaire à cette interface. Quelle est la meilleure façon de le faire ? J'ai créé un nouveau fichier /etc/netplan/60-service-ip.yaml avec :

network:
    version: 2
    ethernets:
        ens3:
            addresses:
              - 10.0.0.5/24
              - 10.0.0.250/24

Cela semble fonctionner, mais cela redéfinit une IP dynamique comme une IP statique.

6voto

Broco Points 1899

C'est en fait beaucoup plus facile, vous ajoutez juste dhcp4: true à votre configuration statique comme ceci (et désactivez la v6 si vous n'en avez pas besoin) :

network:
    version: 2
    ethernets:
        ens3:
            dhcp4: yes
            dhcp6: no
            addresses:
              - 10.0.0.250/24

4voto

Insan Points 31

J'ai eu le même problème où j'ai une adresse dhcp comme secondaire et statique comme primaire dans Azure. Il est important de laisser l'adresse dhcp comme primaire car le réseau virtuel Azure fournit des informations sur la passerelle et le serveur de noms.

J'ai trouvé cette solution de contournement :

network:
    version: 2
    ethernets:
        eth0:
          dhcp4: true
          addresses:
              - 10.0.2.6/24 (IP acquired by DHCP)
              - 10.0.2.21/24
          match:
              macaddress: 00:0d:3a:4f:45:f0
          set-name: eth0

Dans Azure, nous attribuons une adresse IP statique du côté des ressources Azure et normalement, cette adresse est transmise au système d'exploitation invité par dhcp. Par conséquent, même si l'OS invité la traite comme une IP dynamique, il recevra toujours la même IP statique d'Azure.
Ci-dessus, j'ai forcé à mettre l'IP dhcp avant l'IP secondaire.
Dans mon cas, cela a fonctionné comme prévu.

3voto

Lenniey Points 5062

Réponse sur Ask Ubuntu

Copie :

La solution était assez simple, il suffisait de définir une adresse IP statique et d'activer le DHCP. En gros, il suffit d'ajouter dhcp4: yes à votre configuration.

Cette configuration m'a donné une adresse IP statique primaire et une adresse IP secondaire assignée par DHCP :

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes
      dhcp6: no
      addresses: 
        - 10.1.2.15/24
      gateway4: 10.1.2.1
      nameservers:
        search:
          - example.com
        addresses: [10.1.2.10]

Le résultat de ip address show enp0s3 m'a donné :

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:ab:cd:ef brd ff:ff:ff:ff:ff:ff
    inet 10.1.2.15/24 brd 10.0.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet 10.1.2.96/24 brd 10.0.1.255 scope global secondary dynamic enp0s3
       valid_lft 3224sec preferred_lft 3224sec
    inet6 fe80::a00:27ff:fe20:2c40/64 scope link 
       valid_lft forever preferred_lft forever

L'adresse 10.1.2.96 est l'adresse secondaire assignée par DHCP, comme indiqué par les mots-clés dynamique secondaire.

0voto

surfingonthenet Points 630

La manière la plus simple (et la plus facile à automatiser) est de créer un second fichier nommé "/etc/netplan/60-static.yaml" avec le contenu :

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      addresses:
        - 10.0.0.250/24

et exécuter :

netplan try

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