這次一樣是使用RouterOS的VLAN功能來橋接MOD
不過 這次跟第一篇的不同點在於 我們不使用RB260GS來當作VLAN Switch
之所以會不使用 原因是各家的VLAN Switch設定不盡相同
希望能透過其他家的VLAN Switch 再稍微釐清一點VLAN觀念
或許以後有MOD困難的時候 有更多的選擇可以應用
本文開始

這次使用的VLAN Switch 是TP-Link的TL-SG108E當作設定範本
本身算是1000元左右就能入手的VLAN Switch 價位上跟RB260GS相比算便宜
不過這台比較麻煩在於 它必須要透過官方的程式才能做設定 不像RB260GS可直接透過網頁設定
算是比較美中不足的部分
設定還是跟之前一樣 只是這次另外用一條線路 另外再設定一組VLAN
也就是下圖的Test-VLAN

這個VLAN的ID為150 除此之外其他的設定跟之前的相同
不過這都不是重點 重點在VLAN Switch上
假設SG108E的Port 1是接RB2011 MOD則是接在Port 2 其他Port則是接一般的區網設備
直接連進去管理介面 然後找VLAN設定

我們在RouterOS所建立的VLAN埠 一般都是遵從802.1Q的規範
因此我們只要連到802.1Q VLAN的設定參照就可以了
其他像是什麼MTU VLAN或是Port Based VLAN 比較屬於Port to Port的設定規範 這邊我們就不做介紹了
然後 再根據上圖 來做我們要的設定
首先 Default_VLAN我們不去動它(想動也動不了 不能刪) 我們直接創一個VLAN群組
VLAN ID設為150 至於名稱就隨便給一個
然後再來是Tagged或是Untagged的Port 我們要做設定
(以下若有錯的地方還請糾正)
這邊就來解釋一下Tagged和Untagged之間的差異:
Tagged表示帶有VLAN ID的封包 Untagged則表示不帶有VLAN ID的封包
一般Tagged的設定大多都是針對Switch to Switch
而Untagged的設定大多針對Switch to Terminal 也就是交換器連到終端設備(電腦、NAS之類的)
為什麼交換器之間一定要Tagged封包呢?
以下用一張圖來解釋

我們假設這個網路環境 有兩組VLAN 淺藍色的ID為100 棕綠色的ID為50
ID為50的分別與VSwitch1與VSwitch2連接Port4的設備互通
ID為100的則是連接Port2的設備互通
而兩個Switch之間則是透過Port 1溝通
上面有提到 Tagged的封包是給交換器與交換器之間做溝通
所以我們再細看Port 1

可以注意到 兩個VLAN ID建立的雙向通道 都有設好Tagged封包
假設我們只看ID為100的這組 它的規則會是這樣

當任一個交換器收到該封包時 就會將這個封包送到指定的Port上去
也就是說 當兩台交換器收到標記ID為100的封包時 就會將該封包轉送到自己的Port 4上出去
但假設Vswitch2不小心將VLAN 100的封包沒有標記就傳到Vswitch1上去 就會發生下圖的狀況

雖然Vswitch1收到了封包 但由於沒有任何的VID 因此就照預設設定走 也就是送到所有的Port上去
這很容易造成封包遺失 同時接在Vswitch2 Port4後端的設備也會因為沒有收到回應而判定連線失敗
且如果這個封包是所謂的廣播封包 那更會造成廣播風暴
因此 Tag的設定對於VLAN而言 是相當重要的
這邊也許有人會問 如果VLAN封包遇到不具有VLAN功能的交換器/分享器會如何?
這是個好問題 有些人可能會想使用比較便宜一點的機器 而使用了不具有VLAN功能的交換器
想說VLAN封包應該也是會送到其他的裝置的
很遺憾 不行 VLAN一定要對應VLAN交換器或是有設定VLAN功能的電腦/裝置
為什麼呢? 原因的話 用一張圖解釋就可以了

