Я хочу реализовать топологию, показанную на рисунке ниже, с использованием сетевых пространств имен (от ns1 до ns4).
Я могу реализовать указанную выше топологию без разделения сети на две разные VLAN, используя следующие команды (на основе этой статьи под названием: Представляем сетевые пространства имен Linux):
sudo ip netns add ns1
sudo ip netns add ns2
sudo ip netns add ns3
sudo ip netns add ns4
sudo ip link add veth1 type veth peer name veth11
sudo ip link add veth2 type veth peer name veth12
sudo ip link add veth3 type veth peer name veth13
sudo ip link add veth4 type veth peer name veth14
sudo ip link set veth11 netns ns1
sudo ip link set veth12 netns ns2
sudo ip link set veth13 netns ns3
sudo ip link set veth14 netns ns4
sudo ip netns exec ns1 ifconfig lo up
sudo ip netns exec ns2 ifconfig lo up
sudo ip netns exec ns3 ifconfig lo up
sudo ip netns exec ns4 ifconfig lo up
sudo ifconfig veth1 10.1.11.1/24 up
sudo ifconfig veth2 10.1.12.1/24 up
sudo ifconfig veth3 10.1.13.1/24 up
sudo ifconfig veth4 10.1.14.1/24 up
sudo ip netns exec ns1 ifconfig veth11 10.1.11.2/24 up
sudo ip netns exec ns2 ifconfig veth12 10.1.12.2/24 up
sudo ip netns exec ns3 ifconfig veth13 10.1.13.2/24 up
sudo ip netns exec ns4 ifconfig veth14 10.1.14.2/24 up
sudo ip netns exec ns1 route add default gw 10.1.11.1 veth11
sudo ip netns exec ns2 route add default gw 10.1.12.1 veth12
sudo ip netns exec ns3 route add default gw 10.1.13.1 veth13
sudo ip netns exec ns4 route add default gw 10.1.14.1 veth14
Исходя из приведенной выше настройки, каждый может пинговать всех остальных. Теперь я хочу изолировать ns1 и ns3 в одной VLAN, а ns2 и ns4 - в другой. Для реализации VLAN я пытаюсь использовать что-то вроде следующего:
sudo vconfig add veth1 11
sudo vconfig add veth3 11
sudo vconfig add veth11 12
sudo vconfig add veth13 12
Тем не менее, каждый может пинговать всех остальных, что означает, что сеть не разделена на две разные LANS. Как я могу добиться того, что пытаюсь? Есть ли другой метод маркировки VLAN для виртуальных интерфейсов?
veth [1,2,3,4] все еще находятся в глобальном пространстве имен и, следовательно, маршрутизируются ядром.
Ваш vconfig
Команды добавляют интерфейс vlan к соответствующему veth, что вам не нужно. (ip link show
должен показать veth1.11 и т. д. (в зависимости от того, как установлено name_type))
Я не уверен, чего вы пытаетесь достичь с помощью VLAN. Если вы хотите изолировать n1 + n3 и ns2 + ns4, переместите другой конец veth в другие пространства имен:
ip netns add blue
ip link set netns veth1 blue
ip link set netns veth3 blue
ip netns add yellow
ip link set netns veth2 yellow
ip link set netns veth4 yellow