默认情况下,所有物理接口都是VLAN 1的子接口
brctl addbr vlan_default_1
brctl addif vlan_default_1 <all physical interfaces>
以下更改接口VLAN的操作,都需要先把接口从vlan 1中删除
brctl delif vlan_default_1 <ethx>
VLAN接口的创建实现为创建一个网桥设备
brctl addbr vlan_access_100
或者
ip link add vlan_access_100 type bridge
添加VLAN子接口:
brctl addif vlan_access_100 eth0
brctl addif vlan_access_100 eth1
在物理接口配置access vlan时,将物理口加入对应vlan id的网桥vlan_access_(id),如果网桥不存在,首先创建网桥。
brctl addbr vlan_access_100
将eth0设置为access接口
brctl addif vlan_access_100 eth0
将eth1设置为access接口
brctl addif vlan_access_100 eth1
说明:在步骤1)和 2)中都可创建access vlan,添加子接口,作用相同。
比如将eth1更改为trunk接口,允许通过的VLAN ID为 100,101,102。
由于在 2)中配置了eth1的access模式vlan 100,首先删除它
brctl delif vlan_access_100 eth1
创建100,101,102三个vlan接口
ip link add link eth1 name eth1.100 type vlan id 100
ip link add link eth1 name eth1.101 type vlan id 101
ip link add link eth1 name eth1.102 type vlan id 102
由于在 2)中创建了access vlan 100,与此处trunk中被允许的vlan 100冲突,将其删除
brctl delif vlan_access_100 eth0
brctl delbr vlan_access_100
创建新的bridge,将access vlan 100与trunk vlan 100合并,将之前删除的eth0 access 100添加回来
brctl addbr vlan_trunk_100
brctl addif vlan_trunk_100 eth0
brctl addif vlan_trunk_100 eth1.100
注意,如果之后要更改eth1为access接口,需要还原eth0的access vlan 100的配置。
配置eth1接口的pvlan为110
ip link add link eth1 name eth1.110 type vlan id 110
brctl addbr vlan_access_pvlan_110
brctl addif vlan_access_pvlan_110 eth1
假设eth2接口配置了access vlan 110
brctl addif vlan_access_pvlan_110 eth2
如果数据包的VLAN id等于trunk接口的pvlan,在由trunk发出时,去掉其vlan字段。
配置eth2为hybrid模式接口,允许通过的VLAN ID为 200,201,202。
创建200,201,202三个vlan接口(带有此三个vlan tag的数据包可接收)
ip link add link eth2 name eth2.200 type vlan id 200
ip link add link eth2 name eth2.201 type vlan id 201
ip link add link eth2 name eth2.202 type vlan id 202
配置eth2接口的pvid 205,接收到不带vlan的数据包,依据vlan 205转发
brctl addbr vlan_access_205
brctl addif vlan_access_205 eth3 // 假定eth3配置了access vlan 205
brctl addif vlan_access_205 eth2
与trunk模式不同,hybrid模式可指定发送时是否带有vlan tag,比如vlan 200/201带tag发送、vlan 202不带tag。
brctl addbr vlan_hybrid_tag_200
brctl addif vlan_hybrid_tag_200 eth2.200
brctl addif vlan_hybrid_tag_200 eth4 // 假定eth4配置了access vlan 200
brctl addbr vlan_hybrid_tag_201
brctl addif vlan_hybrid_tag_201 eth2.201
brctl addif vlan_hybrid_tag_201 eth5 // 假定eth5配置了access vlan 201
brctl addbr vlan_hybrid_untag_202
brctl addif vlan_hybrid_untag_202 eth2
brctl addif vlan_hybrid_untag_202 eth6 // 假定eth6配置了access vlan 202
创建supervlan,supervlan不能包含物理口
brctl addbr vlan_supervlan_200
ifconfig vlan_supervlan_200 192.168.1.1
创建子vlan,添加子接口;将子vlan添加到supervlan中
brctl addbr vlan_subvlan_201
brctl addif vlan_subvlan_201 eth10
brctl addif vlan_subvlan_201 eth11
brctl addif vlan_supervlan_200 vlan_subvlan_201
创建service vlan接口eth0.300,vlan id等于300。协议proto选择802.1ad时TPID为0x88a8,proto选择802.1Q时,TPID为0x8100。
ip link add link eth0 eth0.300 type vlan proto 802.1ad id 300
或者
ip link add link eth0 eth0.300 type vlan proto 802.1Q id 300
添加customer vlan 301.
ip link add link eth0.300 eth0.300.301 type vlan proto 802.1Q id 301
brctl addbr vlan_default_1
brctl addif vlan_default_1 <all physical interfaces>
以下更改接口VLAN的操作,都需要先把接口从vlan 1中删除
brctl delif vlan_default_1 <ethx>
1)创建VLAN接口
VLAN接口的创建实现为创建一个网桥设备
brctl addbr vlan_access_100
或者
ip link add vlan_access_100 type bridge
添加VLAN子接口:
brctl addif vlan_access_100 eth0
brctl addif vlan_access_100 eth1
2)设置物理接口ACCESS VLAN
在物理接口配置access vlan时,将物理口加入对应vlan id的网桥vlan_access_(id),如果网桥不存在,首先创建网桥。
brctl addbr vlan_access_100
将eth0设置为access接口
brctl addif vlan_access_100 eth0
将eth1设置为access接口
brctl addif vlan_access_100 eth1
说明:在步骤1)和 2)中都可创建access vlan,添加子接口,作用相同。
3)设置物理口TRUNK VLAN
比如将eth1更改为trunk接口,允许通过的VLAN ID为 100,101,102。
由于在 2)中配置了eth1的access模式vlan 100,首先删除它
brctl delif vlan_access_100 eth1
创建100,101,102三个vlan接口
ip link add link eth1 name eth1.100 type vlan id 100
ip link add link eth1 name eth1.101 type vlan id 101
ip link add link eth1 name eth1.102 type vlan id 102
由于在 2)中创建了access vlan 100,与此处trunk中被允许的vlan 100冲突,将其删除
brctl delif vlan_access_100 eth0
brctl delbr vlan_access_100
创建新的bridge,将access vlan 100与trunk vlan 100合并,将之前删除的eth0 access 100添加回来
brctl addbr vlan_trunk_100
brctl addif vlan_trunk_100 eth0
brctl addif vlan_trunk_100 eth1.100
注意,如果之后要更改eth1为access接口,需要还原eth0的access vlan 100的配置。
4)设置物理接口TRUNK的PVLAN
配置eth1接口的pvlan为110
ip link add link eth1 name eth1.110 type vlan id 110
brctl addbr vlan_access_pvlan_110
brctl addif vlan_access_pvlan_110 eth1
假设eth2接口配置了access vlan 110
brctl addif vlan_access_pvlan_110 eth2
如果数据包的VLAN id等于trunk接口的pvlan,在由trunk发出时,去掉其vlan字段。
5)创建Hybrid接口
配置eth2为hybrid模式接口,允许通过的VLAN ID为 200,201,202。
创建200,201,202三个vlan接口(带有此三个vlan tag的数据包可接收)
ip link add link eth2 name eth2.200 type vlan id 200
ip link add link eth2 name eth2.201 type vlan id 201
ip link add link eth2 name eth2.202 type vlan id 202
配置eth2接口的pvid 205,接收到不带vlan的数据包,依据vlan 205转发
brctl addbr vlan_access_205
brctl addif vlan_access_205 eth3 // 假定eth3配置了access vlan 205
brctl addif vlan_access_205 eth2
与trunk模式不同,hybrid模式可指定发送时是否带有vlan tag,比如vlan 200/201带tag发送、vlan 202不带tag。
brctl addbr vlan_hybrid_tag_200
brctl addif vlan_hybrid_tag_200 eth2.200
brctl addif vlan_hybrid_tag_200 eth4 // 假定eth4配置了access vlan 200
brctl addbr vlan_hybrid_tag_201
brctl addif vlan_hybrid_tag_201 eth2.201
brctl addif vlan_hybrid_tag_201 eth5 // 假定eth5配置了access vlan 201
brctl addbr vlan_hybrid_untag_202
brctl addif vlan_hybrid_untag_202 eth2
brctl addif vlan_hybrid_untag_202 eth6 // 假定eth6配置了access vlan 202
6)创建supervlan与subvlan
创建supervlan,supervlan不能包含物理口
brctl addbr vlan_supervlan_200
ifconfig vlan_supervlan_200 192.168.1.1
创建子vlan,添加子接口;将子vlan添加到supervlan中
brctl addbr vlan_subvlan_201
brctl addif vlan_subvlan_201 eth10
brctl addif vlan_subvlan_201 eth11
brctl addif vlan_supervlan_200 vlan_subvlan_201
7)创建QinQ
创建service vlan接口eth0.300,vlan id等于300。协议proto选择802.1ad时TPID为0x88a8,proto选择802.1Q时,TPID为0x8100。
ip link add link eth0 eth0.300 type vlan proto 802.1ad id 300
或者
ip link add link eth0 eth0.300 type vlan proto 802.1Q id 300
添加customer vlan 301.
ip link add link eth0.300 eth0.300.301 type vlan proto 802.1Q id 301