我有一个网络接口eth0
,它将我的主网络作为未标记的流量,以及一个带有标记流量的“管理”网络,其 id 为18
。这是它的配置方式:
10-eth0.网络:
[Match]
Name=eth0
[Link]
RequiredForOnline=yes
[Network]
DHCP=v4
VLAN=vlan18
VLAN18.netdev:
[NetDev]
Name=vlan18
Kind=vlan
[VLAN]
Id=18
vlan18.网络:
[Match]
Name=vlan18
[Network]
Address=10.10.1.1/24
启动时,服务器将eth0
通过 DHCP 获取 IP,并vlan18@eth0
使用静态 IP 为“管理”网络创建10.10.1.1
,一切正常。
我怎样才能告诉 networkctl 创建vlan18@eth0
接口但不在启动时启动它?这个想法是,在需要的时候,有一堆脚本可以执行ip link set vlan18 up
/ip link set vlan18 down
访问该网络。
谢谢。
答案1
根据文档,解决此问题的方法是添加网络定义部分ActivationPolicy=manual
:Link
激活策略=
指定 systemd-networkd 管理链接管理状态的策略。具体来说,这控制 systemd-networkd 如何更改网络设备的“IFF_UP”标志,该标志有时由系统管理员通过运行 ip link set dev eth0 up 或 ip link set dev eth0 down 等来控制,也可以使用 networkctl up eth0 或 networkctl down eth0 进行更改。
采取“up”、“always-up”、“manual”、“always-down”、“down”或“bound”之一。当设置为“手动”时,systemd-networkd 不会自动更改链接的管理状态;系统管理员必须根据需要手动启动或关闭接口。
来源:https://www.freedesktop.org/software/systemd/man/systemd.network.html#ActivationPolicy=
vlan18.网络:
[Match]
Name=vlan18
[Network]
Address=10.10.1.1/24
[Link]
ActivationPolicy=manual
不幸的是,据报道这里 (github/systemd)和这里(超级用户)systemd 中似乎有一个错误,导致它ActivationPolicy
在 VLAN 中被忽略。该配置适用于常规网络接口,没有问题。