2,369 瀏覽數

Linux – Vlan

VLAN
透過 VLan 的功能能將一個實體的 switch 將他切割成多個 logical broadcast domain (所有的廣播封包 broadcast package 只會在此 doamin 中傳送).
Trunk
如果要讓不同交換機上的 VLAN 主機相通,必須要設定一個網路埠為共用的 trunk ,但如果是不同 VLAN 的主機之間要互通,這要透過路由功能 Routing.
switch 上的埠可以設定成為 Trunk Port 或是 Access Port ,一般設定為 Access Port(直接接到主機),剛剛說的 Trunk Port 就是指 Switch 與 Switch 之間讓彼此的 Vlan 相互溝通的.

在 Linux 下設定 VLAN 也很簡單就是在原先的訊框 (Frame) 指定 tag 而這 tag 的數字即是 VLAN ID. VLAN 已經被 IEEE 列為標准協定的一員 802.1q ,且一開始沒設定任何 VLAN 的 switch 其所有的網路埠的 VLAN ID 皆為 1.
vlan01
Linux 的核心也是有支援 VLAN 功能,主要就是在網路埠上的訊框加上指定的 VLAN Tag .設定使用上很簡單.只要 2 步驟即可.

  • 步驟一
    目前 RedHat 是將 VLAN 編譯成模組的方式來支援,所以先看看你的 Linux 是否已經掛載了 802.1q(VALN) 的模組.

    [root@benjr ~]# modprobe 8021q
    [root@benjr ~]# lsmod |grep -i 8021q
    
  • 步驟二
    開始設定 VLAN ID .我們透過指令 #vconfig add [interface-name] [vlan_id] 這邊要注意的一點是要設定網路裝置 [interface-name] 必須是 active 的,可以透過 #ifconfig 查詢到的.[vlan_id] 可以為 0-4095.

    [root@benjr ~]# vconfig add eth0 10
    

    這樣系統就會多出一組 eth0.10 的裝置出來,這裝置將只接受含有 VLAN ID =10 的訊框.所有設定好的 VLAN 網路埠都可以透過 /proc/net/vlan/config 來查詢到.不過這樣的設定下次重新開機就會失效了,還需要將他寫在 /etc/rc.local,讓他在開機時候就會生效.如果是要立即移除時可使用 #vconfig rem [vlan-name] 來移除.

    詳細設定 VLan 請參考 http://benjr.tw/93197

不過這並不符合我當初的構想是將 Linux 下多個網路埠把他當成可以使用 VLAN 的 switch. 

參考文件 http://linux.vbird.org/somepaper/20060622-linux_vlan.pdf

不過這樣的應用我不是很懂為什麼要將一個網路埠切割成多個並將子埠指派不同的 VLAN ID.上網查了一下似乎有一種應用叫做單臂路由器 one-armed-router,是用來在多個虛擬網路中傳送封包.而一個單臂路由器上所連接網路埠都是再同一個實體網路埠上.看起來不是很懂還是有其他的應用方式.

發表迴響