技術文章 · 網路與網通建置

管理型交換器 VLAN 設定:Access、Trunk、PVID、Tagged/Untagged

監控和辦公網段想分開,不必多買設備重拉線。這篇用第一線角度講透 802.1Q 標籤那 4 個位元組在做什麼、access 與 trunk 埠怎麼設、PVID 為什麼老是被設錯、跨交換器時 native VLAN 沒對齊為何既接不通又是資安破口,還有切完之後該用 L3 交換器還是單臂路由互通,最後提醒你別把自己鎖在交換器外面。

作者 Steve Chen · 發布  · 更新  · 約 11 分鐘閱讀

網路與網通建置 — 廷皓技術專欄插圖

先算一筆帳給你聽。高雄一間貿易公司找上我們,想把監控跟辦公網段分開。如果照最老實的做法走實體分離:多買一台八埠交換器大約兩千到四千元,天花板重新拉一個網路點的行情落在八百到一千五,他們有十支攝影機加一台錄影主機,光佈線就要上萬,師傅還得在悶熱的夾層裡爬上一整天。可是他們機櫃裡本來就躺著一台管理型交換器,只要用 VLAN 把網段切開,硬體支出是零,工程師半天收工,一條線都不用動。這筆帳誰算都清楚,真正把大家卡住的,是設定頁面上那一排看不懂的名詞:VLAN ID、PVID、Tagged、Untagged,實際哪一格該填什麼。這篇我就用第一線的角度,把這些名詞背後的機制講到你敢自己動手為止。

先搞懂交換器在忙什麼:廣播網域這件事

要懂 VLAN,得先懂交換器平常在煩惱什麼。一台交換器底下所有的埠,預設是同一個廣播網域:只要有一台設備發出廣播封包,比方問「誰是這個 IP」的 ARP、或是各種裝置探索協定,這個封包會被複製一份塞進每一個埠。設備少的時候你感覺不到,可是當網段裡塞了幾十上百台設備:尤其攝影機、印表機、IoT 這種會定時喊話的傢伙:廣播流量就會像背景噪音一樣持續佔用每一台設備的網卡跟 CPU。更麻煩的是,只要一台設備中毒或網卡壞掉開始發狂送封包,整個網域都會被拖下水,這就是所謂的廣播風暴。

VLAN 的本質,就是在同一台實體交換器裡,用軟體把一個大廣播網域切成好幾個小的。切開之後,監控那一段的廣播淹不到辦公那一段,反過來也一樣。所以 VLAN 從來不只是資安議題,它同時是效能議題:你把廣播網域切小,等於幫每一台設備都減了噪音、也把單點故障的爆炸半徑縮小了。這一點很多人只記得「隔離比較安全」,卻忘了它對網路穩定度的貢獻其實更實在。

那 4 個位元組的標籤,實際寫了什麼

把 VLAN 資訊帶著跑的,是 IEEE 802.1Q 這個標準。它的做法是在乙太網路訊框的來源 MAC 位址後面,插進 4 個位元組的標籤。這 4 個位元組不是隨便塞的,拆開來看很有意思:

  • 前 2 個位元組是 TPID(標籤協定識別碼),固定寫成 0x8100,作用是告訴後面的交換器「我這張訊框帶標籤,別當成普通封包處理」。
  • 後 2 個位元組是 TCI(標籤控制資訊),裡面又切成三塊:3 個位元的 PCP(優先權碼點)、1 個位元的 DEI(可丟棄指示),還有 12 個位元的 VID(VLAN 識別碼)。

那 12 個位元的 VID,就是你在設定頁上填的 VLAN 編號。2 的 12 次方是 4096,扣掉頭尾兩個保留值,實際能用的是 1 到 4094,對絕大多數中小企業來說綽綽有餘。比較少人注意的是那 3 個位元的 PCP,它能標出 0 到 7 共八級優先權:這正是語音跟視訊得以插隊的機制。一旦流量被打上標籤,你就有本錢讓網路電話或監控串流的封包在網路壅塞時優先被送出去,讓網頁下載這種不急的流量往後排。換句話說,802.1Q 這個標籤不只切網段,還順手把 QoS 的地基打好了。

