在大多數的 IT 人員與網管人員的心中,可能會覺得 VLAN 的應用比較適合中大型網路或是 ISP 業者的網路等等,其實 VLAN 這種用在 Ethernet Switch 管理,越來越接近到中小企業的 IT 人員,怎麼說呢?近幾年來一方面這類型的設備在價位方面逐年下降,中小企業的業主投資購買的意願相對提高;另一方面切割規劃 VLAN 也真的是對於中小企業有著「增進網路安全」、「方便管理」及「增進網路效能」諸多優點。
在一般提到 VLAN(Virtual LAN)網管設定,幾乎會馬上聯想到 Cisco Switch 與 Router 等等的設備,雖然在網路設備市佔率幾乎是一面倒的由 Cisco 來主導,但比較便宜的品牌還是存在著,像是外包給大陸生產製造的 3Com 與台灣自有品牌的 D-Link 等等,俗話說的好:「一分錢一分貨」,說實在的 Cisco 真是高品質、高價位的網路設備,但一般中小企業不見得有足夠經費將全部網路配置 Cisco 等級設備,也許會遇到 3Com 或 D-Link 同級的產品來搭配使用,好在的是 VLAN 這一塊領域有著 802.1Q 的標準規格,使得不同廠商的設備能夠相容且相互溝通搭配應用,雖然本文並未實際測試這幾家廠商的設備之間相容性,但相信在未來廠商對於彼此之間的相容性應該會更好且問題更少才是。
底下介紹的流程會先以 VLAN 可能用在中小企業的方式以及能夠改善網路安全與效能的部份,進而與讀者分享設定非 Cisco 品牌設備(筆者以 3Com 設備為例)採用 802.1Q 標準來設定 VLAN。
在小型企業的網路架構中,往往「一條 ADSL 線路」搭配「一台 IP 分享器或防火牆」與「幾個普通 Switch」就可以滿足其『區域網路的應用』以及『使用網際網路功能』。但若是 IT 人員面臨到需要「管理較多數量的 PC 及 Server」以及需要「加強網路安全以及網路效能」時,此刻最常遇到的管理就是規劃多個網路區段(在英文的說法是 Broadcast Domain)來滿足這樣的需求,想以事半功倍的方式來管理這類型的網路至少需要使用『具備管理功能的 Layer 2 Switch』,而所作的管理就是耳熟能詳的 VLAN 囉。
接下來先以下圖這款常見的中小企業網路架構,藉此帶出一些中小企業網路常見問題及案例,來說明如何應用 VLAN 來管控或是改善現有的網路架構,使得 IT 工作能夠更加的有效率,相對的機房也比較整齊好管控。

機房所放置的主機,一般都是以伺服器居多,至於伺服器主機與網路設備在擺設數量方面,一個機櫃預設只會搭配一個 Switch,這樣子的擺設狀況就跟著來囉,舉例如下:假設機櫃內現有五台伺服器,其中三台伺服器會對外服務,應放置於 DMZ 網路區;另外兩台伺服器只會對內服務,故放置在 LAN 區,這時候若是使用一般無 VLAN 功能的 Switch,想要切開這兩個 Broadcast Domain 只能採用實體的方式,也就是使用兩台 Switch 來隔離。
倘若此時使用『具備管理功能的 Layer 2 Switch』來取代一般普通 Switch 的話,這樣就可以使用邏輯的方式來切開 Broadcast Domain(也就是在範例中的 DMZ 與 LAN 這兩區),甚至在未來的擴充性方面,不論您欲「增加伺服器主機」、「新增 Broadcast Domain(假設 DMZ 2 區)」或「切換主機所屬 Broadcast Domain」,如此您可以不用進入機房,插拔實體的網路線路,機房自然能夠保持整齊不凌亂,也就不需頻繁的將束線帶拆了又綁、綁了又拆。
像近年來流行的「刀鋒伺服器」,大多都建議搭配『具備管理功能的 Layer 2 Switch』模組兩個,分別提供給伺服器主機的兩個網路介面使用,這樣子的架構讓筆者感覺刀鋒像是『機櫃中的機櫃』,而優勢在於單位空間(U數)能夠擺放更多主機並整合 KVM 及 Switch 使得線路更加整齊好管理等等(線路包括了網路線、電源線、鍵盤、滑鼠與螢幕線)。

