7,489 瀏覽數

Linux 設定 Vlan

透過 VLan 的功能能將一個實體的 switch 將他切割成多個 logical broadcast domain (所有的廣播封包 broadcast package 只會在此 doamin 中傳送).他的做法也很簡單就是在原先的訊框 (Frame) 指定 tag 而這 tag 的數字即是 VLAN ID. VLAN 已經被 IEEE 列為標准協定的一員 802.1q ,且一開始沒設定任何 VLAN 的 switch 其所有的網路埠的 VLAN ID 皆為 1.
vlan01
Linux 的核心也是有支援 VLAN 功能,主要就是在網路埠上的訊框加上指定的 VLAN Tag .設定使用上很簡單.
目前 RedHat 是將 VLAN 編譯成模組的方式來支援,所以先看看你的 Linux 是否已經掛載了 802.1q(VALN) 的模組.

[root@benjr ~]# modprobe 8021q
[root@benjr ~]# lsmod |grep -i 8021q

指令 #vconfig

開始設定 VLAN ID .我們透過指令 #vconfig add [interface-name] [vlan_id] 這邊要注意的一點是要設定網路裝置 [interface-name] 必須是 active 的,可以透過 #ifconfig 查詢到的.[vlan_id] 可以為 0-4095.

[root@benjr ~]# vconfig add eth1 10
Added VLAN with VID == 10 to IF -:eth1:-
[root@benjr ~]# ifconfig -a |grep -i eth1
eth1      Link encap:Ethernet  HWaddr 00:0C:29:06:A1:03
eth1.10   Link encap:Ethernet  HWaddr 00:0C:29:06:A1:03

這樣系統就會多出一組 eth1.10 的裝置出來,這裝置將只接受含有 VLAN ID =10 的訊框.所有設定好的 VLAN 網路埠都可以透過 /proc/net/vlan/config 來查詢到.如果是要立即移除時可使用 #vconfig rem [vlan-name] 來移除.

[root@benjr ~]# vconfig rem eth1.10
Removed VLAN -:eth1.10:-

不過就算沒有刪除,這樣的設定下次重新開機就會失效(消失)了.必須要再設定一次.

“eth1.X” Interfaces

剛剛設定的是暫時的,所以要長久使用還是把它寫到設定檔中 /etc/sysconfig/network-scripts/ifcfg-eth1.10

[root@benjr ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1.10
VLAN=yes
DEVICE=eth1.10
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.254.5.254
NETMASK=255.255.255.0

主要的設定就是下面兩行.
VLAN=yes DEVICE=eth1.10

“vlanX” Interfaces

我們可以設定成你想要的 VLAN 名稱,下面的 VLAN 名稱為 vlan5

[root@benjr ~]# vi /etc/sysconfig/network-scripts/ifcfg-vlan5
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan5
PHYSDEV=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=10.254.5.254
NETMASK=255.255.255.0

主要的不同就是下面的設定.
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan5
不過我在使用設定檔的時候會遇到一些奇怪問題,比如裝置起不來,或是裝置設定跑到其他裝置上面.因為現在在 Linux 下面網路裝置都是透過 NetworkManager 在設定與啟動.

NetworkManager

在 Linux 的桌面系統可以找到 NetworkManager icon ,按右鍵點選 Edit connections…
vlan01
Add 新增裝置 , 選擇 VLAN
vlan02
奇怪有錯誤訊息 Bonding, bridging, and VLANs are disabled in NetworkManager. 點選 Help 查看一下,預設這幾項功能沒有開啟須要到 /etc/sysconfig/network 設定
vlan04

[root@benjr ~]# vi /etc/sysconfig/network
NM_BOND_BRIDGE_VLAN_ENABLED=yes

[root@benjr ~]# service NetworkManager restart

回到剛剛的設定跟剛剛文字模式的設定一樣需要填寫 Parent interface ,VLAN id ,VLAN interface name 以及 IP 等資料.
vlan05
vlan06

網友的想法

  1. 自動參照通知: Linux – Vlan | Benjr.tw

發表迴響