我正在尝试将 VRF 接口添加到 Linux 中的网络命名空间。我得到了
RTNETLINK answers: invalid argument.
我使用的内核版本是来自 kernel.org 的 4.15.0
以下是我正在运行的命令的确切列表及其相关输出
$IP link add vrf-red type vrf table 10
$IP netns add foo
$IP link set vrf-red netns foo
RTNETLINK answers: Invalid argument
这是否不支持?如果支持,理由是什么?
使用案例:我尝试在同一个 Linux 机器中设置两个 PE 设备,因此每个 PE 设备都有一个单独的网络。现在我想将 VRF 设备添加到 PE,netns
以便稍后可以在 PE 中运行 zebra netns
,它将使用此命名空间中可用的 VRF。
我是否遗漏了什么?
答案1
是的,确实无法将 VRF 接口添加到netns
下面是相关代码-(来自我使用的内核源代码-4.15.0drivers/net/vrf.c
行1257
)
/* don't allow vrf devices to change network namespaces. */
dev->features |= NETIF_F_NETNS_LOCAL;
答案2
虽然您无法将 VRF 接口移动到网络命名空间,但您可以在命名空间中创建:
ip netns add foo
ip -n foo link add vrf-red type vrf table 10