如何使用 netplan 向 DHCP 接口添加静态辅助 IP?

如何使用 netplan 向 DHCP 接口添加静态辅助 IP?

我的服务器有一个文件 /etc/netplan/50-cloud-init.yaml,其内容如下:

# 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

这会产生以下接口配置:

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
       ...

到目前为止一切顺利。但现在我需要将 10.0.0.250 作为附加辅助静态 IP 添加到此接口。最好的方法是什么?我创建了一个新文件 /etc/netplan/60-service-ip.yaml,其中包含:

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

这似乎有效,但它将动态 IP 重新定义为静态 IP。

答案1

它实际上更简单,您只需dhcp4: true像这样添加到您的静态配置中(如果不需要,请禁用 v6):

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

答案2

我遇到了同样的问题,在 Azure 中,我将 dhcp 地址设置为辅助地址,将静态地址设置为主地址。将 dhcp 地址保留为主要地址很重要,因为 Azure 虚拟网络提供网关和名称服务器信息。

我找到了这个解决方法:

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

具体来说,在 Azure 中,我们在 Azure 资源端分配静态 IP 地址,通常由 dhcp 将其带到客户操作系统。因此,即使客户操作系统将其视为动态 IP,它也始终会从 Azure 获取相同的静态 IP。
上面,我强制将 dhcp IP 置于辅助 IP 之前。
在我的例子中,它按预期工作。

答案3

Ask Ubuntu 上的答案

复制:

解决方案很简单,只需设置静态 IP 地址并启用 DHCP。基本上,您只需添加dhcp4: yes到您的配置中即可。

此配置为我提供了一个主静态 IP 地址和一个辅助 DHCP 分配的 IP 地址:

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]

ip address show enp0s3 的结果如下:

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

地址 10.1.2.96 是辅助 DHCP 分配的地址,如辅助动态关键字所示。

答案4

最简单的方法(并且更容易自动化)是创建第二个名为“/etc/netplan/60-static.yaml”的文件,内容如下:

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

并执行:

netplan try

相关内容