圖中上面是一般的網路封包格式 下面則是包含了VLAN的封包格式
VLAN本身有L1、L2、L3層的運作方式 但不論是Port Based VLAN或是802.1Q VLAN 都是使用L2層運作
你可以注意到 VLAN Header插入在Source MAC Address與Ether Type/Size之間 挪用了32bits來儲存VLAN資訊
由於不具VLAN的交換器 會缺少可以辨識VLAN封包格式的資訊
因此一般交換器遇到VLAN封包時 交換器會因為無法辨識而將VLAN封包視為無效的封包並丟棄
換句話說 任何一個VLAN封包在遇到非VLAN設備時會被過濾掉 失去了VLAN的作用
所以 VLAN設備一定要跟VLAN設備對接 除非另外接的端點已設為Untagged
此外 還有一個PVID 這個到後面會再解釋
再回歸到原本的這張圖

由於Port 1是接RB2011 Port 2則是接MOD
因此建立VLAN群組的時候 我們將Port1設為Tagged Port2則設為Untagged
然後點Apply 就會建立一個VLAN群組
而沒有點選的Port 則表示其他的Port並不會參與這組VID 也就不會有廣播風暴的問題
不過還沒完 我們還有PVID需要設定

什麼是PVID?
PVID,全名為Port VLAN ID,它的功用是將Untagged的封包 強制Tagging 讓其封包帶有VID
也就是說 任何一個進到這個Port的封包 假如是Untagged 那麼在進入這個Switch的時候 都會加入VID
而加入VID的數值為何 就是根據這個表來建立
前面我們有提到 將MOD接上的Port設為Untagged 但是為什麼呢?
原因在於前面提到的 一般的終端設備是不支援VLAN封包的
我們需要對要送到終端設備的封包做Untagging的動作
因此將MOD的Port設為Untagged 意思是從其他Port送來的Tagged封包 出去時都會做Untagging的動作
這樣MOD才能正確地收到封包 MOD也才可以看
從Switch那邊接收VLAN封包是一個問題 從終端設備發出的封包如何走VLAN則又是一個問題
這時候就是PVID發揮功能的時候了
看圖說明:

假設MOD是接VLAN Switch的Port 4上 當MOD開機或是換台時 都會發出封包到中華的伺服器
這時候它會傳到Port 4上 再從Port 1出去
但因為Port 1是設定為Tagged Port 任何一個Untagged的封包都會做Tagging的動作
這時候就會去查這個封包是從哪一個Port進來的 然後再根據PVID表 決定這個封包要標記的VID是多少
如圖所示 Port 4的PVID是150 且這個封包是從Port 4進來的
因此該封包會被標記為150並送出到其他的VLAN交換器或是路由器上
回歸到SG108E的設定 這邊我們將Port 2設為150 點選Apply+Save立即套用
這樣MOD就可以看了~
不過 若是這個VLAN Switch後面是接同樣也支援VLAN的網路設備或終端設備呢?
這個其實也很簡單 只要將有接上的Port 設定對應的VLAN群組 然後都設為Tagged就可以了
假設從路由器進來了兩個VLAN 一個是100 一個是200
接路由器的是Port 1 而VLAN-100要走Port 2 VLAN-200則要走Port 3 且這兩個Port後面都是接支援VLAN的設備
那麼我們就分別設100及200這兩個群組 並且....
100群組的部分將Port 1、2設為Tagged
200群組的部分則將Port 1、3設為Tagged 就可以了
而由於我們只是將Tagged的封包送上去 因此我們不需要設PVID
大約是這樣 可能有一些地方寫得不是很好 或是有錯的地方
如有發現 還請來信或直接回應糾正
希望這篇能夠幫助各位~
參考資料:
How to configure 802.1Q VLAN on Easy Smart Switches?
SwOS/SWOS-802.1Q-TrunkTwoSwitches
延伸閱讀:
使用VLAN連接MOD Part 1
使用VLAN連接MOD Part 3
使用VLAN連接MOD Part 4