交換器轉發訊框時,只會在同一個 VLAN 的成員埠之間送,廣播也只淹得到同一個 VLAN,這就是「實體同一台、邏輯上是兩個網路」的原理。至於很多入門機種標榜的 port-based VLAN,它單純靠實體埠分群,封包本身不帶任何標籤,設定直覺,缺點是這個劃分只活在那一台交換器的腦子裡,想延伸到第二台就得多拉一條實體線。802.1Q 把 VLAN 資訊寫進封包,交換器之間一條線就能同時馱著好幾個 VLAN 跑,這才是它真正值錢的地方。

access、trunk 與 PVID:進來怎麼歸類、出去要不要貼標

接下來這段是最多人卡關的地方,請你先建立一個觀念:每一個埠其實有兩件互不相干的事要各自決定。第一件,一張沒帶標籤的封包從這個埠「進來」時,要算成哪個 VLAN:這就是 PVID(Port VLAN ID)在管的事。第二件,封包要從這個埠「出去」時,要不要幫它貼上標籤:這是 Tagged 成員與 Untagged 成員的差別。多數設不通的案例,都是把「進來歸類」跟「出去貼標」這兩件事,在腦子裡糊成了一件。

接電腦、IP 攝影機、印表機這類終端的埠,設成 access 就對了:它只屬於一個 VLAN,出去不帶標籤,PVID 設成同一個 VLAN。為什麼終端埠一定要不帶標籤送出去?因為多數網路卡、攝影機、印表機根本看不懂 802.1Q 標籤,收到帶標的訊框會直接當垃圾丟掉。交換器之間互連、或往上接防火牆、路由器的埠,則設成 trunk,讓需要跨越的 VLAN 全部以帶標籤的方式通過。

PVID 為什麼老是被設錯

我在現場最常抓到的錯,長這個樣子:師傅把某個埠加進了 VLAN 20 的 Untagged 成員清單,以為搞定了,卻忘了那個埠的 PVID 還停在出廠預設的 1。結果會怎樣?攝影機送出來的封包沒帶標籤,進到交換器被 PVID 判成 VLAN 1,可是回程的封包卻是走 VLAN 20,一來一回對不上,畫面就時通時不通,或乾脆完全連不上。這種「出得去、回不來」的半殘狀態最折磨人,因為 ping 有時候還會通,讓你以為是別的地方出問題。記住一句口訣:改了 Untagged 成員,就順手把 PVID 改成同一號,這兩件事永遠成對做。

跨交換器對接:兩端的 trunk 要長得一模一樣

兩台交換器互連時,互接的那兩個埠兩邊都要設 trunk,允許通過的 VLAN 清單必須一致,該帶標籤的 VLAN 兩邊都得是 Tagged。這裡有一個最容易忽略、又最會出事的細節,叫 native VLAN:它是 trunk 上唯一一個「不帶標籤」跑的 VLAN。兩端的 native VLAN 一定要設成同一號,否則從一端不帶標籤送出去的封包,到了另一端會被歸進不同的 VLAN,等於在半路被人偷換了身分。

我修過一個活生生的案子:兩台不同品牌的交換器互接,一邊的 native 留在預設的 1,另一邊被前一手工程師改成 10,監控畫面時通時斷,查了老半天才發現問題就卡在這一格。其實多數管理型交換器都有鄰居探索的機制,兩端 native VLAN 不一致時會在系統記錄裡跳警告,可惜很多人根本沒去翻那個記錄。除了 native VLAN,跨樓層、跨機房時,整條路徑上的 VLAN ID 也要全程對齊,中間任何一台交換器漏設某個 VLAN,那個 VLAN 就會斷在那一段,前後接得再漂亮都沒用。

native VLAN 沒對齊,不只是接不通,還是資安破口

native VLAN 這格填錯,往壞裡想不只是「監控畫面斷掉」而已,它其實是一個經典的攻擊入口,業界叫 VLAN 跳躍。最陰險的一種手法是雙重標籤:攻擊者把封包包上兩層標籤,外層故意填成 trunk 的 native VLAN,內層填想潛入的目標 VLAN。封包進到第一台交換器時,交換器看到外層標籤剛好等於 native VLAN,就把外層剝掉:結果內層那個目標 VLAN 的標籤活了下來,順著 trunk 一路溜進本來碰不到的網段。這種攻擊之所以成立,正是因為 native VLAN 是「不帶標籤」的設計,給了有心人可乘之機。

