OpenWrt 是什麼?

OpenWrt 是一個面向嵌入式裝置的 Linux 作業系統,專為路由器、閘道器等網路裝置設計。與普通路由器韌體最大的區別在於:

  • 完整的套件管理系統(opkg):像 Ubuntu 用 apt 一樣,隨時安裝/解除安裝軟體
  • 可寫的檔案系統:不再受限於廠商預裝的封閉功能
  • 模組化設計:需要什麼裝什麼,不臃腫
  • 開源免費:GPL-2.0 授權條款,GitHub 上有 超過 2 萬個 Star

簡單說,刷了 OpenWrt 的路由器就是一台小型 Linux 伺服器,你可以用它做 DHCP 伺服器、防火牆、DNS 伺服器、廣告攔截、VPN 閘道器、智慧家居中控,甚至跑 Docker 容器。

OpenWrt vs 普通路由器韌體

特性 普通路由器韌體 OpenWrt
檔案系統 唯讀(squashfs) 可讀寫
軟體安裝 廠商預裝,無法擴充 opkg 套件管理,數千個軟體套件
自訂配置 有限 完全控制(SSH + LuCI Web 介面)
更新週期 廠商決定(可能幾年不更新) 社群維護,持續更新
原始碼 通常閉源 完全開源(GPL-2.0)

OpenWrt vs DD-WRT vs Padavan

OpenWrt 是生態最豐富的開源路由器系統,相比之下: - DD-WRT:歷史悠久,但套件管理不如 OpenWrt 靈活 - Padavan(老毛子):在國內流行,但主要面向特定晶片,客製化有限 - LEDE:2018 年已與 OpenWrt 合併,不再有獨立版本


硬體選擇:2026 年適合刷 OpenWrt 的裝置

方案一:舊路由器改造(零成本)

如果你家有淘汰的路由器,先檢查相容性:

  1. 存取 OpenWrt 硬體資料庫
  2. 輸入路由器品牌和型號
  3. 查看支援狀態:Supported(完美支援)/ Technically available(可用但需折騰)/ Unsupported(不支援)

常見支援良好的路由器: - 小米 Redmi AX6S / AX3000T - 斐訊 K2P / K3 - 網件 Netgear R6220 / R7800 - 華碩 ASUS RT-AC58U / RT-ACRH17 - TP-Link Archer C7 v2/v4/v5

方案二:專用軟路由裝置(推薦)

如果你打算認真玩 OpenWrt,一台 x86 軟路由是最佳選擇:

裝置 價格區間 特點
Intel N100 迷你主機 ¥300-600 低功耗(6W TDP),效能過剩
暢網 N5105 / N6005 ¥400-800 4 網口,軟路由經典之選
倍控 J4125 工控機 ¥500-900 6 網口,穩定可靠
舊筆記型電腦 ¥0 自帶 UPS(電池),省電

2026 年推薦:Intel N100 迷你主機性價比最高。TDP 僅 6W,四核四執行緒,跑 OpenWrt + Docker 遊刃有餘,閒魚價 300 元左右。

方案三:開發板

  • Raspberry Pi 4 / 5:OpenWrt 官方支援,適合入門學習
  • NanoPi R4S / R5S:友善出品,雙網口,軟路由熱門之選
  • RK3568 / RK3588 開發板:效能強勁,但需要一定動手能力

從零刷機教學

⚠️ 警告:刷機有風險,操作不當可能導致路由器變磚。建議先搜尋你的路由器型號的具體刷機教學。

Step 1:備份原廠韌體

刷機前一定要備份!一旦出問題還能恢復。

透過 SSH 備份(如果路由器已開啟 SSH):

# SSH 登入路由器
ssh root@192.168.1.1

# 備份整個韌體(透過 TFTP 傳送到本機電腦)
cat /dev/mtd0 > /tmp/original_firmware.bin
# 然後從路由器下載這個檔案

透過 TTL 序列埠備份(通用方法):