依照往常的經驗,企業遇到來訪的客戶通常會使用客戶自行攜帶的筆記型電腦來借用公司線路上網,而最常使用到的網路區域應該算是「會議室網路」或是「無線網路」,但大多數的中小企業『會議室網路或無線網路並未與公司內部網路區隔開來』,這對於一些注重區域網路安全的中大型企業,通常是不允許這類情況發生,這時候使用 VLAN 方式來切割 Broadcast domain 形成不同安全等級的網路,會是一個不錯的方式。
中大型企業難免會跨樓層,每一層也都有可能配備有會議室與無線網路基地台,在切割這類型網路的實做則是需將這些需要被區隔的網路設備與網路孔號,利用『具備管理功能的 Layer 2 Switch』將之隔離開來,來增強網路的實體安全性,至於跨樓層則透過 VLAN Trunk 的功能來銜接即可;若此時不使用 VLAN 區隔,而使用一般 Switch 替代的話,勢必會添購許多小型的 Switch 容易使得機房較凌亂造成架構較複雜等等缺點。
規劃這類型網路最繁雜的是遇到需要合中帶分、分中帶合的規格,例如「會議室網路」為了安全性而隔開使得無法存取「區域網路」,但卻有員工硬是需要從「會議室網路」來列印到「內部網路」的網路印表機,而這些需求並不是無法解決,像是使用帳號密碼認證方式存取網路(例如 802.1x 方式)只是通常需要較多的人力、物力來達成。
在 Layer 2 Switch 切割 VLAN 後,若有不同 VLAN 之間互通的需求時,此時可使用 Router 來解決這個需要(或是 Layer 3 Switch 也可以),至於封包要通過 Router 沒意外的話就是使用 TCP/IP 囉,這樣說吧!之所以切 VLAN 規劃成不同的子網路(Subnet)很有可能就是為了未來應用 Layer 3 Routing 來連接用的。

