近日要在台中老家建置 WiFi,順便將原本台北的伺服器一起搬到台中來,因此要設計一個三層樓無線網路加上兩個分開的伺服器網段。在這邊將這次規畫與實作過程給記錄下來。

需求分析

建築物資訊

  • 居住空間三層樓(3F ~ 5F),一層 30 坪,室內隔間多為矽酸鈣板,少數區域有水泥牆
  • 牆內線路 15 年以上,規格不確定,實測速度可達 1 Gbps(可能更高,但受限測驗設備無法得知)。PoE 支援性未知。
  • 網路孔多為牆壁上,不方便安裝於天花板
  • 使用需求:有線網路速度最高到 1 Gbps 即可。WiFi 速度有 300 Mbps 以上即可。

伺服器

我有兩台獨立的伺服器主機(Server A & B),兩邊各自有一個 Public IP 和 LAN 網段。在之前的架構裡,兩台各自分別連接到 RouterOS 路由器上,因此就直接設定兩個 Ether 孔為兩個 LAN。到了台中,由於想要把機房放在五樓,跟位於三樓的路由器之間只能走一條牆裡的網路線,因此需要在一條線中支援多個網段,而需要規畫 VLAN 架構與設定 Trunk。

原始設定概覽

我這次並不是從零開始設定 RouterOS,而是在原先的基礎上,要把原先的 Ethernet interface 換成是 VLAN interface,並保留在其之上的 firewall、dhcp server、NAT 等設定。

原始的網段

  • 192.168.0.0/24: Server A
  • 192.168.10.0/24: Server B
  • 192.168.20.0/24: Home
  • 192.168.30.0/24: Management

架構設計

這次的架構主體,是三層樓各自有一台無線 AP,以及在五樓要擺兩台伺服器。因此在五樓買了一台網管型交換器,將 VLAN 拆分到不同的 port 中。

網路架構圖

VLAN 簡介

VLAN 是在 L2 的封包上,加上一個 VLAN id 的資訊,用來標記某個封包是屬於哪一個 VLAN 之中,稱為 tagging,因此就能實現在單一線路上承載多個內網(如路由器到 5F 交換器這段)。

但是一般的網路設備並不會支援 VLAN,因此在連接到終端設備,如電腦或是 AP 時,要將 VLAN untagging,讓特定 VLAN 的封包只會導到指定的端口。

  • Tagged: 當封包離開端口時,保留 VLAN id,用作 Trunk port
  • Untagged: 當封包離開端口時,移除 VLAN id,用作 Access port
  • PVID: 當封包進入端口時,如果沒有 VLAN id,則加上 PVID 作為 VLAN id

RouterOS 設定步驟

一、Bridge 設定

首先,由於在 RouterOS 中,每個 port 都可以獨立運作,因此並沒有先天的 WAN / LAN port 之分。在我先前的架構中,我是讓每個 port 各自是一個 LAN。然而到了這個新架構下,我需要讓每層樓的 AP 都屬於同一個內網中,因此需要設定 bridge 來建立一個路由器中的「軟體交換器」。

首先建立一個新的 bridge,就叫作 bridge

Bridge

這個時候先不要開啟 VLAN filtering,我們會到最後一步再打開。

接著把各個 port 加到 bridge 中:

這邊的重點是,選擇對的 ethernet interface,以及設定 PVID。我的 port 分配如下:

Port連接對象PVID
Port 23F AP30
Port 34F AP30
Port 45F Switch30

我一開始不知道 PVID 的功能,保留預設值的 1,結果我不論如何都無法連接上路由器,第一次還因此讓我無法再次打開 Winbox,只好整台重設(還好我有先備份設定檔)。第二次我則是為了保險先打開 Safe mode,結果一打開 VLAN filtering 後就直接斷線,然後剛剛的設定又被重置…

我最後是保留 Port 5 作為 management port,並讓它獨立於 bridge 與 VLAN 之外,這讓我在後面的設定上順利許多。

在我的設定中,3F 和 4F 都是要 untagged 直接連 AP,因此要把 PVID 設定為對應 Home VLAN 的 30。5F 是 trunk port,不過在這邊我還是將其 PVID 設為 30,方便使用。

二、VLAN 設定

以下是三個 VLAN,在路由器上 tagging 跟 untagging 設定:

VLAN IDTaggedUntagged
vlan1-server-A105F, bridge
vlan2-server-B205F, bridge
vlan3-server-C305F, bridge3F, 4F

照著上面的設計,在 Bridge / VLAN 底下新增各個 VLAN,輸入 tagged 和 untagged 的 interface。要注意,列表中的 Current Tagged 和 Untagged 要等到啟用 bridge 的 VLAN filtering 後,並且有連接上設備才會顯示,因此設定完沒有反應是正常的。

