网络 – 在网络命名空间之间创建VLAN

我想使用网络命名空间(ns1到ns4)实现下图所示的拓扑.

我可以使用以下命令实现上述拓扑,而无需将网络拆分为两个不同的VLAN(基于本文,标题为:Introducing Linux Network Namespaces):

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

根据上述设置,每个人都可以ping其他人.现在我想在一个VLAN中隔离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

然而,仍然每个人都可以ping其他人,这意味着网络没有分成两个不同的LAN.我怎样才能实现我的目标?是否有不同的虚拟接口VLAN标记方法?

最佳答案
有几件事情混在一起:

>在图形中,让“默认命名空间”看起来像一个开关,但是您将其配置为路由器.
>中间有路由器,vlan1和其他vlan1不同.它们不共享相同的LAN,因此它们不能位于同一VLAN中.
>您的vconfig调用将找不到veth11或veth13,因为它们不在默认命名空间中. – 你没有得到任何错误!?
> veth1和veth11是一个“管道”.为什么要为它们分配不同的VLAN ID?
>为什么不将管道的一端放在ns1中(这样做),另一端放在ns3中(而不是默认命名空间). – 然后,您可以在它们之间进行路由或桥接,甚至无需将其与ns2和ns4混合使用.
>或换句话说:不要在默认命名空间中将所有内容混合在一起,只是稍后再将它们拆分…
>您也可以按图中所示的方式进行操作,但不能使用路由或IP地址(然后在顶部使用VLAN!?!):在默认命名空间中放置两个桥,连接每个“管道”的一侧“在其中一座桥上. – 一个桥(这次配置了VLAN)也可以这样做.但是,我没有检查Linux桥接代码是否具有VLAN感知功能.它可能是.
>你的名字令人困惑.为什么不将“eth1a”与“eth1b”或类似的东西以对称方式结合在一起?
> ip废弃ifconfig和vconfig

转载注明原文:网络 – 在网络命名空间之间创建VLAN - 代码日志