另一種手法是交換器偽裝:如果一個接終端的埠不小心開著自動協商,攻擊者的設備可以假裝自己是一台交換器,跟它談成一條 trunk,一次把所有 VLAN 的流量都掏出來。防範這兩種攻擊,剛好就是好的工程習慣:把 trunk 的 native VLAN 指定成一個沒有任何主機的空 VLAN,別用預設的 1;接終端的埠全部明確設成 access,把埠的自動協商功能關掉;沒在用的埠直接停用。這些動作不會多花你一毛錢,卻能把最常見的破口一次補好。所以「native VLAN 兩端要對齊」這件事,同時是通不通的問題,也是安不安全的問題。

切完之後怎麼互通:L3 交換器還是單臂路由

很多人以為 VLAN 切完就結束了,其實才做了一半。VLAN 之間預設是完全不相往來的,這正是隔離的目的;可是實務上你多半還是需要某些跨網段的互通,比方辦公電腦要連到某台監控主機調畫面。這時候就需要一個三層設備幫忙在 VLAN 之間轉送封包,做法主要有兩種。

第一種是單臂路由:用一台路由器接上 trunk,在上面切出好幾個子介面,一個 VLAN 配一個。它便宜、好懂,適合只有一兩台交換器的小場子。缺點很實在:所有 VLAN 共用那一條實體上行線的頻寬,而且每一個跨 VLAN 的封包都得在那條線上「進來再出去」走兩趟,設備一多、流量一大就塞。第二種是用三層交換器,在裡面替每個 VLAN 開一個虛擬介面,直接由硬體轉送,速度可以逼近線速,一個埠動輒好幾十 Gbps。判斷準則很單純:只要你的環境超過一兩台交換器、或者跨網段流量會很大(監控回放、檔案伺服器都算),就直接上三層交換器;單臂路由留給實驗室跟真的很小的分點就好。這一步一定要跟切 VLAN 一起規劃;現場常見太多人把網段切得漂漂亮亮,卻忘了留互通的路,切到大家你看不到我、我看不到你,反而製造新問題。

什麼時候該切、什麼時候不必

講了這麼多機制,回到最實際的問題:你實際該不該切?我的判斷準則其實很土:

  • 設備十來台、全是自己人在用、沒有對外服務:不切也活得好好的,硬切反而給日後維護添麻煩,多一層 VLAN 就多一層排錯的迷宮。
  • 同時有監控、辦公、訪客、POS 其中兩種以上:就值得切。監控主機萬一中毒不會延燒到財務電腦,訪客的手機也掃不到你的內部主機,這個安心是實打實的。
  • 有法遵或客戶稽核要求:像是刷卡的 POS 環境,網段隔離常常是硬性條件,這種就不是「要不要」的問題了。

還有一個很多人沒想到的邊界:VLAN 是二層的隔離,擋得住同網段的橫向感染,卻擋不了三層以上的攻擊。切完之後如果又用三層設備全打通、防火牆規則卻大開,那道牆等於白築;隔離要有意義,跨 VLAN 的放行規則就得跟著收緊。整體網段該怎麼劃才長遠,我們另外寫過一篇專門談網路分段規劃的文章,想把架構一次想清楚的話可以搭配著看。

最後一關:管理 VLAN,還有別把自己鎖在門外

要收尾了,講一個師傅們的共同血淚:改 VLAN 最容易把自己鎖在門外,這個坑我自己也踩過。你人在遠端,改著改著動到了管理介面所在的那個 VLAN、或是動到自己電腦接的那個埠,「啪」一聲連線斷掉,就再也回不去了,只能開車過去現場救。

要避開這個坑,有幾個習慣請你養成:

  • 動手前先搞清楚自己是從哪個 VLAN、哪個埠連進來的,那條路徑上的設定最後再碰,或者乾脆別碰。
  • 留一個能就近登入的活口:留一個接在管理 VLAN 上的 Untagged 埠,或者確認 Console 線接得到,出事至少有退路。
  • 把交換器的管理介面放進一個獨立的管理 VLAN,別跟一般使用者流量混在預設的 VLAN 1 裡。這樣就算辦公網段被攻破,攻擊者也摸不到交換器的登入頁,等於幫設備的大腦多上一道鎖。
  • 動任何一格之前,先把現有設定完整備份一份。設定檔就是你的還原點,改壞了直接倒回去,比對著記憶重設快太多。這一步我們也另外寫過怎麼備份與還原交換器設定,別嫌麻煩。

順帶一提,管理 VLAN 這類設定通常留到最後、等其他 VLAN 都通了才動,因為它一改就可能斷掉自己的連線,順序錯了容易自己絆自己。

對照指令

聯絡廷皓討論 看更多文章