在當今的數位時代,設定一個安全且專屬的家用網路變得越來越重要。透過使用開源軟體 OpenWRT,我們可以輕鬆地為家中的網路設備建立專屬的虛擬局域網(VLAN),以提供更高程度的安全性與隔離性。
在本篇文章中,我們將透過一個實作範例,詳細介紹如何設定 OpenWRT,將一台路由器切割成兩個 VLAN 區域,並讓這兩個區域互不影響。每個 VLAN 區域都會分到不同的 IP 網段,而且皆有對應的 Wifi 無線網路(2.4G 和 5G)可供使用。最後,我們也會確保每一個 VLAN 區域都能夠對外上網。
這篇文章適合具有基礎網路知識,且對於設定 VLAN 有興趣的讀者。我們將會帶領你逐步了解 VLAN 的基本概念,並實際操作如何在 OpenWRT 中進行設定。
我們用一些筆者自身有用過的機種來做設定範例,詳細探討其中設定值的差異,供大家學習。希望透過本篇文章,你可以瞭解如何透過 OpenWRT 來打造一個安全、專屬的家用網路環境。
那麼,就讓我們開始吧!
設定 VLAN 進行網路隔離 系列文:
- 用 OpenWRT 設定 VLAN 進行網路隔離 – 以 TOTOLINK-X500R 為例
https://blog.jks.coffee/openwrt-vlan-settings-totolink-x500r/
-
用 OpenWRT 設定 VLAN 進行網路隔離 – 以 ASUS RT-AC58U 為例
https://blog.jks.coffee/openwrt-vlan-settings-rt-ac58u/ -
[教學] 用 OpenWRT 做分離式上網設定 (以 小米路由器mini 為例)
https://blog.jks.coffee/setup-isolated-zone-with-openwrt-and-xiaomi-mini/
範例環境說明
假設你的對外網路有一個光世代的盒子(小烏龜),
你透過 DHCP 配發 IP 的方式來上網
我們把一台路由器分成二個 VLAN 區域:
VLAN100
網段 192.168.10.0/24VLAN200
網段 192.168.20.0/24
接孔對應:
- 指定第一埠為
VLAN100
- 指定第二埠為
VLAN200
示意圖如下:
等效網路拓墣如下:
等於是你在小烏龜這邊裝了一台 Switch,
底下各裝一台 Wifi Router 路由器,各自設定獨立的 IP 位址與網段,
實現完全隔離的網路。
而我們全部都在一台路由器就完成了這件事情,
一般的家用路由器沒辦法做到這樣的功能,
但 OpenWRT 可以,這也是它厲害的地方。
我們把範例情境做複雜一點,
假設我們家用區域很大,是個三層樓透天厝,ADSL 主線在一樓,
想要二樓與三樓都延伸以上雙 VLAN 的情境。要怎麼做?
- 指定第四埠為
VLAN100
、VLAN200
的 trunk port - 多新增一台設定類似的路由器,我們暫稱它為子機
- 多拉一條網路線,來連接母機與子機
示意圖變成如下:
等效網路拓墣如下:
看到這邊大家可能開始霧煞煞,可以先上下對照等效網路拓墣來看,
原本我們應該需要二台路由器、二條網路線、二台 Switch hub 來延伸這個完全隔離的網路,歸功於 VLAN 與 trunk port 的功能,我們使用二台路由器,一條網路線就可以做到一樣的事情了。
以下為設定步驟,這邊使用 TOTOLINK-X500R 刷入 OpenWRT 來實作以下的步驟,
有可能會因為硬體特性與原廠驅動設計問題,而步驟有一點點不同,
如果有比較特別的部份,可能另外寫一篇文章來解釋。
使用的版本為 OpenWRT 22.03.3 r20028-43d71ad93e 供參考。
設定步驟
Step0. 觀察原有設定值
在開始設定之前,我們先觀察一下原有路由器的設定值,
據經驗,這部分不同機器還是會有些微差異,也記錄一下。
TOTOLINK-X500R 原有的設定值是這樣子
Network > Interface 頁面,Interfaces 頁籤
Network > Interface 頁面,Devices 頁籤
在 br-lan
按下 「Configure…」按鈕的內容,
Bridge device: br-lan 視窗,General device options 頁籤
Bridge device: br-lan 視窗,Bridge VLAN filtering 頁籤
也附上 X500R 的產品背面圖
我們快速整理一下:
- 沒有 Network > Switch 的頁面
- 有
eth1
,eth2
,eth3
,eth4
,eth5
,對應到 5 個 Port - 有一個 Bridge 介面,
- 綁定
eth1
,eth2
,eth3
,eth4
為 LAN 的 Interface (介面)
- 綁定
- 綁定
wan
為 WAN 的 Interface (介面)
接下來我們開始一步一步調整成我們要的範例情境。
Step1. 將原有 bridge 介面改為 VLAN 模式
先到 Network > Interface 頁面,選到 Devices 頁籤,
選到 br-lan
按下 「Configure…」按鈕,
直接到 Bridge VLAN filtering 頁籤,來做 VLAN 設定調整
勾選 Enable VLAN filtering
按下 Add 打入 VLAN ID,(例如:VLAN ID: 100 )
勾選 untagged
就是要應用上去的介面,畫面上會顯示一個 u
如果要走 trunk,再選擇 tagged
如有 CPU 的 Port 一律都選 trunk,這樣介面才看得到
複習一下範例情境:
- VLAN ID: 100 應用在 Port 1, Port 3
- VLAN ID: 200 應用在 Port 2
- Port 4 走 VLAN ID: 100 與 VLAN ID: 200 的 trunk
所以變成這樣
VLAN ID | lan1 | lan2 | lan3 | lan4 |
---|---|---|---|---|
100 | u | – | u | t |
200 | – | u | – | t |
按了存檔 Save 了之後 不要馬上 Apply,不然 會直接斷線!。
很重要講三次
到 Network > Interface 頁面 Interfaces 頁籤,
選擇預設的 LAN 按「Edit」按鈕
Interfaces » lan 的 General Settings 頁籤,
將 Device 調整為 Software VLAN: "br-lan.100"
再存檔 Apply
解釋:因為原本的單純的 bridge 介面,改跑成 VLAN 模式了,
以範例來說,原有的介面變成二個軟體 VLAN 介面
但路由器 IP 設定與 DHCP 設定沒有對應綁過去
原本的 bridge 介面不應該掛任何東西才正確
這邊的設定較重要,也是有沒有設定成功的關鍵。
註:先從本身連接的 VLAN 網段開始設定會比較順,
如果做錯了就整台重置吧。
Step2. 更換路由器 IP
為了符合範例的需求,我們更換一下目前連接路由器的 IP,
到 Network > Interface 頁面
General Settings 部分
- IPv4 address: 192.168.10.1
- IPv4 netmask: 255.255.255.0
將原本的 192.168.1.1 修改成 192.168.10.1
按 Save and Apply 套用設定,這個時候要更換瀏覽的網址。
http://192.168.1.1/ 要換成 http://192.168.10.1/ 然後重新登入。
這步應該對大家來說不困難。
Step3. 設定第二個 VLAN
我們依樣畫葫蘆在 Network > Interfaces 頁籤中,
按「Add New Interface…」按鈕,新增第二個介面
- Name: LAN200
- Protocol: Static address
- Device:
Software VLAN: "br-lan.200"
你就可以接續設定
General Settings
- IPv4 address: 192.168.20.1
- IPv4 netmask: 255.255.255.0
到 DHCP Server 頁籤,設定 DHCP 伺服器
(只有主要的那台路由器需要開,其他台必須關掉此設定值)
原本會顯示 No DHCP Server configured for this interface
按「Set up DHCP Server」按鈕啟動 DHCP 伺服器
DHCP Server > General Setup
- Start: 2
- Limit: 254
這邊設定的是 DHCP 伺服器發放 IP 位址的開始與結束區段,依需求修改
預設給 100 – 150,它可以是 2 – 254
還是重申:只有主要的那台路由器需要開,其他台必須關掉此設定值
Step4. 防火牆設定
(主要那台路由器需要設定,子機可以不用設定)
到 Network > Firewall 頁面
來到 Firewall – Zone Settings 頁面, General Settings 頁籤
依樣畫葫蘆,按 Add 新增一個區域
Firewall – Zone Settings 頁面, General Settings 頁籤
-
Name: lan200 (名字可以自己取)
-
Input: accept
-
Output: accept
-
Forward: accept
-
Covered networks: lan200 (Software VLAN: "br-lan.200")
Covered networks 為應用網路區域,這邊選擇前面設定的 lan200
- Allow forward to destination zones: wan, wan6
轉送 (forward) 區域,這邊選擇 wan, wan6 即可。
第二個 VLAN 能不能正確上網就看這個設定了。
設定 Wi-Fi
這邊設定 Wi-Fi 步驟就相對簡單
這台它有二個頻段 2.4GHz 與 5GHz
分別設定為
-
SSID: OpenWRT_lan100
-
設定您的密碼
-
對應 VLAN100
-
SSID: OpenWRT_lan200
-
設定您的密碼
-
對應 VLAN200
-
SSID: OpenWRT_lan100_5G
-
設定您的密碼
-
對應 VLAN100
-
SSID: OpenWRT_lan200_5G
-
設定您的密碼
-
對應 VLAN200
這邊應該很直覺,注意不要選錯即可。
Step5. 連接第二台路由器(子機)
我們來實作示意圖上的第二台路由器
第二台(甚至以上)的路由器,設定跟前面非常類似,
唯有幾個需要確認:
- DHCP Server 為關
- 有線網路的對應網段與 VLAN 號碼,都要正確
- Wi-Fi 帳號、密碼、對應網段與 VLAN 號碼,都要正確
然後將 trunk port 與 trunk port 用網路線,連接在一起,這樣就完成了。
文字介面設定參考
我保留了當初右上角系統透過介面自動產生的指令,供大家參考。
如果需要其他文章的話,才知道大概在講什麼。
基本上它就是用 uci
指令來做操作而已,所屬的設定檔案都已經列在註解上了,
這邊就不多做解釋,圖形介面都設定好了。
# /etc/config/dhcp
uci del dhcp.lan.ra_slaac
# /etc/config/network
uci add network bridge-vlan # =cfg07a1b0
uci set network.@bridge-vlan[-1].device='br-lan'
uci set network.@bridge-vlan[-1].vlan='100'
uci add_list network.@bridge-vlan[-1].ports='lan1'
uci add_list network.@bridge-vlan[-1].ports='lan3'
uci add_list network.@bridge-vlan[-1].ports='lan4:t'
uci add network bridge-vlan # =cfg08a1b0
uci set network.@bridge-vlan[-1].device='br-lan'
uci set network.@bridge-vlan[-1].vlan='200'
uci add_list network.@bridge-vlan[-1].ports='lan2'
uci add_list network.@bridge-vlan[-1].ports='lan4:t'
uci set network.lan.device='br-lan.100'
# /etc/config/dhcp
uci set dhcp.lan.start='2'
uci set dhcp.lan.limit='254'
uci set dhcp.lan200=dhcp
uci set dhcp.lan200.interface='lan200'
uci set dhcp.lan200.start='100'
uci set dhcp.lan200.limit='150'
uci set dhcp.lan200.leasetime='12h'
uci set dhcp.lan200.start='2'
uci set dhcp.lan200.limit='254'
# /etc/config/network
uci set network.lan.ipaddr='192.168.10.1'
uci set network.lan200=interface
uci set network.lan200.proto='static'
uci set network.lan200.device='br-lan.200'
uci set network.lan200.ipaddr='192.168.20.1'
uci set network.lan200.netmask='255.255.255.0'
# /etc/config/firewall
uci add firewall zone # =cfg0edc81
uci set firewall.@zone[-1].name='lan200'
uci set firewall.@zone[-1].input='ACCEPT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='REJECT'
uci add_list firewall.@zone[-1].network='lan200'
uci add firewall forwarding # =cfg0fad58
uci set firewall.@forwarding[-1].src='lan200'
uci set firewall.@forwarding[-1].dest='wan'
# /etc/config/wireless
uci del wireless.radio0.disabled
uci set wireless.wifinet2=wifi-iface
uci set wireless.wifinet2.device='radio0'
uci set wireless.wifinet2.mode='ap'
uci set wireless.wifinet2.ssid='OpenWrt_lan200'
uci set wireless.wifinet2.encryption='sae-mixed'
uci set wireless.wifinet2.key='YOUR_PASSWD'
uci set wireless.wifinet2.network='lan200'
uci set wireless.radio0.cell_density='0'
uci set wireless.default_radio0.ssid='OpenWrt_lan100'
uci set wireless.default_radio0.encryption='sae-mixed'
uci set wireless.default_radio0.key='YOUR_PASSWD'
uci del wireless.radio1.disabled
uci set wireless.wifinet3=wifi-iface
uci set wireless.wifinet3.device='radio1'
uci set wireless.wifinet3.mode='ap'
uci set wireless.wifinet3.ssid='OpenWrt_lan200_5G'
uci set wireless.wifinet3.encryption='sae-mixed'
uci set wireless.wifinet3.key='YOUR_PASSWD'
uci set wireless.wifinet3.network='lan200'
uci set wireless.radio1.cell_density='0'
uci set wireless.default_radio1.ssid='OpenWrt_lan100_5G'
uci set wireless.default_radio1.encryption='sae-mixed'
uci set wireless.default_radio1.key='YOUR_PASSWD'
以上就是這次的內容,希望對大家有幫助。