# 需要 USB 轉 TTL 模組(CH340/CP2102,約 ¥10)
# 連接後,在電腦上執行
minicom -D /dev/ttyUSB0 -b 115200

# 進入 U-Boot 後執行備份指令

Step 2:刷入 OpenWrt

方法 A:透過 Web 介面(最簡單)

  1. 下載對應型號的 OpenWrt 韌體映像檔(.bin 檔案) - 前往 OpenWrt Firmware Selector - 輸入裝置型號,選擇最新版本
  2. 登入路由器管理頁面(通常是 192.168.1.1
  3. 找到「系統工具 → 韌體升級」
  4. 上傳 .bin 檔案,等待自動重新啟動

方法 B:透過 Breed 引導(推薦,防變磚)

Breed 是一個不死 U-Boot 引導程式,刷了 Breed 後基本告別變磚。

# 1. 先刷入 Breed(需要路由器已開啟 SSH 或透過 TTL)
# breed 檔案通常是 .bin 格式

# 2. 按住路由器 Reset 鍵上電,進入 Breed Web 介面
# 瀏覽器存取 192.168.1.1

# 3. 在 Breed 介面中選擇 OpenWrt 韌體並刷入
# Breed 支援恢復,即使刷錯也能重新刷

方法 C:x86 軟路由透過 USB 隨身碟安裝

# 1. 下載 x86 版本的 OpenWrt 映像檔(combined-ext4.img.gz)
wget https://downloads.openwrt.org/releases/23.05.3/targets/x86/64/openwrt-23.05.3-x86-64-generic-ext4-combined.img.gz

# 2. 解壓縮
gunzip openwrt-23.05.3-x86-64-generic-ext4-combined.img.gz

# 3. 寫入 USB 隨身碟(假設 USB 隨身碟是 /dev/sdb,請務必確認!)
sudo dd if=openwrt-23.05.3-x86-64-generic-ext4-combined.img of=/dev/sdb bs=4M status=progress

# 4. 從 USB 隨身碟啟動軟路由,OpenWrt 會自動寫入內建硬碟

Step 3:首次配置

刷入成功後,OpenWrt 預設:

  • LAN IP192.168.1.1
  • Web 介面http://192.168.1.1(LuCI)
  • SSHssh root@192.168.1.1(無密碼)
# SSH 登入(首次無密碼,直接按 Enter)
ssh root@192.168.1.1

# 設定 root 密碼
passwd

# 更新軟體套件清單
opkg update

# 安裝中文語言套件
opkg install luci-i18n-base-zh-cn

# 重新整理 Web 介面,介面變為中文

Step 4:網路基礎配置

# 編輯網路配置檔案
vi /etc/config/network

# 典型 LAN 配置範例:
# config interface 'lan'
#     option type 'bridge'
#     option ifname 'eth0'
#     option proto 'static'
#     option ipaddr '192.168.2.1'
#     option netmask '255.255.255.0'

# 重新啟動網路服務
/etc/init.d/network restart

核心功能實戰

1. DHCP 伺服器配置

OpenWrt 預設開啟 DHCP,你可以自訂位址池:

# 編輯 DHCP 配置
vi /etc/config/dhcp

# 關鍵配置項:
# config dhcp 'lan'
#     option interface 'lan'
#     option start '100'          # 起始位址
#     option limit '150'          # 位址池大小
#     option leasetime '12h'      # 租期
#     option ra 'server'          # IPv6 RA 模式
#     option dhcpv6 'server'      # IPv6 DHCP

# 重新啟動 DHCP 服務
/etc/init.d/dnsmasq restart

設定靜態 IP 分配(給特定裝置固定 IP):

# 在 /etc/config/dhcp 中新增:
# config host
#     option name 'nas'
#     option mac 'AA:BB:CC:DD:EE:FF'
#     option ip '192.168.2.100'

2. 防火牆配置

OpenWrt 的防火牆基於 iptables/nftables,預設規則:

  • LAN 區域:允許所有入站/出站
  • WAN 區域:拒絕入站,允許出站
  • 轉發規則:LAN → WAN 允許,WAN → LAN 拒絕

開放特定埠(比如 NAS 管理介面):

# 透過 LuCI Web 介面:網路 → 防火牆 → 埠轉發

# 或者指令行:
uci add firewall rule
uci set firewall.@rule[-1].name='Allow-NAS'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].dest_port='8080'
uci set firewall.@rule[-1].target='ACCEPT'
uci set firewall.@rule[-1].proto='tcp'
uci commit firewall
/etc/init.d/firewall restart