三、IP 設定

接下來,我們要更新原本 IP 所綁定的 interface。在之前的設計裡,三個網段分別綁定了三個端口:

  • ether2: 192.168.0.1/24
  • ether3: 192.168.10.1/24
  • ether4: 192.168.20.1/24

現在我們要將 IP 改為用 VLAN interface 來綁定。首先我們要在 Interface/VLAN 底下建立 3 個對應的 VLAN interface:

Interface/VLAN 設定

這裡的重點是設定名稱,VLAN ID,以及選擇 bridge 作為 interface。為三個 VLAN 各自設定一個 interface 後就完成了。

可以到 Interface list 中更新一下:

Interface list

這裡可能會影響到後續 firewall, NAT 等設定。這裡我沒有後清楚放 bridge 跟放 vlan interface 的差別是什麼。

再來我們就可以去更新 IP addresses,到 IP/Addresses 中,把原本綁定在 ether2~ether4 的 IP 改成對應的 vlan interface:

IP Addresses configuration

四、DHCP server

接著也要更新 DHCP server 所使用的 interface,把原本綁定在 ether2ether4 換成對應的 vlan1vlan3 就可以了。

DHCP server

五、IP routes

接下來超級重要的是更新路由表!我因為沒改這邊卡了超久。一樣要將原本綁定在 ether2~ether4 換成對應的 vlan interface。同時我因為三個網段用了三個獨立的路由表,因此要改三個路由表。以下我以 home 的路由表舉例:

IP routes config

之所以三個網段用了三張路由表,是因為這個三個網段有獨立的 Public IP,因此需要有個別的 0.0.0.0/0 的路由設定(指向不同的 PPPoE 目標)

六、IP Firewall / NAT

最後就是檢查一下你的防火牆 / NAT 規則中,有沒有任何用到 ether interface 的地方,把它們換成對應的 VLAN 就行了。

七、啟動 VLAN

做這一步時建議開啟 Safe mode

最後,將 bridgeVLAN Filtering 開啟。Bridge 本身的 PVID 保持預設值 1 即可,因為我們使用 VLAN interface 來處理各個網段,而不是直接讓 bridge interface 參與通訊。按下 Apply 後,VLAN 就會開始工作了。

假如你沒有像我一樣留一個 management port 來連線,你做這一步後可能會斷線。如果真的弄失敗了,30 秒後就會還原到開啟 safe mode 之前的狀態。

測試

分別連接筆電到每個 port,看看是否拿到對應的 IP:

  • port 2: 192.168.20.x
  • port 3: 192.168.20.x
  • port 4: 無法連接 (trunk port)
  • port 5: 192.168.30.x (我的 management 網域,沒有在這次教學中設定)

交換器設定

我這次搭配了 D-Link DGS-1100-05 作為五樓的網管型交換器。它有 5 個端口,支援 VLAN,符合我的需求,價格也很實慧。

我的 Port 規畫如下:

  • Port 1: management
  • Port 2: Server A
  • Port 3: Server B
  • Port 4: Home
  • Port 5: Router

一、電腦連線交換器設定

這台交換器支援 web interface 管理,但由於它不是路由器,因此不會用 DHCP 分配 IP 給你,需要自己設定。它的 IP 為 10.90.90.90/8。

我在筆電上新增一個以太網路連線,並手動指派一個 IP 位址:

  • IP: 10.90.90.91 (可以換成其他數字)
  • Netmask: 255.0.0.0
  • Gateway: 10.90.90.90

設定電腦與交換器連線

二、交換器 VLAN 設定

接著就可以用瀏覽器打開管理界面 http://10.90.90.90 。登入後,到 L2 Features / VLAN / 802.1Q VLAN 設定。

預設的設定時是所有的 port 都是 untagged VLAN 1,也就等同於沒有 VLAN 的單純交換器。首先將 VLAN 1 設定中 port 1 以外的其他 port 都設為 Not member。接著新增 VLAN 10, 20, 30。

以 VLAN 10 Server A 為例:

Switch VLAN 10 config

eth2 對應到 server A 的 port,因此是 untagged。eth5 則是連線到 router,因此為 tagged。其他 port 則與此 VLAN 無關,選擇 Not Member。

以相同方式設定 VLAN 20、30 可得到以下列表:

測試

接下來將筆電分別插上不同網路孔,檢查拿到的 IP:

  • Port 1: 無,要手動設定
  • Port 2: 192.168.0.x (VLAN 10)
  • Port 3: 192.168.10.x (VLAN 20)
  • Port 4: 192.168.20.x (VLAN 30)

如果都沒問題,有線網路的部分就大功告成!把伺服器開機,就會自動回到原先的設定了。

Mesh 無線網路