集團企業型態的公司面臨到的網路環境更趨複雜,原因在於關係企業之間有著「分中帶合、合中帶分」的血緣關係,一些大公司的部門之間也會面臨到很類似這樣的情況,舉例來說:關係企業各公司的不同人員可能分散在不同樓層,並且關係企業之間卻需要相互隔離條件下,卻又需要共用某些設備。此時還是一樣利用劃分 VLAN 來區隔關係企業,在搭配 VLAN Trunk 連結各個樓層之間的網路,至於「合中帶分、分中帶合」的規劃,則交給 Layer 3 Switch 搭配 ACL 設定,或是 Router 搭配 ACL 也行,附帶一提的有些 Layer 2 Switch 提供 VLAN Overlapping(重疊)功能,這樣子就可以規劃將「需要被共同使用的設備」(例如 網路印表機)放在『重疊區域』來共用。
有一些應用程式(或是設備上的程式)不停的會散佈廣播封包,不論她是故意的或是不得已的,能避免去使用這些程式的話是最好,但是遇到一定要使用這些程式或設備的話,建議您為了網路效能著想,將之隔離到不同的 Broadcast Domain 此時也就是可以應用 VLAN 技術來區隔這些影響網路效能的問題主機。簡單的說:「相同 Broadcast Domain 主機越多,廣播封包所影響的網路效能越嚴重。」
為了效能著想,若是單一個 Broadcast Domain 主機數量過多時,則需要考慮使用 VLAN 來切割成多個 Broadcast Domain,至於 Broadcast Domain 之間的溝通,還是老話一句:『利用 Layer 3 Switch 或路由器來完成』,並且還能兼顧主機存取權限(應用 ACL)的優點。
現代化的電腦病毒不再是以「摧毀電腦作業系統」或「毀損使用者資料」為主要目的,而是著重於「癱瘓網路」、「搞的電腦怪怪地」(運作不順暢)且伺機「尋找下一台電腦主機來攻擊」並「長長久久的傳播下去」特性。針對「癱瘓網路」與「找尋下一個目標電腦」這兩點來說,切割越多個不同的 VLAN(這裡意思是 Broadcast Domain),電腦病毒散佈的速度也會比較緩慢,影響所及的電腦數量也許會比較少,若是將主機統統都放在同一個 Broadcast Domain底下,相當容易發生機瘟(與「雞瘟」同音)的情況,而當中毒的主機數量一多,很容易加深查詢病毒的根源主機難度。
現今企業資料量越來越大,使用 Storage(儲存設備)的機會也越來越多,甚至會用到 Storage 專用的網路(也就是 SAN,Storage Area Network),若使用到的像是 iSCSI(或 AoE,ATA Over Ethernet)的 SAN,則免不了會使用到原來既有的「乙太網路」(也就是 LAN),這時候切開成不同的 VLAN 能夠提高 SAN 安全性,另外在效能方面也會有所提昇喔!
iSCSI 本身就有許多存取設定(Host-Based)與使用者認證機制(User-Based),所以切開 VLAN 對於安全影響不大但對於整體效能則較有幫助;另外像 AoE(ATA Over Ethernet)因為本身沒有許多的安全機制(類似 Fibre Channel 的情況),所以搭配 VLAN 來增加安全性會是一個不錯的選擇,這就好比 Fibre Channel 搭配 Fibre Channel 的 SAN Switch,這個時候 SAN Switch 來切割存取的 Initiator 與 Target 的道理類似。
談到設定 VLAN 最好先行了解 802.1Q 標準規格,雖然 VLAN 其他可行通訊協定還有 Cisco ISL(Inter-Switch Link)與 3Com VLT(Virtual LAN Trunk)的私家規格,但我們在本文中將目標縮小只針對「802.1Q」通訊規格以及使用「Port-Based」VLAN (以埠號為主)。
802.1Q 規格設計主要是將 Switch 傳輸的 Frame(框架)資料,藉由定義出標準的 Tag(標籤),附加到 Frame 上去,其中 Tag 內註明著此 Frame 所屬的 VLAN ID(號碼),如此一來促使所有支援 802.1Q 規格的 Switch 與 Switch 之間,利用加上 Tag 或解讀 Tag 的能力,進而利用 VLAN ID 相同或不同,建構成一個或數個跨越 Switch 之間的 Broadcast Domain 也就是 Virtual LANs。
至於連接 Switch 與 Switch 之間的網路連接埠,也就是負責傳遞多個不同 VLAN ID 的連線,則稱為「Trunk」。Port-Based VLAN 主要是運行在 OSI 七層的 Layer 2,而 Switch 主要也就是利用 MAC 來判斷傳輸來源端主機與目的端主機,應用 802.1Q Tag 後,使得我們能在一堆實體 Switch 交錯網路之中,分割出許多「邏輯上」的虛擬網路。
快要到我們實戰設定 VLAN 的時候了,在設定之前需先行了解一下預設的情況;當我們拿到一個從未設定過的 Switch 時,預設值會將所有的 Port 都同屬於 VLAN 1(VLAN one),這個 Default VLAN 在傳輸 Frame 期間預設都不會加上 Tag,這個網路同時也是我們遠端管理 Switch 時,預設所使用的網路。
下圖為 3Com Switch 4900 於終端機管理模式下,選單 bridge/vlan/detail 下所顯示預設 VLAN 的情形,可看到所有的 Port(共 16 個埠)皆屬於 VLAN ID: 1 名稱為 Default VLAN
--------------------------------------sw4900 (1)------------------------ Select menu option (bridge/vlan): detail Select VLAN ID (1,all)[all] : VLAN ID: 1 Name: Default VLAN stpIgnoreMode: Disabled Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 1-16 none Aggregated Links AL1-AL13 none Unicast Frames: 2736675515 Octets: 1773744401 Multicast Frames: 9059800 Broadcast Frames: 99580296 Select menu option (bridge/vlan):
終於來到我們實戰 VLAN 的部份,首先來介紹此次實做所使用到的設備與連接情形,首先出場的是一台 3Com 4900 Switch 搭配 RS-232 序列線(此線材主要用於 Console 下管理 Switch 用的,連接到 PC 的 Com1/Com2 埠)以及電腦三台,那三台電腦主要是用來設定與測試 VLAN 正常與否。在此情形下只有一台 Switch 設定多個 Port-Based VLAN 而尚未使用到 Switch 與 Switch 之間的 Trunk 功能。
接下來出場的是一台 3Com 4200 Switch,設定 VLAN 的操作方式類似 4900,而測試的主要目的則是實際操做 Trunk 功能,使得 VLAN 應用 Trunk 能夠跨越到不同的實體 Switch 上。
有管理功能的 Switch 在其主機上通常會有著 RS-232 的 Console 接頭,透過序列線來與電腦用的序列埠相連,連線軟體在 Linux 使用 minicom;Windows 則使用超級終端機,依 Switch 說明書上的指示,在此筆者調整成「9600 8 n 1」以及「無流量控制」來連線,請注意 Linux 上的 minicom 要按下 Ctrl+A 再放掉「Ctrl 與 A」後再按 Z 才能叫出主要的功能畫面。

Windows 使用超級終端機(Hyper Terminal)連線的設定畫面,點選「還原預設值」即可。