3. DNS 配置

使用 DNS 加速(SmartDNS):

# 安裝 SmartDNS
opkg install smartdns

# 配置 SmartDNS 使用多個 DNS 上游伺服器
vi /etc/smartdns/smartdns.conf

# 新增上游 DNS:
# server 223.5.5.5 -group alidns
# server 119.29.29.29 -group dnspod
# server 8.8.8.8 -group google

# 設定監聽埠
# bind :6053

# 設定 DNS 快取
# cache-size 512

# 重新啟動服務
/etc/init.d/smartdns enable
/etc/init.d/smartdns restart

4. 廣告攔截(AdGuard Home / Adbyby)

方案 A:安裝 AdGuard Home(推薦)

# 透過 opkg 安裝
opkg install adguardhome

# 或者手動安裝最新版:
wget https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_armv7.tar.gz
tar -xzf AdGuardHome_linux_armv7.tar.gz
./AdGuardHome -s install

# 瀏覽器存取 http://192.168.2.1:3000 完成初始化

方案 B:使用 Adbyby(更輕量)

opkg install adbyby
/etc/init.d/adbyby enable
/etc/init.d/adbyby start

5. VPN 伺服器

搭建 WireGuard VPN(2026 年最推薦的 VPN 方案):

# 安裝 WireGuard
opkg install wireguard-tools luci-app-wireguard

# 在 WAN 口產生 WireGuard 配置
wg genkey > /etc/wireguard/server_private.key
wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key

# 編輯配置
vi /etc/wireguard/wg0.conf

配置檔案範例:

[Interface]
PrivateKey = <你的伺服器私鑰>
Address = 10.8.0.1/24
ListenPort = 51820

# 客戶端 1
[Peer]
PublicKey = <客戶端公鑰>
AllowedIPs = 10.8.0.2/32
# 啟動 WireGuard
wg-quick up wg0

# 設定為開機啟動
/etc/init.d/wireguard enable

進階玩法

Docker 容器支援

OpenWrt 可以執行 Docker,擴充性無限!

# 安裝 Docker
opkg install docker docker-compose luci-app-dockerman

# 啟動 Docker 服務
/etc/init.d/dockerd enable
/etc/init.d/dockerd start

# 驗證安裝
docker --version
docker info

實戰:在 OpenWrt 上跑 Home Assistant(智慧家居):

# 建立持久化儲存目錄
mkdir -p /srv/homeassistant

# 拉取並執行
docker run -d \
  --name homeassistant \
  --restart=unless-stopped \
  --network=host \
  -v /srv/homeassistant:/config \
  homeassistant/home-assistant:stable

# 瀏覽器存取 http://192.168.2.1:8123

實戰:部署 AdGuard Home(透過 Docker):

docker run -d \
  --name adguardhome \
  --restart=unless-stopped \
  --network=host \
  -v /srv/adguard/work:/opt/adguardhome/work \
  -v /srv/adguard/conf:/opt/adguardhome/conf \
  adguard/adguardhome:latest

內網穿透

使用 frp 實現內網穿透:

# 安裝 frp 客戶端
opkg install frp

# 配置 frpc
vi /etc/frpc/frpc.toml
serverAddr = "你的 frp 伺服器 IP"
serverPort = 7000

