Openwrt

OpenWrt 是一款免費開源的路由器作業系統,基於 Linux 核心開發,廣泛應用於軟路由器、硬路由器以及各種嵌入式網路裝置。與傳統路由器韌體不同,OpenWrt 提供一個完全可寫入的、帶有套件管理系統的檔案系統,讓你可以自由安裝各種應用程式來擴充路由器功能,徹底擺脫廠商限制。

作為目前最受歡迎的開源路由系統之一,OpenWrt 擁有活躍的開發者社群和豐富的外掛生態,支援超過 1000 個軟體套件。無論是將普通路由器改造成智慧軟路由器,還是搭建家庭 NAS、廣告過濾,OpenWrt 都能滿足你的需求。

openwrt

準備工作

硬體需求

選擇用於 OpenWrt 的路由器時,建議尋找具有大於 8MB 快閃記憶體和大於 64MB 記憶體的裝置,以確保作業系統和 Web 管理介面(LuCI)的全部功能正常運作。

韌體選擇

必須為路由器的特定型號和硬體版本選擇正確的韌體檔案。例如 TP-Link WR841N 硬體版本 8 必須使用對應版本韌體,使用錯誤的檔案可能會「變磚」。正確的韌體檔案通常以 factory.bin 結尾。

你可以在 OpenWrt 官方韌體選擇器 中查詢你的裝置支援的韌體版本。

安裝 OpenWrt 韌體

刷寫步驟

刷寫 OpenWrt 韌體透過路由器原廠的 Web 管理介面完成:

  1. 使用乙太網路線連接電腦和路由器(不要用 WiFi 刷韌體)
  2. 登入原廠管理介面
  3. 進入「系統工具」→「韌體升級」頁面
  4. 選擇下載好的 OpenWrt factory.bin 韌體檔案
  5. 點擊升級,等待路由器重新啟動

⚠️ 重要: 刷寫過程中切勿斷電或拔線,否則可能導致路由器變磚。

初始存取

刷寫完成後,透過網路線連接路由器,瀏覽器存取 http://192.168.1.1 即可進入 OpenWrt 的 Web 管理介面(LuCI)。首次登入預設沒有密碼,直接點擊登入即可。

安全加固與基礎設定

安裝 OpenWrt 後,第一件事應該是安全加固:

設定 root 密碼

  1. 進入「系統」→「管理權」
  2. 在「路由器密碼」欄位設定新的 root 密碼
  3. 點擊「儲存並套用」

開啟 WiFi

預設情況下,OpenWrt 的無線功能是關閉的,需要手動開啟:

  1. 進入「網路」→「無線」
  2. 點擊無線裝置對應的「編輯」按鈕
  3. 勾選「啟用無線」
  4. 在「無線安全」標籤頁中設定加密方式(推薦 WPA2-PSK)和密碼
  5. 點擊「儲存並套用」

變更 LAN IP 位址

如果你的網路中已有其他路由器使用 192.168.1.1,需要變更 OpenWrt 的 LAN IP 以避免衝突:

  1. 進入「網路」→「介面」→「LAN」→「編輯」
  2. 修改 IPv4 位址(例如改為 192.168.9.1
  3. 點擊「儲存並套用」
  4. 重要: 同時修改 DHCP 設定,確保分配的 IP 範圍與新 LAN IP 在同一網段

變更後需要使用新 IP 重新登入管理介面。

基本網路設定

DHCP 租約

在「狀態」→「DHCP 租約」中可以查看所有已連接裝置及其 IP 分配情況。

網路介面

OpenWrt 支援多種介面協定:

協定 說明
DHCP 自動從上層路由器取得 IP,最常用
Static(靜態) 手動設定 IP 位址、子網路遮罩和閘道器
PPPoE 撥號上網,需要輸入電信業者提供的帳號密碼

連接埠轉發

在「網路」→「防火牆」→「連接埠轉發」中可以設定連接埠轉發規則,將外部請求轉發到內部網路伺服器。

無線客戶端模式(中繼/橋接)

OpenWrt 可以設定為無線客戶端,連接到現有 WiFi 網路後將連線分享給 LAN 上的有線裝置。此功能常用於擴展现有網路覆蓋範圍:

  1. 進入「網路」→「無線」
  2. 點擊「掃描」搜尋可用的 WiFi 訊號
  3. 選擇目標網路,點擊「加入網路」
  4. 設定模式為「客戶端」
  5. 設定無線安全資訊(密碼等)
  6. 儲存並套用

系統日誌

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 小主機 + 主路由器即可部署

旁路由器網路設定

  1. 進入「網路」→「介面」→「LAN」→「編輯」
  2. 修改以下設定: - 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(騰訊)
  3. 關閉 DHCP 服務:在「DHCP 伺服器」標籤頁中勾選「忽略此介面」
  4. 點擊「儲存並套用」

客戶端使用旁路由器

有兩種方式讓裝置透過旁路由器上網:

方式一:手動指定閘道器(推薦) - 在需要走旁路由器的裝置上,手動設定閘道器為旁路由器 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 同時使用多個寬頻連線,提升總頻寬或實現冗餘。

多撥設定

  1. 安裝多撥相關套件:
opkg update
opkg install luci-app-mwan3
  1. 進入「網路」→「介面」,新增多個 WAN 介面: - WAN1:連接寬頻 1(如 eth1) - WAN2:連接寬頻 2(如 eth2)

  2. 進入「系統」→「負載均衡(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(需要設定 ipaddrnetmask
  • 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。