把 Tailscale 裝在路由器上,整條區網的裝置(印表機、NAS、監視器、IoT)就能一起進 tailnet,不用每台都裝。華碩路由器的原廠韌體沒有套件管理員,裝不了 Tailscale,要刷 Asuswrt-Merlin 第三方韌體、再用 Entware 套件庫來裝。這篇講這條路的完整做法,以及幾個常見的坑。
本文依 2026 年 10 月的 Asuswrt-Merlin 官方 wiki(Installing Tailscale through Entware)、Entware 套件清單與 Tailscale 官方文件整理。以 Tailscale v1.104、Asuswrt-Merlin 3004.388.x/3006.102.x 為準;Entware 的
tailscale套件在 aarch64-k3.10(較新的 HND 路由器)為 1.96.1-1,舊的 2.6 核心路由器(如 RT-AC68U)停在 1.46.1-1。本文未在實機刷機與安裝,屬文件整理。
為什麼一定要 Merlin + Entware
華碩原廠韌體基於封閉的 Asuswrt,沒有套件管理員,也不開放安裝第三方服務,所以裝不了 Tailscale(有少數機型原廠內建 WireGuard 伺服器,但那是另一回事,不是 Tailscale)。Asuswrt-Merlin 是原廠韌體的第三方改良版,保留原廠介面、加上 JFFS 自訂腳本、SSH 與 Entware 支援,才有辦法裝 Tailscale。
先確認兩件事:
- 你的機型有 Merlin 韌體。支援清單見 Merlin 的 Supported Devices 頁面。目前主力分支是
3004.388.x(Wi-Fi 6 的 HND 機型,如 GT-AX11000、RT-AX86U)與3006.102.x(Wi-Fi 7 的 HND 機型,如 RT-BE86U、RT-AX86U Pro)。老機型(RT-AC68U 等)只到386.x,而且核心是 2.6,後面會講這會影響 Tailscale 的版本。 - 有一個 USB 儲存。Entware 裝在 USB 隨身碟或外接硬碟上,路由器的內建儲存放不下。
刷機步驟不在這篇範圍,Merlin 官網有每台機型的韌體與說明;刷完進 Web 介面開啟 SSH(LAN only)、開啟 JFFS custom scripts。
用 amtm 裝 Entware
Entware 是嵌入式裝置的套件庫,它的管理工具就是 opkg(源自 OpenWrt 體系)。裝它最省事的方法是 amtm(Asuswrt-Merlin Terminal Menu),Merlin 已內建:
# SSH 進路由器後執行
amtm照著選單選 Entware,它會引導你格式化 USB、掛載並安裝 Entware。裝完後 opkg 就可以用了:
opkg update
opkg list-upgradableEntware 的完整說明見 Merlin wiki 的 Entware 頁。
安裝 Tailscale
opkg install tailscale較新的 HND 路由器(aarch64-k3.10)會裝到 tailscale 1.96.1-1。舊的 2.6 核心路由器(RT-AC68U 等 armv7sf-k2.6)要改裝 tailscale_nohf,而且版本停在 1.46.1-1——這已經很舊、有已知漏洞,Entware 對 2.6 核心也停止維護了(見後面「版本過舊」一節)。
kernel 還是 userspace 模式
裝完之後要決定跑在哪種模式。差別在網路層:kernel 模式用 Linux 的 TUN 裝置,效能較好但可能和 Merlin 某些功能衝突;userspace 模式用 Tailscale 自己的 userspace networking,設定簡單、相容性好但較慢。兩者都要改 Entware 的啟動腳本 /opt/etc/init.d/S06tailscaled。
kernel 模式:
PRECMD="modprobe tun"
ARGS="--state=/opt/var/tailscaled.state --statedir=/opt/var/lib/tailscale"
PREARGS="nohup"kernel 模式還要在 /jffs/scripts/firewall-start 加一段使用者腳本(沒有就建立、記得 chmod +x),因為 Merlin 的防火牆在各種事件後會重啟,把 Tailscale 的規則洗掉,要重新 tailscale up 補回去:
#!/bin/sh
if [ -x /opt/bin/tailscale ]; then tailscale down; tailscale up; fiuserspace 模式:只差一個旗標,而且不需要改防火牆:
ARGS="--state=/opt/var/tailscaled.state --statedir=/opt/var/lib/tailscale --tun=userspace-networking"
PREARGS="nohup"官方對 userspace networking 的定位與限制,見 Userspace networking(官方)。多數家用情境、不想跟防火牆腳本糾纏,用 userspace 就夠了;在意效能、要當 subnet router 轉送大量流量,再考慮 kernel 模式。
啟動與開機自動執行
改完腳本後啟動:
/opt/etc/init.d/S06tailscaled startEntware 的 S06tailscaled 開頭就是 S,會隨 Entware 的啟動流程在重開機後自動帶起來。用 tailscale status 確認它在線。
設成 subnet router 或 exit node
裝在路由器上最常見的兩個用途,是一次帶整條區網:
# 把區網 192.168.50.0/24(Asus 預設)宣告進 tailnet,當 subnet router
tailscale up --advertise-routes=192.168.50.0/24
# 再讓它也能當 exit node(出外時把流量導回家)
tailscale up --advertise-exit-node --advertise-routes=192.168.50.0/24第一次會印出認證網址,用瀏覽器登入完成認證。接著到 Admin console 找到這台路由器:
- 點
...→ Disable key expiry(路由器要常開,避免金鑰過期後失聯)。 - 點
...→ Edit route settings → 啟用你要的 subnet routes 與 exit node。
LAN 網段不是 192.168.50.0/24 的話,把指令換成你實際的網段。觀念與設定細節見 Subnet Router 與 Exit Node。
誰能用你的 subnet router/exit node,由 ACL / Grants 決定——預設全開。最小權限的做法是只開給自己或特定成員,以 exit node 為例(dst 用 autogroup:internet 表示「經由它上網」):
"grants": [
{
"src": ["autogroup:admin"],
"dst": ["autogroup:internet"],
"ip": ["*"],
},
],subnet route 的範例(dst 放區網網段)與完整語法見 ACL / Grants 入門、Subnet Router 與 Exit Node。
DNS 覆寫問題
Tailscale 在 router 上預設會啟用 MagicDNS(--accept-dns),而 router 上沒有一般的 DNS 管理程式,Tailscale 就會直接覆寫 /etc/resolv.conf,和負責區網 DNS 的 dnsmasq 打架,可能讓區網裝置的 DNS 查詢亂掉。
路由器自己是 subnet router/exit node,不需要當 tailnet 的 DNS client,所以關掉它:
tailscale set --accept-dns=false關掉之後 MagicDNS 伺服器(100.100.100.100)仍然在 tailnet 上運作,只是這台 router 不再把自己的 DNS 指過去。區網裡的裝置如果要解析 MagicDNS 名稱,是各裝置自己的事,與 router 無關。詳細說明見官方 Why is resolv.conf being overwritten?。
更新與「Entware 版本過舊」
Entware 的 tailscale 套件更新不如上游快:較新的 HND 路由器是 1.96.1-1,而 Tailscale 上游穩定版已經到 v1.104。更新方式:
opkg update
opkg upgrade tailscale兩個要注意的點:
opkg upgrade會把你改過的/opt/etc/init.d/S06tailscaled覆寫掉,升級後要重新套用 kernel/userspace 模式的修改再重啟。- Merlin wiki 明確建議不要用
tailscale update直接從 Tailscale 官方自更新,它可能和 asuswrt-merlin 不完全相容;用 Entware 的套件更新就好。
舊的 2.6 核心路由器(RT-AC68U 等)是最麻煩的:Entware 的套件停在 1.46.1-1(有已知漏洞),且 Entware 已停止維護 2.6 核心。這種情況沒有好解——要嘛接受停留在有漏洞的舊版、要嘛換一台較新的 HND 機型。不要指望靠 opkg upgrade 拿到新版,這個平台的套件就是停更了。
小結
| 步驟 | 做什麼 |
|---|---|
| 刷 Merlin | 原廠韌體裝不了,需 3004.388.x 或 3006.102.x |
| amtm → Entware | USB 上裝套件庫,opkg 可用 |
opkg install tailscale |
HND 機型 1.96.1-1;舊 2.6 核心機型改 tailscale_nohf(停更) |
| 選模式 | kernel(改 TUN + firewall-start)或 userspace(--tun=userspace-networking) |
| 宣告路由 | tailscale up --advertise-exit-node --advertise-routes=... |
| 收尾 | 關 MagicDNS(--accept-dns=false)、disable key expiry |
最常見的坑就三個:kernel 模式忘了 firewall-start 腳本、--accept-dns 沒關導致 DNS 打架、升級後啟動腳本被覆寫。把這三個顧好,路由器當 subnet router/exit node 就穩了。