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
Il en résulte 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'ici tout va bien. Mais maintenant, je dois ajouter 10.0.0.250 en tant qu'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 adresse IP dynamique comme une adresse IP statique.
Copie:
La solution était assez simple, il suffit de définir une adresse IP statique et d'activer DHCP. Fondamentalement, il vous suffit d'ajouter dhcp4: yes
à votre configuration.
Cette configuration m'a donné une adresse IP statique principale et une adresse IP attribuée par DHCP secondaire:
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 l'adresse IP 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 attribuée par DHCP, comme indiqué par les mots clés dynamiques secondaires.
C'est en fait beaucoup plus simple, il suffit d'ajouter dhcp4: true
à votre configuration statique comme celle-ci (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
J'ai eu un même problème où j'ai l'adresse DHCP comme secondaire et statique comme principale dans Azure. Il est important de laisser l'adresse DHCP comme principale, 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 en particulier, nous attribuons une adresse IP statique du côté des ressources Azure et normalement, elle est prise en charge par le système d'exploitation invité par DHCP. Par conséquent, même si le système d'exploitation invité le traite comme une IP dynamique, il obtiendra toujours la même IP statique d'Azure.
Ci-dessus, j'ai forcé de mettre IP DHCP en avant IP secondaire.
Dans mon cas, cela a fonctionné comme prévu.