重启后 netplan 配置自动应用不起作用,如何修复?

重启后 netplan 配置自动应用不起作用,如何修复?

我正在使用 ubuntu 22.04 并尝试在启动时自动应用以下 netplan:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enx00e04c680202:
      addresses:
        - 192.168.200.100/24
        - 169.254.1.100/24
      routes:
       - to: default
         via: 192.168.200.220
         metric: 200
      routes:
       - to: default
         via: 169.254.1.220
         metric: 300

为此,我创建了一个/etc/systemd/system/netplan-apply.service包含以下内容的文件:

[Unit]
Description=Apply Netplan configuration on startup
After=network.target

[Service]
ExecStart=/usr/sbin/netplan apply
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

并使用命令启动服务

sudo systemctl enable netplan-apply.service
sudo systemctl start netplan-apply.service

启动后,这些设置尚未应用,如命令ip address show dev enx00e04c680202所示:

3: enx00e04c680202: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 00:e0:4c:68:02:02 brd ff:ff:ff:ff:ff:ff

仅过了一会儿(一分钟)或在我尝试连接到该适配器的设备后,此命令才ip address show dev enx00e04c680202显示:

3: enx00e04c680202: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:e0:4c:68:02:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.100/24 brd 192.168.200.255 scope global noprefixroute enx00e04c680202
       valid_lft forever preferred_lft forever

我的问题是:这也是一个错误(**),还是系统需要一些时间(一分钟)才能应用 netplan 配置?还是我做错了什么?如何确保启动后始终应用 netplan 配置?

(**)该错误指的是,尽管我为该适配器指定了两个 IP 地址,但enx00e04c680202命令ip address show dev enx00e04c680202只显示一个,请参阅这里

答案1

netplan config 会在启动时通过 netplan 生成器自动应用/lib/systemd/system-generators/netplan,在netplan.ioUbuntu 23.04 之前的版本中以及netplan-generatorUbuntu 23.10 及更高版本的软件包中均有应用。无需创建自定义 systemd 单元来应用 netplan config。

启动后配置接口可能需要一些时间;这可能取决于硬件。

关于第二个 IP 接口未出现,您正在尝试静态分配地址169.254.1.100/24169.254.0.0/16地址空间保留用于 IPv4 自动配置;网络堆栈可能拒绝允许您静态分配此范围内的 IP 地址。您可以使用该指令启用此范围内的地址link-local,例如:

enx00e04c680202:
  addresses:
    - 192.168.200.100/24
  routes:
   - to: default
     via: 192.168.200.220
     metric: 200
  link-local: [ ipv4, ipv6 ]

https://netplan.readthedocs.io/en/stable/netplan-yaml/#properties-for-all-device-types以获得 的解释link-local

相关内容