OpenWrt 是一款免費開源的路由器作業系統,基於 Linux 核心開發,廣泛應用於軟路由器、硬路由器以及各種嵌入式網路裝置。與傳統路由器韌體不同,OpenWrt 提供一個完全可寫入的、帶有套件管理系統的檔案系統,讓你可以自由安裝各種應用程式來擴充路由器功能,徹底擺脫廠商限制。
作為目前最受歡迎的開源路由系統之一,OpenWrt 擁有活躍的開發者社群和豐富的外掛生態,支援超過 1000 個軟體套件。無論是將普通路由器改造成智慧軟路由器,還是搭建家庭 NAS、廣告過濾,OpenWrt 都能滿足你的需求。
準備工作
硬體需求
選擇用於 OpenWrt 的路由器時,建議尋找具有大於 8MB 快閃記憶體和大於 64MB 記憶體的裝置,以確保作業系統和 Web 管理介面(LuCI)的全部功能正常運作。
韌體選擇
必須為路由器的特定型號和硬體版本選擇正確的韌體檔案。例如 TP-Link WR841N 硬體版本 8 必須使用對應版本韌體,使用錯誤的檔案可能會「變磚」。正確的韌體檔案通常以 factory.bin 結尾。
你可以在 OpenWrt 官方韌體選擇器 中查詢你的裝置支援的韌體版本。
安裝 OpenWrt 韌體
刷寫步驟
刷寫 OpenWrt 韌體透過路由器原廠的 Web 管理介面完成:
- 使用乙太網路線連接電腦和路由器(不要用 WiFi 刷韌體)
- 登入原廠管理介面
- 進入「系統工具」→「韌體升級」頁面
- 選擇下載好的 OpenWrt factory.bin 韌體檔案
- 點擊升級,等待路由器重新啟動
⚠️ 重要: 刷寫過程中切勿斷電或拔線,否則可能導致路由器變磚。
初始存取
刷寫完成後,透過網路線連接路由器,瀏覽器存取 http://192.168.1.1 即可進入 OpenWrt 的 Web 管理介面(LuCI)。首次登入預設沒有密碼,直接點擊登入即可。
安全加固與基礎設定
安裝 OpenWrt 後,第一件事應該是安全加固:
設定 root 密碼
- 進入「系統」→「管理權」
- 在「路由器密碼」欄位設定新的 root 密碼
- 點擊「儲存並套用」
開啟 WiFi
預設情況下,OpenWrt 的無線功能是關閉的,需要手動開啟:
- 進入「網路」→「無線」
- 點擊無線裝置對應的「編輯」按鈕
- 勾選「啟用無線」
- 在「無線安全」標籤頁中設定加密方式(推薦 WPA2-PSK)和密碼
- 點擊「儲存並套用」
變更 LAN IP 位址
如果你的網路中已有其他路由器使用 192.168.1.1,需要變更 OpenWrt 的 LAN IP 以避免衝突:
- 進入「網路」→「介面」→「LAN」→「編輯」
- 修改 IPv4 位址(例如改為
192.168.9.1) - 點擊「儲存並套用」
- 重要: 同時修改 DHCP 設定,確保分配的 IP 範圍與新 LAN IP 在同一網段
變更後需要使用新 IP 重新登入管理介面。
基本網路設定
DHCP 租約
在「狀態」→「DHCP 租約」中可以查看所有已連接裝置及其 IP 分配情況。
網路介面
OpenWrt 支援多種介面協定:
| 協定 | 說明 |
|---|---|
| DHCP | 自動從上層路由器取得 IP,最常用 |
| Static(靜態) | 手動設定 IP 位址、子網路遮罩和閘道器 |
| PPPoE | 撥號上網,需要輸入電信業者提供的帳號密碼 |
連接埠轉發
在「網路」→「防火牆」→「連接埠轉發」中可以設定連接埠轉發規則,將外部請求轉發到內部網路伺服器。
無線客戶端模式(中繼/橋接)
OpenWrt 可以設定為無線客戶端,連接到現有 WiFi 網路後將連線分享給 LAN 上的有線裝置。此功能常用於擴展现有網路覆蓋範圍:
- 進入「網路」→「無線」
- 點擊「掃描」搜尋可用的 WiFi 訊號
- 選擇目標網路,點擊「加入網路」
- 設定模式為「客戶端」
- 設定無線安全資訊(密碼等)
- 儲存並套用
系統日誌
OpenWrt 儲存了詳細的系統日誌,可以即時查看網路運作狀態,包括哪些裝置取得了 IP 位址、系統活動等。
在 LuCI 中透過「狀態」→「系統日誌」查看,或透過 SSH 執行 logread 指令。
LuCI 外掛推薦
OpenWrt 的強大之處在於豐富的外掛生態。以下是一些實用的 LuCI 外掛:
| 外掛 | 功能 |
|---|---|
| luci-app-statistics | 路由器歷史資料圖表,監控 CPU、RAM、網路流量等 |
| luci-app-firewall | 視覺化防火牆管理 |
| luci-app-adblock | 廣告過濾,自動封鎖廣告網域 |
| luci-app-upnp | UPnP 支援,自動連接埠對應 |
安裝外掛可以透過 SSH 執行:
opkg update
opkg install luci-app-statistics
或在 LuCI 的「系統」→「軟體套件」中搜尋安裝。
進階設定
旁路由器設定指南
旁路由器(Single-Arm Router)是軟路由器常見的部署模式,不需要替換主路由器,只需將 OpenWrt 作為旁路裝置接入現有網路。
為什麼需要旁路由器?
- 不破壞現有網路:主路由器繼續負責 DHCP 和 NAT,OpenWrt 作為旁路提供額外功能
- 靈活切換:需要時切換閘道器到 OpenWrt,不需要時保持原樣
- 適合家庭/小型企業:一台 x86 小主機 + 主路由器即可部署
旁路由器網路設定
- 進入「網路」→「介面」→「LAN」→「編輯」
- 修改以下設定:
- IPv4 位址:設定為主路由器同網段的 IP,如主路由器
192.168.1.1,旁路由器設為192.168.1.2- 子網路遮罩:255.255.255.0- 閘道器:指向主路由器 IP,如192.168.1.1- DNS:使用公共 DNS 如223.5.5.5(阿里)或119.29.29.29(騰訊) - 關閉 DHCP 服務:在「DHCP 伺服器」標籤頁中勾選「忽略此介面」
- 點擊「儲存並套用」
客戶端使用旁路由器
有兩種方式讓裝置透過旁路由器上網:
方式一:手動指定閘道器(推薦)
- 在需要走旁路由器的裝置上,手動設定閘道器為旁路由器 IP(如 192.168.1.2)
- 適合只有部分裝置需要特殊功能的場景
方式二:主路由器 DHCP 指向旁路由器 - 在主路由器的 DHCP 設定中,將預設閘道器指向旁路由器 IP - 所有裝置自動走旁路由器,適合全屋智慧/廣告過濾等場景
Docker 容器部署
OpenWrt 支援執行 Docker 容器,可以在路由器上部署各種服務。
安裝 Docker
# 更新軟體來源
opkg update
# 安裝 Docker 相關套件
opkg install docker docker-cli luci-app-dockerman
# 啟動 Docker 服務
/etc/init.d/dockerd enable
/etc/init.d/dockerd start
安裝完成後,可以在 LuCI 介面中看到「Docker」選單,透過 Web 介面管理容器。
常用 Docker 容器部署
部署 AdGuard Home(廣告過濾):
docker run -d \
--name adguardhome \
--restart unless-stopped \
-p 53:53/tcp -p 53:53/udp \
-p 80:80/tcp -p 3000:3000/tcp \
-v /etc/adguardhome/work:/opt/adguardhome/work \
-v /etc/adguardhome/conf:/opt/adguardhome/conf \
adguard/adguardhome
部署 Home Assistant(智慧家居):
docker run -d \
--name homeassistant \
--restart unless-stopped \
--network host \
-v /etc/homeassistant:/config \
ghcr.io/home-assistant/home-assistant:stable
部署 Aria2(下載器):
docker run -d \
--name aria2-pro \
--restart unless-stopped \
-p 6800:6800 \
-p 6880:6880 \
-e PUID=1000 -e PGID=1000 \
-e RPC_SECRET=your-secret-token \
-v /mnt/downloads:/downloads \
p3terx/aria2-pro
注意: 在路由器上執行 Docker 需要考慮硬體效能,建議至少 2GB 記憶體 + 8GB 儲存的裝置。
多撥與負載均衡
多撥(Multi-WAN)允許 OpenWrt 同時使用多個寬頻連線,提升總頻寬或實現冗餘。
多撥設定
- 安裝多撥相關套件:
opkg update
opkg install luci-app-mwan3
-
進入「網路」→「介面」,新增多個 WAN 介面: - WAN1:連接寬頻 1(如 eth1) - WAN2:連接寬頻 2(如 eth2)
-
進入「系統」→「負載均衡(MWAN3)」設定策略: - 均衡負載:流量按比例分配到多個 WAN - 主備模式:主 WAN 故障時自動切換到備用 WAN - 按策略分流:特定 IP/連接埠走指定 WAN
MWAN3 均衡設定範例
# 查看 WAN 介面狀態
mwan3 status
# 查看策略
mwan3 policy
廣告過濾方案
OpenWrt 上實現廣告過濾有多種方案:
方案一:AdBlock(輕量級)
opkg install luci-app-adblock
AdBlock 透過修改 DNS 解析,將廣告網域指向 0.0.0.0,實現去廣告。設定簡單,資源佔用低。
方案二:AdGuard Home(推薦)
透過 Docker 部署(見上文),功能更強大: - 支援自訂過濾規則 - 提供詳細的查詢日誌 - 支援家長控制 - 可設定上層 DNS
方案三:PassWall / OpenClash
適用於需要特殊網路需求的用戶,支援多種代理協定和分流規則。
# 以 PassWall 為例
opkg install luci-app-passwall
說明: 這些工具僅供技術研究和合法用途使用,請遵守當地法律法規。
設定檔案結構
OpenWrt 的設定檔案使用節和選項/值結構,位於 /etc/config/ 目錄下。
- 通用語法:
config <type> ["<name>"]用於定義節,option <name> "<value>"用於定義選項 - 這些檔案由 UCI(Unified Configuration Interface)系統解析
網路設定檔案
網路介面設定儲存在 /etc/config/network 中,可設定為以下協定:
none— 不設定static— 靜態 IP(需要設定ipaddr和netmask)dhcp— 自動取得pppoe— 撥號上網
交換器與 VLAN 設定
OpenWrt 支援交換器設定以設定 VLAN:
- 交換器設定儲存在
/etc/config/network中 - 在 Broadcom 硬體上,節名稱需要為
eth0 - 每個 VLAN 命名為
vlan<n>,其中 n 是 VLAN 編號 - 連接埠標記:
*(預設 VLAN)、u(未標記)、t(已標記) - Broadcom 硬體上的 CPU 連接埠為連接埠 5
無線設定(指令行)
WiFi 設定在 /etc/config/wireless 中設定,每個無線驅動程式在 /lib/wifi/<driver_name>.sh 中有對應設定檔案。
常見設定選項:
- 裝置級: distance、mode、diversity、rxantenna、txantenna、txpower
- 介面級: network、device、mode、ssid、bssid
支援的無線模式包括:存取點(AP)、客戶端(Client)、Ad-hoc、監視器(Monitor)和 WDS 點對點。
802.1x 身份驗證
OpenWrt 支援 802.1x 身份驗證(客戶端和存取點設定),EAP 類型支援 TLS、TTLS 和 PEAP。
WAN 和 WAN6 介面
- WAN: IPv4 上層連線
- WAN6: IPv6 上層連線
- LAN: 處理下游 IPv4 和 IPv6,無需單獨的 LAN6 介面
Hotplug 熱插拔
可以透過 hotplug 指令碼根據硬件事件動態設定 OpenWrt,例如 USB 裝置插入時自動掛載。
Init 指令碼
所有系統服務的啟動指令碼位於 /etc/init.d/ 下,使用 /etc/rc.common 作為包裝器。
常用指令:
/etc/init.d/<service> enable # 開機自啟
/etc/init.d/<service> start # 立即啟動
/etc/init.d/<service> stop # 停止服務
/etc/init.d/<service> restart # 重新啟動服務
其他實用資訊
SSH 存取
透過 SSH 可以完成 OpenWrt 的指令行管理:
ssh root@192.168.1.1
SSH 存取需要在「系統」→「管理權」→「SSH 存取」中開啟。
文字編輯器
vi 和 nano 可用於在指令行中編輯設定檔案。推薦使用 nano,對新手更友善:
opkg install nano
nano /etc/config/network
Windows 管理工具
從 Windows 管理 OpenWrt 可以使用以下工具:
- PuTTY — SSH 客戶端
- WinSCP — SFTP 檔案傳輸
- SmarTTY — 現代化 SSH 客戶端
- cmder — 增強版指令行
開發和自訂(進階)
📌 本節面向開發者,如果你只是把 OpenWrt 作為路由器使用,可以跳過本節。
建置系統
OpenWrt 建置系統使開發人員能夠使用交叉編譯建立自訂韌體映像檔。
取得原始碼
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
主要目錄結構:
| 目錄 | 說明 |
|---|---|
tools/ |
建置工具 |
toolchain/ |
交叉編譯工具鏈 |
package/ |
軟體套件定義 |
target/ |
目標平台設定 |
設定和建置
./scripts/feeds update -a # 更新軟體來源
./scripts/feeds install -a # 安裝軟體來源
make menuconfig # 設定建置:選擇平台、工具鏈和軟體套件
make -j$(nproc) # 開始編譯
軟體套件
OpenWrt 韌體中的幾乎所有內容都是 .ipk 格式的軟體套件,可以自由新增或刪除。
建立自訂軟體套件
透過建立 Makefile 來定義一個新的軟體套件:
include $(TOPDIR)/rules.mk
PKG_NAME:=my-package
PKG_VERSION:=1.0
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define Package/my-package
SECTION:=utils
CATEGORY:=Utilities
TITLE:=My custom package
endef
define Package/my-package/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/my-script $(1)/usr/bin/
endef
$(eval $(call BuildPackage,my-package))
可設定選項包括:PKG_NAME、PKG_VERSION、PKG_RELEASE、PKG_SOURCE、PKG_SOURCE_URL、PKG_MD5SUM 等。
建立核心模組套件
透過定義 KernelPackage 節來為核心模組建立套件,可設定選項包括:TITLE、DESCRIPTION、SUBMENU、KCONFIG、FILES 和 AUTOLOAD。
故障排除
# 診斷套件是否顯示在 menuconfig 中
make -C package/<name> DUMP=1 V=99
# 清理特定軟體套件
make package/<name>/clean V=99
# 安裝特定軟體套件
make package/<name>/install V=99
新增新平台支援
將 OpenWrt 移植到新裝置的技術包括:
- 作業系統指紋識別(nmap 等)
- 連接埠掃描
- 分析二進位韌體映像檔
- 檢查快閃記憶體容量
- 連接序列埠除錯
找到裝置資訊和開發工具套件後,可以為 OpenWrt 調整核心修補程式和二進位驅動程式,開發新的快閃記憶體對應驅動程式和韌體建置工具。
回報 Bug
OpenWrt 使用 GitHub Issues 進行 Bug 回報和功能請求。開發者可以關閉、接受和修復問題工單。
對比:OpenWrt vs DD-WRT vs pfSense vs MikroTik RouterOS
| 維度 | OpenWrt | DD-WRT | pfSense | MikroTik RouterOS |
|---|---|---|---|---|
| 開源 | ✅ 完全開源(GPL) | ✅ 開源 | ✅ 開源(BSD) | ❌ 商業軟體 |
| 價格 | 免費 | 免費 | 免費 | $45-295(按授權等級) |
| 硬體支援 | 極廣泛(1000+ 裝置) | 廣泛(700+ 裝置) | 僅 x86/APU | 僅 MikroTik 硬體 |
| 外掛生態 | 1000+ 軟體套件 | 有限 | 豐富(FreeBSD ports) | 內建功能豐富 |
| Web 介面 | LuCI(輕量) | 自研 Web 介面 | 專業 Web 介面 | WinBox / WebFig |
| Docker 支援 | ✅ 可執行 Docker | ❌ | ⚠️ 有限 | ❌ |
| 學習曲線 | 中等 | 中等 | 較陡 | 陡峭 |
| 適合場景 | 軟路由器/家庭/小型企業 | 家用路由 | 企業防火牆 | 企業網路/ISP |
| 社群活躍度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
選擇建議: - OpenWrt — 軟路由器刷機首選,硬體相容性最廣,外掛生態最豐富 - DD-WRT — 老牌路由韌體,適合不想折騰但需要比原廠更強功能的用戶 - pfSense — 專業級防火牆/路由方案,適合企業網路 - MikroTik RouterOS — 企業網路/ISP 等級,功能強大但需要專業培訓
OpenWrt 常見問題 FAQ
Q1: OpenWrt 是什麼?和普通路由器韌體有什麼區別?
A: OpenWrt 是一個基於 Linux 核心的開源路由器作業系統。與普通路由器韌體的最大區別在於: - 完全可客製化:OpenWrt 提供帶套件管理系統的完整檔案系統,可以自由安裝/解除安裝軟體 - 開源透明:程式碼完全公開,無後門,社群驅動開發 - 硬體相容性廣:支援超過 1000 種路由器裝置 - 進階功能:支援 Docker 容器、VPN、QoS、廣告過濾、軟路由器等
Q2: 哪些路由器可以刷 OpenWrt?
A: OpenWrt 支援非常廣泛的硬體裝置: - 家用路由器:TP-Link、Netgear、Linksys、ASUS、Xiaomi 等 - x86 軟路由器:Intel/AMD x86 平台的小主機、工控機 - 開發板:Raspberry Pi、Banana Pi 等 SBC
建議存取 OpenWrt 韌體選擇器 輸入你的裝置型號查詢是否支援。
Q3: 刷 OpenWrt 會變磚嗎?如何救磚?
A: 刷機有風險,但遵循正確步驟通常安全: - 降低風險:使用正確的韌體版本、刷寫過程不斷電、先備份原廠韌體 - 救磚方法: 1. TFTP 恢復:大多數路由器支援 TFTP 恢復模式 2. 序列埠除錯:透過 TTL 序列埠連線修復 3. CFE/Bootloader 模式:進入 bootloader 重新刷寫 4. 程式設計器硬刷:拆機用程式設計器直接寫入 flash 晶片
建議: 刷機前先備份原廠韌體,並了解你裝置的救磚方法。
Q4: OpenWrt 支援 Docker 嗎?
A: 是的,OpenWrt 支援執行 Docker 容器。需要安裝 dockerd 和相關依賴:
opkg install docker docker-cli luci-app-dockerman
建議在至少 2GB 記憶體的裝置上執行 Docker 容器,以確保穩定性和效能。
Q5: OpenWrt 和 LEDE 是什麼關係?
A: LEDE(Linux Embedded Development Environment)是 OpenWrt 的一個分支。2016 年,部分開發者因開發流程分歧建立了 LEDE 專案。2018 年,LEDE 和 OpenWrt 重新合併,現在統一使用 OpenWrt 名稱。你現在看到的 OpenWrt 實際上包含了 LEDE 時期的改進成果。如果你在舊資料中看到 LEDE,實際上就是 OpenWrt。

