Я пытаюсь добавить интерфейс VRF в сетевое пространство имен в Linux. Я получаю
RTNETLINK answers: invalid argument.
Я использую версию ядра 4.15.0 с kernel.org
Ниже приведен точный список команд, которые я запускаю, и соответствующий вывод.
$IP link add vrf-red type vrf table 10
$IP netns add foo
$IP link set vrf-red netns foo
RTNETLINK answers: Invalid argument
Это не поддерживается? Если да, то в чем обоснование?
Пример использования: Я пытаюсь настроить два устройства PE в одном Linux-боксе, поэтому у меня есть отдельные netns для каждого устройства PE. Теперь я хочу добавить устройство VRF в PE, netns
чтобы позже я мог запустить, скажем, zebra в PE netns
, и он будет использовать VRF, который доступен в этом пространстве имен.
Я что-то упускаю?
решение1
Да, действительно невозможно добавить интерфейс VRF кnetns
Ниже приведен соответствующий код (из исходных кодов ядра, которые я использую - 4.15.0 в drivers/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