[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080
# 啟動 frp
/etc/init.d/frpc enable
/etc/init.d/frpc start

流量監控

# 安裝 nlbwmon(輕量級流量統計)
opkg install nlbwmon luci-app-nlbwmon

# 或者安裝更強大的 BanDaWidth
opkg install bandwidth

# 安裝即時流量監控(iftop 的 OpenWrt 版本)
opkg install iftop

# 即時查看哪個 IP 佔用最多頻寬
iftop -i br-lan

IPv6 支援

OpenWrt 對 IPv6 的支援非常成熟:

# 啟用 IPv6(通常在 LuCI 中操作更直觀)
# 網路 → 介面 → LAN → 編輯 → DHCP 伺服器 → IPv6 設定

# 指令行方式:
uci set network.lan6='interface'
uci set network.lan6.device='@device'
uci set network.lan6.proto='dhcpv6'
uci commit network
/etc/init.d/network restart

日常維護

韌體更新

# 方式 1:透過 LuCI Web 介面
# 系統 → 備份/升級 → 下載新韌體 → 刷入

# 方式 2:指令行更新
sysupgrade -v /tmp/openwrt-xxx-squashfs-sysupgrade.bin

# 保留配置更新(推薦):
sysupgrade -c /tmp/openwrt-xxx-squashfs-sysupgrade.bin

# 不保留配置(全新安裝):
sysupgrade -n /tmp/openwrt-xxx-squashfs-sysupgrade.bin

備份與恢復配置

# 備份目前配置
sysupgrade -b /tmp/config-backup.tar.gz

# 從備份恢復
sysupgrade -r /tmp/config-backup.tar.gz

# 查看備份內容
tar tzf /tmp/config-backup.tar.gz

常用 opkg 指令

# 更新軟體源
opkg update

# 搜尋軟體套件
opkg find luci-app-*

# 安裝軟體套件
opkg install <套件名>

# 列出已安裝的套件
opkg list-installed

# 解除安裝軟體套件
opkg remove <套件名>

# 清理快取
opkg clean

常見問題排查

1. 刷完 OpenWrt 無法上網

# 檢查 WAN 口是否取得 IP
ifconfig eth1

# 檢查預設閘道器
route -n

# 測試 DNS
nslookup baidu.com

# 手動設定 DNS
vi /etc/resolv.conf
# 新增:nameserver 223.5.5.5

# 重新啟動網路
/etc/init.d/network restart

2. LuCI Web 介面無法存取

# 檢查 uhttpd 服務狀態
/etc/init.d/uhttpd status

# 重新啟動 Web 服務
/etc/init.d/uhttpd restart

# 檢查防火牆規則
iptables -L -n

3. WiFi 無法啟動

# 檢查 WiFi 配置
wifi status

# 重新產生預設配置
wifi config

# 編輯 WiFi 配置
vi /etc/config/wireless

# 啟用 WiFi
uci set wireless.@wifi-device[0].disabled=0
uci commit wireless
wifi reload

4. 裝置變磚怎麼辦

  1. Breed 使用者:按住 Reset 鍵上電,進入 Breed Web 恢復介面重新刷入
  2. TTL 序列埠使用者:透過序列埠進入 U-Boot,重新刷入韌體
  3. TFTP 恢復:部分路由器支援 TFTP 恢復模式,具體方法搜尋你的型號

總結

OpenWrt 是開發者折騰網路的最佳開源平台。從刷舊路由器到搭建 x86 軟路由,從基礎的 DHCP/防火牆配置到 Docker + 智慧家居,OpenWrt 讓每一台路由器都變成一台強大的 Linux 伺服器。

本文涉及的關鍵資源: - OpenWrt 官網 - 韌體選擇器 - 硬體資料庫 - OpenWrt 論壇 - GitHub 儲存庫

下一步推薦閱讀: - Ventoy:製作多系統啟動 USB 隨身碟的神器 — 刷機前的系統碟製作工具 - Linux 檔案格式詳解 — 理解韌體檔案格式

如果你覺得這篇文章有幫助,歡迎分享給更多開發者!