最後則是要部建無線基地台。我原本希望能做到 AP 支援 VLAN,讓我可以區隔出家用網路和 IoT 網路,提升一下內網的資訊安全。但上網查之後發現,支援這樣功能的如 Unifi U6 Plus,通常是為了企業環境設計,價格是家用機的 2 倍以上,而且通常用網路線來供電(PoE, Power over Ethernet)。我們一方面沒有 PoE 供電設備,一方面也不確定牆裡的網路線是否支援,最後還是選擇家用的方案,並捨棄分離 IoT 網路。

我最後選擇了 Asus ZenWiFi BD5,它一組有三顆,且支援 AP 模式(IP 交由路由器分配),正好符合我們家的需求。它有一台主機跟兩台副機,只要在主機設定好就會自動同步到副機。

一、主機設定

首先我將主機安裝在三樓,兩個網路孔,一個接路由器,另一個接筆電,接著啟動電源。等了幾秒後,電腦跳出了「登入網路」的通知,接著就可以設定管理者帳號。

比較重要的步驟有:

  • 選擇 AP mode / 基地台模式:讓 AP 只負責 WiFi 訊號,不會分配新的 IP
  • 設定網路的 SSID、密碼、頻段
    • 我原本是讓它 2.4GHz 和 5GHz 混合,但發現手機自己切 5GHz 不太順,同層樓覆蓋度也足夠好了,於是後來將主要 WiFi 的 2.4GHz 關閉,只保留 5 GHz。
  • 建立 IoT 網路
    • 這台支援建立一個訪客網路,用比較舊版的 WPA 2, WiFi 6 和 2.4GHz
    • 然而目前實測,這個訪客網路功能並沒有隔離的效果,只是單純的不同存取點。用來給不支援 5GHz 的 Chromecast 很方便

完成後就能夠連上新的 WiFi 了。

二、路由器綁定基地台 IP

之後如果要再進到基地台設定,就需要知道它的 IP。這個時候可以到路由器的 DHCP server / Leases 中,查看有哪些使用中的裝置,辨識出基地台後,就可以將它設為 static,以後就會有固定的 IP 可以進去管理了。

DHCP Server / Leases

三、設定 Ethernet Backhaul

由於我們家有連接不同樓層的以太網路,因此比起無線的 mesh,我們可以啟用 Ethernet Backhaul 功能,讓不同基地台之間透過以太網路來連接。

先打開剛才綁定好的基地台 IP,我的是 http://192.168.20.12 ,登入後到 AiMesh / System Settings 的地方,啟用 Ethernet Backhaul Mode,接著讓系統重開。

四、加入副機

當主機設定完畢後,從靠近的樓層開始,把副機插上網路線和電源,接著啟動電源,副機就會自動偵測到主機後加入網路,時間大概 3 分鐘。當燈號從閃藍 - 閃綠,到最後穩定白光,就代表設定完成。在主機的 AiMesh 頁面,就能看到加入的副機了。

測試

最後各個裝置就可以連上同一個 WiFi,並在不同樓層自動切換。速度測起來,在基地台旁邊可以到 300/300 Mbps,有達到原始設定目標,訊號覆蓋度也足夠。

Troubleshooting

  • 我原本沒有先開啟 Ethernet backhaul,結果副機就一直卡在閃綠燈的情況。我原本也不知道原來副機在 AP 模式下也可以自動設定,所以一直在等出現網路登入的訊息。

心得

這次設定結合了多樓層透天厝和 homelab 的需求,也是我第一次使用 VLAN 以及網管型交換器。其中折騰最久的,就是一開始釐清 VLAN 的運作方式,還有在 RouterOS 中如何設定每個關聯到的地方。此外 interface / bridge / vlan 這些概念間的關係也不太容易分辨。

這次留下的遺憾,主要是沒能完全區隔家用和 IoT 網路,以及在家內與伺服器的連線速度,用有線最快也只能到接近 500/500 Mbps,畢竟中間隔了更多設備與老舊線路,還多了更複雜的軟體路由運算。相比在之前的架構下,實測能夠到 900/900 Mbps 的速度。

想要測試內網連線速度,可以參考我寫的 LibreSpeed 架設自己的測速網站

網路設定的難易度取決於需求的複雜度。這次終於有了非得用 VLAN 不可的情境,也讓我有了一次設定的經驗。幸運的是,之前路由器的基礎不算太難修改,當初也有留下足夠多的文件,這次只折騰了一個下午就搞定了。還有,RouterOS 備份設定檔真的超級重要,這次直接給它救了回來。

不想再繼續付錢給雲端平台,被科技公司綁架了嗎?但是沒時間和精力研究架設伺服器需要考慮的網路、電腦硬體、軟體安裝與資安防護。

讓我來幫你渡過這些難關!

Homelab 系統規畫

參考資料