如何在 Linux/Systemd/Networkd 启动时启用 VRF

How to enable VRF on startup on Linux/Systemd/Networkd

我使用 systemd-networkd 创建了两个 VRF :

文件:/etc/systemd/network/vrf20.netdev

[NetDev]
Name=vrf-mpls-red
Kind=vrf
 
[VRF]
Table=20

文件:/etc/systemd/network/vrf30.netdev

[NetDev]
Name=vrf-mpls-green
Kind=vrf
 
[VRF]
Table=30

每个 VRF 都有一些关联的网络接口。

系统启动后,两个VRF都是“DOWN”:

3: vrf-mpls-red: <NOARP,MASTER> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/ether fe:ab:58:be:29:ab brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 1280 maxmtu 65535 
    vrf table 20 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
4: vrf-mpls-green: <NOARP,MASTER> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/ether 26:a8:71:a0:9b:b2 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 1280 maxmtu 65535 
    vrf table 30 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
File : `/etc/systemd/network/vrf20.netdev`

我必须使用 ip link set dev vrf-mpls-redip link set dev vrf-mpls-green 来使 VRF“UP”并在同一 VRF 内的接口之间进行网络通信。

如何配置联网以自动将 VRF“UP”?

您需要 .network 文件来配对您的 .netdev

例如 99-vrf.network 与:

[Match]
Name=vrf-*

[Link]
ActivationPolicy=up
RequiredForOnline=no

将调出您的两个 vrf。还要注意文件命名的准确性,名称的开头始终使用 00-10-90-。