Linux不顯式支持super-vlan,只支持vlan,如果要實現super-vlan,就必須通過vlan橋接+ectables過濾二層數據幀的方式來實現。
vlan橋接可以實現super-vlan下的vlan互訪和對外訪問:通過super-vlan的三層接口地址;
ectables可以過濾vlan之間的廣播幀:這是因為linux下的橋接實現並不能隔離廣播域,也就是說假如橋接一邊的VLAN 2中發出一個廣播包,橋接另一邊的VLAN 3也能收到該廣播包,這顯然不符合super-vlan的“二層隔離,三層互通”的原則。
簡單的配置示例(不包含ectables的配置),vmware驗證通過:
1.創建bridge1:
brctl addbr bridge1
2.將eth0接口加入bridge1:
ifconfig eth0 0.0.0.0 down
ifconfig eth0 0.0.0.0 promisc
brctl addif bridge1 eth0
ifconfig bridge1 192.168.0.2 netmask 255.255.255.0 up
3.創建VLAN:
vconfig add eth0 2
vconfig add eth0 3
4.將VLAN加入bridge:
ifconfig eth0.2 0.0.0.0 down
ifconfig eth0.2 0.0.0.0 promisc
brctl addif bridge1 eth0.2
ifconfig eth0.3 0.0.0.0 down
ifconfig eth0.3 0.0.0.0 promisc
brctl addif bridge1 eth0.3
5.進行arp綁定(因為網關192.168.0.1是vmware的vmnet1,不是路由器,無法獲取到目的IP的MAC地址):
arp -s 192.168.1.120 00:26:18:c2:4f:c0 -i eth0.2
arp -s 192.168.1.120 00:26:18:c2:4f:c0 -i eth0.3
arp -s 192.168.1.29 BC:AE:C5:C1:77:89 -i eth0.2
arp -s 192.168.1.29 BC:AE:C5:C1:77:89 -i eth0.3
route add default gw 192.168.0.1
6.利用traceroute工具進行測試,在目標PC 192.168.1.29 上進行抓包:
traceroute -i eth0.2 192.168.1.29
traceroute -i eth0.3 192.168.1.29
7.可以發現兩次traceroute的源地址一樣,但是所攜帶的VLAN ID卻不相同。
上述配置只是當前有效,如果需要啟動後生效,需要將上述配置加入/etc/rc.d/rc.local中,讓系統每次啟動時候自動運行