Console 連線成功後,3Com 這台 Switch 預設使用 admin 就可以登入,接下來主要就是設定這台 Switch 的 IP/Netmask 以及 admin 的密碼,之後就可以透過網路來做遠端管理。近年來的網路設備通常能夠使用 Telnet / Web-Based 兩種方式來管理,因為筆者習慣文字模式管控,所以底下皆以文字模式管控畫面為主。事實上 3Com Web-Based 畫面只能使用 IE 來看,若用 Firefox 是行不通的(3Com 不支援 Firefox 瀏覽)。
下方為 3Com Switch 文字模式的主選單畫面,直接按下「Enter」可以看到選單說明。
Menu options: --------------3Com SuperStack 3 Switch 4900--------------- bridge - Administer bridge-wide parameters feature - Administer system features gettingStarted - Basic device configuration logout - Logout of the Command Line Interface physicalInterface - Administer physical interfaces protocol - Administer protocols security - Administer security system - Administer system-level functions trafficManagement - Administer traffic management Type ? for help
在 3Com Switch 選單模式下,選擇「protocol/ip/basicConfig」接著採 manual(手動)設定,輸入 IP/Netmask 及 Gateway(Gateway 可設定或不設定皆可,在本篇中 Gateway 沒應用到)
--------------------------------------sw4900 (1)------------------------ Select menu option (protocol/ip): basicConfig Enter configuration method (auto,manual,none)[none]: m Enter IP address [0.0.0.0 ]: 172.16.9.111 Enter subnet mask [0.0.0.0 ]: 255.255.0.0 Enter gateway IP address [0.0.0.0 ]: IP address: 172.16.9.111 Subnet mask: 255.255.0.0 Gateway IP address: 0.0.0.0
若要確認設定的 IP 是否生效及正確,選擇「protocol/ip/interface/summary」
--------------------------------------sw4900 (1)------------------------ Select menu option (protocol/ip/interface): summary Select IP interface (1-2,all)[all]: The IP address for interface 1 has been configured Manually. Index Type IP address Subnet mask State VLAN ID ------------------------------------------------------------------------- 1 Primary 172.16.9.111 255.255.0.0 Up 1 2 SLIP 192.168.101.1 255.255.255.0 Up n/a Select menu option (protocol/ip/interface):
從畫面上可以看到 IP 是使用在 VLAN ID 1 的,也就是 Default VLAN。
要先設定 admin 密碼,才能 Telnet / Web 管理;接下來選擇「system/management/password」來設定 admin 的密碼。
--------------------------------------sw4900 (1)------------------------ Select menu option (system/management): password Enter new password: Retype password: The command line interface password has been successfully changed. Select menu option (system/management):
來到 PC 設定網路 IP 位址與 Switch 同網段後(例 172.16.2.102/255.255.0.0),就可以使用 telnet 遠端連線到 Switch 來做管理。
al@172.16.2.102:~> telnet 172.16.9.111 Trying 172.16.9.111... Connected to 172.16.9.111. Escape character is '^]'. Login: admin Password: Menu options: --------------3Com SuperStack 3 Switch 4900--------------- bridge - Administer bridge-wide parameters feature - Administer system features gettingStarted - Basic device configuration logout - Logout of the Command Line Interface physicalInterface - Administer physical interfaces protocol - Administer protocols security - Administer security system - Administer system-level functions trafficManagement - Administer traffic management Type ? for help --------------------------------------sw4900 (1)------------------------ Select menu option:
這台共有 12 + 4 = 16 port 的 Switch,可由選單「physicalInterface/ethernet/summary」觀察現況,要注意的是在選擇『單位:埠號』(Select Ethernet ports (unit:port...,all,?):)3Com 的編號方式是從 1 開始,這點與 Cisco 從 0 開始編號有點兒不同;底下是選擇「all」的情況。
Refresh Time:10 Second Port State Mode Rx Packets Rx Octets Errors ------------------------------------------------------------------------------- 1:1 enabled 100full (Auto) 354461364 2698911398 0 1:2 enabled 100full (Auto) 657390282 436111796 0 1:3 enabled 100full (Auto) 1204778587 1559529787 0 1:4 enabled Link Down (Auto) 0 0 0 1:5 enabled Link Down (Auto) 0 0 0 1:6 enabled 1000full (Auto) 298277310 2873502628 0 1:7 enabled 1000full (Auto) 1639804230 1075567329 0 1:8 enabled Link Down (Auto) 0 0 0 1:9 enabled 100full (Auto) 0 0 0 1:10 enabled Link Down (Auto) 0 0 0 1:11 enabled Link Down (Auto) 0 0 0 1:12 enabled Link Down (Auto) 0 0 0 1:13 enabled 1000full (Auto) 1155519842 2822631160 6 1:14 enabled 1000full (Auto) 767621570 2583369626 0 1:15 enabled 1000full (Auto) 850450799 1145571845 2 1:16 enabled 1000full (Auto) 482447614 2103889613 0 Quit Counters Differences
先前提過,一開始 Switch 所有的埠預設都是 VLAN 1,待會先將主機 PC-A 連接到 1:10 埠,應該會是通的(與 VLAN 1 同 Broadcast Domain),之後預計將 1:10 的網路埠,切到 VLAN 2 且不加上 Tag,這樣 PC-A 就無法與 VLAN 1 的主機溝通才是。
切割前示意表:U 代表 Untagged、T 代表 Tagged
| VLAN ID | 連接埠成員(Tag/Untag) |
| 1 | 1-16(U) |
PC-A(例如 IP 設定為 172.16.7.13/255.255.0.0)接到 1:10 埠測試通不通相當簡單,在尚未切割 VLAN 之前的結果應該要是通的,接下來先「建立 VLAN 2」,在選單中「bridge/vlan/create」建立 VLAN 2 如下所示
--------------------------------------sw4900 (1)------------------------ Select menu option (bridge/vlan): create Select VLAN ID (2-4094)[2]: Enter VLAN Name [VLAN 2]: Select menu option (bridge/vlan):
再來用「bridge/vlan/modify/addPort」來將 1:10 埠,新增至 VLAN 2 且『不加上 Tag』(untagged)
--------------------------------------sw4900 (1)------------------------ Select menu option (bridge/vlan/modify): addPort Select VLAN ID (1-2)[1]: 2 Select bridge ports (AL1-AL13,unit:port...,?): 1:10 Enter tag type (untagged,tagged): u
再來用「bridge/vlan/detail」可見到如下的情況,請注意:埠 1:10 已經屬於 VLAN 2 而不屬於 VLAN 1 了。
Select menu option (bridge/vlan): detail Select VLAN ID (1-2,all)[all] : VLAN ID: 1 Name: Default VLAN stpIgnoreMode: Disabled Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 1-9,11-16 none Aggregated Links AL1-AL13 none Unicast Frames: 3040602164 Octets: 2126838573 Multicast Frames: 9514426 Broadcast Frames: 104409335 VLAN ID: 2 Name: VLAN 2 stpIgnoreMode: Disabled Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 10 none Aggregated Links none none Unicast Frames: 8 Octets: 7994 Multicast Frames: 0 Broadcast Frames: 23
在設定好之後,此時 PC-A 就無法存取到 VLAN 1 的任何主機了。
切割後示意表:
| VLAN ID | 連接埠成員(Tag/Untag) |
| 1 | 1:1-9(U)1:11-16(U) |
| 2 | 1:10(U) |
接下來預計切出埠 1:11 同樣也是 untagged、屬於 VLAN 2 來測試 1:10 之間 1:11 通訊。
以下為切出埠 1:11 untagged,選單同樣也是「bridge/vlan/modify/addPort」
--------------------------------------sw4900 (1)------------------------ Select menu option (bridge/vlan/modify): addPort Select VLAN ID (1-2)[1]: 2 Select bridge ports (AL1-AL13,unit:port...,?): 1:11 Enter tag type (untagged,tagged): u
以下為「bridge/vlan/detail」資訊,VLAN 2 有兩個埠 1:10-11 皆為 untagged(請注意所處的選單層級不同),因此位於 1:11 Port 的 PC-B(假設 IP 為 172.16.8.8/255.255.0.0)應該與 PC-A(172.16.7.13)能夠互相 ping 的到而已。
--------------------------------------sw4900 (1)------------------------ Select menu option (bridge/vlan): detail Select VLAN ID (1-2,all)[all] : VLAN ID: 1 Name: Default VLAN stpIgnoreMode: Disabled Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 1-9,12-16 none Aggregated Links AL1-AL13 none Unicast Frames: 3043390409 Octets: 3370053192 Multicast Frames: 9517158 Broadcast Frames: 104435213 VLAN ID: 2 Name: VLAN 2 stpIgnoreMode: Disabled Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 10-11 none Aggregated Links none none Unicast Frames: 8 Octets: 8186 Multicast Frames: 0 Broadcast Frames: 26
此時 PC-A 與 PC-B 就都無法存取到 VLAN 1 的任何主機,但 PC-A 與 PC-B 可互相溝通(因為同屬 VLAN 2)。
切割後示意表:
| VLAN ID | 連接埠成員(Tag/Untag) |
| 1 | 1:1-9(U)1:12-16(U) |
| 2 | 1:10-11(U) |
新增一個埠屬於 VLAN 3 的手續基本上與『新增一個埠屬於 VLAN 2』相當類似,這樣做的結果只是為了表達如此能夠造成三個 VLAN 分別為:VLAN 1、VLAN 2 與 VLAN 3 各自獨立的 Broadcast Domain,因設定動作類似故不在贅述。
切割後示意表:
| VLAN ID | 連接埠成員(Tag/Untag) |
| 1 | 1:1-9(U)1:13-16(U) |
| 2 | 1:10-11(U) |
| 3 | 1:12(U) |
還記得 3Com 4900 Switch 那台有四個光纖模組埠嗎?事實上依照筆者的環境,那四個光纖埠各自接到一台 3Com 4200 Switch 上(共四台),我們接下來只要看其中一台就可以了,緊接著就以「4900 的 1:13 埠」接到「4200 的 1:27 埠」來解說 Trunk(同時通行 VLAN 1 與 VLAN 2)。
如圖
這台共有 26 + 2 = 28 port 的 Switch,也是由選單「physicalInterface/ethernet/summary」觀察現況,情形如下:
請注意畫面中只顯示到 1:18 埠,請按「n」顯示 1:11~1:28、按「p」回到上一頁、按「q」離開
Refresh Time:10 Second Timestamp: 19 Seconds Port State Mode Rx Packets Rx Octets Errors ------------------------------------------------------------------------------- 1:1 enabled 100full (Auto) 46 6320 0 1:2 enabled 100full (Auto) 298 42095 0 1:3 enabled 100full (Auto) 6 635 0 1:4 enabled 100full (Auto) 220 36817 0 1:5 enabled 100full (Auto) 1554 222783 0 1:6 enabled 100full (Auto) 236 49143 0 1:7 enabled 100full (Auto) 0 0 0 1:8 enabled 100full (Auto) 0 0 0 1:9 enabled 100full (Auto) 114 8864 0 1:10 enabled 100full (Auto) 0 0 0 1:11 enabled Link Down (Auto) 0 0 0 1:12 enabled Link Down (Auto) 0 0 0 1:13 enabled 100full (Auto) 57 4178 0 1:14 enabled Link Down (Auto) 0 0 0 1:15 enabled Link Down (Auto) 0 0 0 1:16 enabled Link Down (Auto) 0 0 0 1:17 enabled Link Down (Auto) 0 0 0 1:18 enabled Link Down (Auto) 0 0 0 Quit Counters Differences Next
下圖中的 1:27 埠就是連接到 4900 Switch 的 1:13 埠,也就是我們設定 Trunk 的重點。
Refresh Time:10 Second Timestamp: 81 Seconds Port State Mode Rx Packets Rx Octets Errors ------------------------------------------------------------------------------- 1:11 enabled Link Down (Auto) 0 0 0 1:12 enabled Link Down (Auto) 0 0 0 1:13 enabled 100full (Auto) 252 18528 0 1:14 enabled Link Down (Auto) 0 0 0 1:15 enabled Link Down (Auto) 0 0 0 1:16 enabled Link Down (Auto) 0 0 0 1:17 enabled Link Down (Auto) 0 0 0 1:18 enabled Link Down (Auto) 0 0 0 1:19 enabled Link Down (Auto) 0 0 0 1:20 enabled Link Down (Auto) 0 0 0 1:21 enabled Link Down (Auto) 0 0 0 1:22 enabled Link Down (Auto) 0 0 0 1:23 enabled Link Down (Auto) 0 0 0 1:24 enabled Link Down (Auto) 0 0 0 1:25 enabled Link Down (Auto) 0 0 0 1:26 enabled Link Down (Auto) 0 0 0 1:27 enabled 1000full (Auto) 9009 5337529 0 1:28 enabled Link Down (Auto) 0 0 0 Quit Counters Differences Prev
為方便記憶,所以我們以相同的埠號,在兩台不同 Switch 的 1:10 埠,都切給 VLAN 2,請注意此時 4900 的 1:10 與 4200 的 1:10 雖然都是屬於 VLAN 2 但因為還沒有 Trunk 來連接,所以互相之間是不通的。
4200 Switch 設定新增 VLAN 2 且 Member Ports(成員埠)為 1:10 untagged 後的「bridge/vlan/detail」畫面
Select menu option (bridge/vlan): detail Select VLAN ID (1-2)[1]: VLAN ID: 1 Name: Default VLAN Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 1-9,11-28 none Aggregated Links AL1-AL4 none Select menu option (bridge/vlan): det Select VLAN ID (1-2)[1]: 2 VLAN ID: 2 Name: VLAN 2 Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 10 none Aggregated Links none none
設定好後就可以將原本插在 4900 1:11 埠的 PC-B(IP 172.16.8.8),插到 4200 1:10 來試試看能否 ping 到(PC-A 172.16.7.13),在還沒做好 Trunk 之前,結果應該是還不能夠互 ping 到。
3Com 4200 Switch 切割後示意表:
| VLAN ID | 連接埠成員(Tag/Untag) |
| 1 | 1:1-9(U)1:11-28(U) |
| 2 | 1:10(U) |
先從 4900 開始設定:在「bridge/vlan/modify/addPort」選單,將 1:13 埠新增到 VLAN 2 去要注意這裡是『加上 Tag』
--------------------------------------sw4900 (1)------------------------ Select menu option (bridge/vlan/modify): addPort Select VLAN ID (1-2)[1]: 2 Select bridge ports (AL1-AL13,unit:port...,?): 1:13 Enter tag type (untagged,tagged): t
從底下「bridge/vlan/detail」看出,埠 1:13 屬於「VLAN 2 加上 Tag」並且屬於「VLAN 1 不加上 Tag」
Select menu option (bridge/vlan): detail Select VLAN ID (1-2,all)[all] : all VLAN ID: 1 Name: Default VLAN stpIgnoreMode: Disabled Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 1-9,12-16 none Aggregated Links AL1-AL13 none Unicast Frames: 3048561839 Octets: 1344189637 Multicast Frames: 9523008 Broadcast Frames: 104470774 VLAN ID: 2 Name: VLAN 2 stpIgnoreMode: Disabled Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 10-11 13 Aggregated Links none none Unicast Frames: 410 Octets: 49460 Multicast Frames: 0 Broadcast Frames: 169
4900 設定 1:13 埠 Trunk 後示意表:
| VLAN ID | 連接埠成員(Tag/Untag) |
| 1 | 1:1-9(U)1:12-16(U) |
| 2 | 1:10-11(U)1:13(T) |
只設定 4900 這一邊兒是不夠的,接著設定 4200 這邊,一樣是將 Trunk 埠『1:27』新增到 VLAN 2 去且『加上 Tag』
同樣也是「bridge/vlan/modify/addPort」選單
Select menu option (bridge/vlan/modify): addPort Select VLAN ID (1-2)[1]: 2 Select bridge ports (AL1-AL4,unit:port...,?): 1:27 Enter tag type (untagged,tagged): t
接下來不免俗的觀察一下設定後的情況,類似『4900 的 1:13 埠』;『4200 的 1:27 埠』屬於「VLAN 2 加上 Tag」並且屬於「VLAN 1 不加上 Tag」
-------------------------------------4200------------------------ Select menu option (bridge/vlan): detail Select VLAN ID (1-2)[1]: 1 VLAN ID: 1 Name: Default VLAN Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 1-9,11-28 none Aggregated Links AL1-AL4 none Select menu option (bridge/vlan): detail Select VLAN ID (1-2)[1]: 2 VLAN ID: 2 Name: VLAN 2 Unit Untagged Member Ports Tagged Member Ports ------------------------------------------------------------------------ 1 10 27 Aggregated Links none none
4200 設定 1:27 埠 Trunk 後示意表:
| VLAN ID | 連接埠成員(Tag/Untag) |
| 1 | 1:1-9(U)1:11-28(U) |
| 2 | 1:10(U)1:27(T) |
最後就是測試接在 4900 之 1:10 埠 PC-A 是否 ping 的到接在 4200 之 1:10 埠 PC-B,答案是『可以』的,代表 Trunk 設定 OK 最終就完成我們的測試。
後續發展最有可能的就是銜接 Layer 3 設備,也就是 Router 或是 Layer 3 Switch,而這些設備的主要任務就是「路由」囉。談到 L2 與 L3 Switch 之間的差異,從觀念與設定畫面來看的話:Layer 2 Switch 通常只有一個 IP 值,用在 Default VLAN 的;而 Layer 3 Switch 可針對不同的 VLAN ID 來設定 IP(因為後續可做 Routing 用途)。
4900(L3 Switch)設定 IP 為 192.168.8.8/255.255.255.0 屬於 VLAN 2 後的畫面。
--------------------------------------sw4900 (1)------------------------ Select menu option (protocol/ip/interface): summary Select IP interface (1-3,all)[all]: The IP address for interface 1 has been configured Manually. Index Type IP address Subnet mask State VLAN ID --------------------------------------------------------------------------- 1 Primary 172.16.9.111 255.255.0.0 Up 1 2 SLIP 192.168.101.1 255.255.255.0 Up n/a 3 Primary 192.168.8.8 255.255.255.0 Up 2 Select menu option (protocol/ip/interface):
4200(L2 Switch)只能修改(modify)IP 卻無法新增 IP 給其他 VLAN 的畫面。
-------------------------------------4200 (1)------------------------ Select menu option (protocol/ip/interface): summary Select IP interface (1-2,all)[all]: The IP address for interface 1 has been configured Manually. Index Type IP address Subnet mask State VLAN ID --------------------------------------------------------------------------- 1 Network 172.16.9.112 255.255.0.0 Up 1 2 SLIP 192.168.101.1 255.255.255.0 Up n/a Select menu option (protocol/ip/interface): Menu options: --------------3Com SuperStack 3 Switch 4200--------------- modify - Modify IP interface information (interface 1 or 2 only) summary - Display summary information Type "quit" to return to the previous menu or ? for help
Layer 3 Switch 的價格通常不菲(尤其是孔數多、有光纖的機型),所以並不是每一個企業都願意砸錢買來用,若是經費上確實有所不足,但仍然需要 Layer 3 Routing 功能時,一種便宜的方式是採用 PC 充當 Router 來用,但此舉卻面臨到的問題是:倘若 VLAN 數量一多(假設六個),一般 PC 卻也無法插上那麼多張網卡(大概三、四張網路卡就很了不起了),就算可以插多張網卡(假設六張吧),這六張卡的 RJ45 接頭就需要接到六埠 Layer 2 Switch 上,這樣會浪費 Layer 2 Switch 上面的埠數(一個 VLAN 就需要一個埠)而很傷成本。
較好的作法是,還是圍繞在「802.1Q」,讓您的『Router PC 能夠解讀及封裝(encapsulate)802.1Q Frame』,也就是 Router PC <-> Layer 2 Switch 本身就是一個 Trunk 連線,上述那六個 VLAN Routing 都走這個 Trunk 線路到 Router PC,此舉就只用了一張網路卡(相對的 Switch 上就只用一個埠),也就解決了這個問題。
使用 Linux 做 Router PC 的話,簡單說就是先載入『能夠解讀及封裝(encapsulate)802.1Q』的核心模組,在使用 vconfig 指令來設定 VLAN,至於設定 Linux 的 IP/Netmask 以及允許 TCP/IP 封包 Forward,相信大家都不陌生,故不在贅述。
下方為 Linux 載入 802.1Q 模組以及 vconfig 指令執行的簡單說明。
[root@r2-101 ~]# modprobe 8021q
[root@r2-101 ~]# lsmod | grep 8021q
8021q 18633 0
[root@r2-101 ~]# vconfig
Expecting argc to be 3-5, inclusive. Was: 1
Usage: add [interface-name] [vlan_id]
rem [vlan-name]
set_flag [interface-name] [flag-num] [0 | 1]
set_egress_map [vlan-name] [skb_priority] [vlan_qos]
set_ingress_map [vlan-name] [skb_priority] [vlan_qos]
set_name_type [name-type]
* The [interface-name] is the name of the ethernet card that hosts
the VLAN you are talking about.
* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.
* skb_priority is the priority in the socket buffer (sk_buff).
* vlan_qos is the 3 bit priority in the VLAN header
* name-type: VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)
* bind-type: PER_DEVICE # Allows vlan 5 on eth0 and eth1 to be unique.
PER_KERNEL # Forces vlan 5 to be unique across all devices.
* FLAGS: 1 REORDER_HDR When this is set, the VLAN device will move the
ethernet header around to make it look exactly like a real
ethernet device. This may help programs such as DHCPd which
read the raw ethernet packet and make assumptions about the
location of bytes. If you don't need it, don't turn it on, because
there will be at least a small performance degradation. Default
is OFF.
[root@r2-101 ~]#
在 802.1Q 的 Trunk 中,關鍵就是加上不加上 Tag 的問題,事實上多去了解其原理,就能夠幫助設定上的順不順利。不加上有 Tag 的埠就與一般埠運作方式類似,進來的 Frame 就原封不動的出去;所有來到 Switch 的 Frame 都需依照 VLAN ID 來分發到埠,分發的動作是不論 Frame 是否有加上著 Tag 都要做的;而加上有 Tag 的 802.1Q VLAN Trunk 埠:進入埠的要解讀 Tag;離開埠的則要封裝 Tag,動作其實很規律很死板,只是要好好的去理解與思考。
請注意在「802.1Q Trunk 連線只能有一個 Native VLAN」,而 Frames 屬於這個 Native VLAN 在 Trunk 傳送與接收期間是『不加上』Tag 的,也意味著要經由此 Trunk 傳輸的其他 VLAN ID Frame 就需要加上 Tag,以我們先前的 VLAN 設定範本來說,此時的 4900 通 4200 那個 Trunk 連線的 Native VLAN 就是 VLAN 1,但 Native VLAN 不見得就是 VLAN 1(Default VLAN),只是在較為簡單的網路架構下 Native VLAN 通常就是 VLAN 1 囉。