本文将在一台linux机器上,利用linuxbridge 等技术模拟创建VLAN 环境。
首先,创建vlan interface
ip link add link ens33 name ens33.8 type vlan id 8
现在我们创建了一个带有vlan tag的端口ens33.8,tag是8,相当于vlan中的access 口,而 ens33相当于trunk 口。
然后我们再创建bridge,如下:
brctl addbr br-vlan8
我们把 ens33.8 加入br。
brctl addif br-vlan8 ens33.8
现在,我们用network namespace模拟compute,创建netns如下:
ip netns add vlan8_compute1
接下来启动netns的lo端口。这一步的目的只是为了保证试验效果,因为lo端口不启动的话netns的网络经常会比较奇怪
ip netns exec vlan8_compute1 ip link set dev lo up
我们创建veth pair
ip link add veth-a type veth peer name veth-b
veth-a,veth-b相当于网线的两端。我们把veth-a加入 vlan8_compute1这个netns,把veth-b加入 br-vlan8,这样就相当于把 vlan8_compute1 这个netns 加入了 br-vlan8。
ip link set dev veth-a netns vlan8_compute1
brctl addif br-vlan8 veth-b
现在我们只要给veth-a配置上IP,从 vlan8_compute1发出的包就会带上vlan 的tag 8.