配置不自动启动的 systemd-network vlan

配置不自动启动的 systemd-network vlan

问题:在 systemd-networkd 下,如何配置系统启动时不会自动出现的 VLAN?

细节:我正在运行 Ubuntu 20.04 服务器。我的工作站有两个网络接口。eth0 是我的主接口,连接到我的常规网络,并且按预期工作。eth1 连接到交换机中继端口,使我可以访问我偶尔用于开发或测试目的的许多其他内部网络。我在 systemd-networkd(/etc/systemd/network)中定义了两个 vlan。每个 vlan 都定义了一个网桥,用于各种容器或虚拟机。

按照配置,eth1 和 VLAN 在重启时自动启动。由于我很少使用这些 VLAN 或网桥,所以我希望它们保持关闭状态,直到我手动启动它们。我尝试设置 ActivationPolicy=manual,但这仅适用于物理接口,不适用于 VLAN。

我的当前配置文件如下所示。有什么办法可以防止 networkd 自动启动 VLAN 吗?

11-eth1.网络

[Match]
Name=eth1
MACAddress=[obscured]

[Link]
ActivationPolicy=manual

[Network]
VLAN=vlan22
VLAN=vlan24

12-eth1.netdev

[NetDev]
Name=eth1
Kind=vlan
MACAddress=[obscured]

21-vlan22.netdev

[NetDev]
Name=vlan22
Kind=vlan

[VLAN]
Id=22

22-vlan24.netdev

[NetDev]
Name=vlan24
Kind=vlan

[VLAN]
Id=24

31-vlan22.网络

[Match]
Name=vlan22

[Network]
Bridge=br22
DHCP=yes

32-vlan24.网络

[Match]
Name=vlan24

[Network]
Bridge=br24
DHCP=yes

41-br22.netdev

[NetDev]
Name=br22
Kind=bridge

42-br24.netdev

[NetDev]
Name=br24
Kind=bridge

答案1

我自己也遇到过这个问题。我需要systemd-networkd创建很多 VLAN,稍后我会从另一个应用程序管理它们。出于某种原因,既没有关闭ActivationPolicy=manual也没有ActivationPolicy=down关闭接口;相反,systemd-networkd只是在 VLAN 上忽略它并让接口保持打开状态。我怀疑发生的事情是 VLAN 接口默认打开,并且systemd-network没有主动关闭它。

我通过创建一个触发器服务解决了这个问题,该服务在 VLAN 接口启动时运行,然后立即将其关闭。由于我的 VLAN 不受文件systemd-networkd .network( ActivationPolicy=manual) 管理,因此它们保持关闭状态。

首先,创建一个辅助 .service 文件:/lib/systemd/system/[email protected]

[Unit]
Description=Interface Forced Shutdown Service

[Service]
Type=oneshot
ExecStart=ip link set %i down

[Install]
WantedBy=sys-subsystem-net-devices-%i.device

请注意,这是一个可以与任何界面一起使用的模板。

最后,对于您想要自动关闭的任何接口,启用相应的服务:

systemctl enable [email protected]
systemctl enable [email protected]

几点注意事项:

  • 从技术上讲,链接可能会在几毫秒内恢复,然后再断开。这可能会或可能不会给您带来安全隐患。
  • 我不能 100% 确定在systemd-networkd启动接口和[email protected]关闭接口之间不存在狭窄的竞争条件(这可能导致接口保持启动状态)。

相关内容