我正在使用 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.io
Ubuntu 23.04 之前的版本中以及netplan-generator
Ubuntu 23.10 及更高版本的软件包中均有应用。无需创建自定义 systemd 单元来应用 netplan config。
启动后配置接口可能需要一些时间;这可能取决于硬件。
关于第二个 IP 接口未出现,您正在尝试静态分配地址169.254.1.100/24
。169.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
。