Skip to content

GL.iNet 旅行路由器:整個旅館房間接回家

用 GL.iNet 旅行路由器把旅館 Wi-Fi 接成自己的小網路,路由器以 repeater 模式連上旅館 Wi-Fi 後加入 tailnet,再選家裡的 Exit Node,房間內的電視、Switch、手機等所有裝置就全部走家裡出口上網。說明內建 Tailscale 的綁定、Allow Remote Access LAN、Custom Exit Node、韌體 4.8.x 已知問題、guest Wi-Fi 隔離與側邊滑動按鈕的自訂腳本

Updated View as Markdown

旅館 Wi-Fi 通常一間房只給你一、兩台裝置的額度,而且是公開網路。帶一台 GL.iNet 旅行路由器(例如 Beryl AX/GL-MT3000、Slate AX/GL-AXT1800)出門,讓它連上旅館 Wi-Fi、自己再發一個 Wi-Fi,房間裡的電視、Switch、手機、筆電就全部接在這一台後面;旅館只看到路由器一台裝置,你卻想接幾台就接幾台。

更進一步,GL.iNet 韌體內建 Tailscale(韌體 v4.2 起):路由器加入你的 tailnet 之後,選家裡的 Exit Node,整個房間的上網流量就全部經由家裡的出口出去——電視上看台灣串流、手機走家裡的 IP,彷彿人根本沒出國。這篇講怎麼設定,以及幾個旅行路由器特有的坑。

本文依 2026 年 10 月的 GL.iNet 官方文件(docs.gl-inet.com)與 Tailscale 官方文件整理,未實際驗證。以 GL.iNet 韌體 v4.11(2026 年 10 月)、Tailscale v1.104 為準;文中標註「v4.9 起」的選項在更早的 4.x 韌體上名稱或功能不同。

前置:你需要什麼

  • 一台支援 Tailscale 的 GL.iNet 路由器。Tailscale 功能自韌體 v4.2 起提供,但官方文件標註它是 beta,且部分記憶體較小的型號不支援(官方文件在 Tailscale 頁面有「Supported Models/Unsupported Models」兩份清單)。買之前先到 GL.iNet 的 Firmware Download Center 或 Tailscale 文件頁確認你的型號。
  • 家裡一台常開的 exit node。可以是 Raspberry Pi、NAS、Apple TV、另一台 GL.iNet 路由器(v4.9 起可開 Run Exit Node)或任何 Linux 主機。設定方式見 Exit Node。
  • 先在家裡把整段跑通:旅行時旅館網路環境不可控,出發前先把路由器、exit node、Admin console 的核准都弄好,到旅館只剩「連 Wi-Fi、開 Tailscale」兩步。

官方文件另外提醒:Tailscale 底層是 WireGuard,不要和 OpenVPN Client、WireGuard Client、GoodCloud Site to Site、ZeroTier、AstroWarp 同時使用,否則會路由衝突。

底層是 OpenWrt:GL.iNet UI 與原生 OpenWrt 的差異

GL.iNet 韌體本質上是客製化的 OpenWrt,所以底下的 tailscaled、tailscale0 介面、防火牆 nftables 都和原生 OpenWrt 一樣。差別在於 GL.iNet 把設定包進了自己的 Web Admin Panel:

  • 原生 OpenWrt:要自己建立 tailscale0 的 unmanaged 介面、專用防火牆 zone、forwarding、masquerade,完整步驟見 OpenWrt 裝 Tailscale。
  • GL.iNet UI:APPLICATIONS → Tailscale 一個頁面就包辦了綁定、subnet route、exit node;防火牆 zone 由韌體自動建立,你通常不用(也不該)進 LuCI 手動改。v4.9 起更把 subnet route 的 masquerade 抽成一個 IP Masquerading 開關。

這也帶出一個常見陷阱:韌體 4.8.0–4.8.3 改過 Tailscale 的防火牆規則後,有使用者發現在 LuCI 手動把 tailscale0 加進 WAN zone 的舊做法,反而和新 zone 衝突、導致區網裝置連不到 tailnet(見下方「韌體 4.8.x 的已知問題」)。除非你很確定自己在做什麼,否則不要在 GL.iNet 上沿用原生 OpenWrt 的防火牆設定——UI 已經幫你處理好了。

啟用 Tailscale 並綁定帳號

  1. 進入路由器的 Web Admin Panel(預設 192.168.8.1),到 APPLICATIONS → Tailscale。
  2. 把 Enable Tailscale 切到開,點 Apply。
  3. 稍候畫面會出現一個 Device Bind Link(裝置綁定連結)。點開它,會跳出一個 Tailscale 網址,點下去登入你的 Tailscale 帳號。
  4. 登入後 Tailscale 會要你確認把這台裝置加進 tailnet,點 Connect。
  5. 連線成功後會自動跳到 Tailscale Admin console,可以看到這台路由器拿到了 100.x.y.z 的位址。

綁定之後,你就能從任何在 tailnet 裡的裝置,用這個 100.x.y.z 直接 ping、SSH 或開啟路由器的管理介面——這本身就是旅行時遠端排障的利器。

Allow Remote Access LAN:把房內裝置廣告進 tailnet

預設路由器自己會進 tailnet,但接在它後面的裝置(電視、Switch)不會。想讓 tailnet 裡的裝置反過來連到房內的裝置,開啟 Allow Remote Access LAN(v4.9 起改名為 Advertise LAN Subnets)並 Apply:

  1. 到 APPLICATIONS → Tailscale,啟用 Allow Remote Access LAN,點 Apply。
  2. 到 Admin console 找到這台路由器,點右邊三點選 Edit route settings,會看到它廣告的子網段(例如 192.168.8.0/24)。
  3. 勾選核准這些網段。

這其實就是把它當 Subnet Router 用。同頁的 Allow Remote Access WAN(v4.9 起改名 Advertise WAN Subnets)廣告的是 WAN 側網段——旅行接旅館 Wi-Fi 時沒什麼用,那是給「路由器串在上游路由器後面」的情境(例如把 GL.iNet 接在家裡主路由器後面,從外面連回家裡其他裝置)用的。

Custom Exit Nodes:讓整個房間走家裡出口

這是旅行的主角。設定前,先確認家裡的 exit node 已經設定好、在 Admin console 裡核准過(Exit Node 有完整步驟)。接著:

  1. 在 Admin console 找到這台 GL.iNet 路由器,進 Edit route settings 把它的子網段核准(和上一節一樣)。官方文件的 Troubleshooting 特別強調:沒核准路由就開 exit node,房內裝置會集體斷網。
  2. 回到路由器的 APPLICATIONS → Tailscale,啟用 Custom Exit Nodes。
  3. 點 refresh(重新整理)按鈕,從下拉選單選出家裡 exit node 的 IP,點 Apply。

之後,接在路由器後面的所有裝置,上網流量都會先經由 Tailscale 送到家裡的 exit node 再出去,對外 IP 會變成家裡的 IP。電視、Switch 這類本身裝不了 Tailscale 的裝置,就靠路由器這一層「整個房間一起回家」。

兩個官方文件提醒的坑:

  • DNS 用私有 IP 會斷網:如果路由器的 DNS 指向某個只有區網內連得到的私有位址,開了 exit node 之後可能連不上網。到 NETWORK → DNS 把 DNS 手動改成公開伺服器(例如 8.8.8.8)即可。
  • 速度與延遲:整房流量都要繞回家再出去,直連和 DERP 中繼的差異會直接反映在體驗上。旅行網路的 NAT 若只能走中繼,串流會明顯變慢,見 直連與 DERP 中繼。

Run Exit Node:把 GL.iNet 本身當出口(v4.9 起)

上面的用法是「旅行路由器當 client、連家裡的出口」。反過來,如果你有另一台 GL.iNet 放在家裡(或任何定點),韌體 v4.9 起可以讓它自己當 exit node:APPLICATIONS → Tailscale → Run Exit Node,再到 Admin console 核准 Use as exit node。官方文件建議順手 Disable key expiry(停用金鑰到期),避免出口斷線。這在「兩地各放一台 GL.iNet、互相把對方當出口」的情境特別實用。

IP Masquerading(v4.9 起)

v4.9 起 Tailscale 頁面多了 IP Masquerading 開關:開啟後,路由器的 LAN 裝置要連 tailnet 時,來源位址會被改寫成路由器的 Tailscale IP,不需要另外在 Admin console 核准子網段路由就能直接連。官方文件建議在兩個情境用它:不想設定 subnet route、只想讓裝不了 Tailscale 的 LAN 裝置能上 tailnet;以及自訂 exit node 想用更簡單的方式轉送流量。

它其實就是原生 OpenWrt 文章裡講的 masquerade/SNAT(見 OpenWrt 裝 Tailscale 的 --snat-subnet-routes 一節),只是 GL.iNet 把它做成一個開關。代價也一樣:對端看到的來源是路由器而非真正的 client,ACL、紀錄都會失去原本的來源資訊。

韌體 4.8.x 的已知問題

計劃裡點名的「韌體 4.8.1 已知問題」,依 GL.iNet 官方論壇的官方回覆整理如下:

  • 4.8.1 被官方下架。GL.iNet 員工在論壇回覆:「我們發現 4.8.1 有若干問題,已從官網下架,不建議繼續使用,可考慮退回 4.7.7。」(Give us 4.8.1 or give us fixed 4.8.2)
  • 在路由器上直接跑 Tailscale 的效能問題。官方在 Flint 3 - Firmware 4.8.1 and Tailscale 回覆:4.8.1 有 CPU 排程相關問題,會影響直接在路由器上跑 Tailscale(含 exit node)的表現,新版已修正;這個問題只影響在路由器上跑 Tailscale,不影響路由器只當普通 client。
  • Tailscale 專用防火牆 zone 的相容性問題(4.8.0–4.8.3)。官方在 Improvement on Tailscale for SDK v4.8 說明:4.8.0–4.8.3 替 Tailscale 建立了專屬防火牆 zone(加了 mtu_fix),但先前有使用者手動把 tailscale0 加進 WAN zone,升級後兩套規則衝突,導致 LAN 裝置連不到 tailnet。官方在 4.8.5(及之後)加入腳本,升級時自動把 tailscale0 從 WAN zone 移除、歸到專屬 zone;v4.9 起更直接在 UI 提供 IP Masquerading 開關,不必再進 LuCI 手動改。

簡單說:別停留在 4.8.1,盡量升到最新穩定版;如果你在 4.8.x 上遇到「路由器自己連得上、區網裝置連不上 tailnet」,先檢查是不是舊的 WAN zone 手動設定在作怪,再考慮升版或開 IP Masquerading。

guest Wi-Fi 不走 Tailscale

GL.iNet 的 Guest Network 設計上就和主要網路隔離(見官方 Guest Network 文件:「Isolated from the primary network」),v4.8 起還有 Block WAN Subnets 選項讓 guest 連不到上游網段。對應到 Tailscale,GL.iNet 員工在論壇明確說明:只有主要網路(primary/main LAN)的 client 能存取 tailnet 與子網段,guest client 不能(同上篇 Improvement on Tailscale for SDK v4.8)。

所以旅行時如果讓家人或朋友連你路由器的 guest Wi-Fi,他們走的是旅館網路的原始出口、不會經由你的 exit node 回家,也看不到你的 tailnet。這對你其實是種保護(guest 流量不經你家出口、也碰不到你的裝置),但如果你預期「整個房間包括 guest 都走出口」,這點和你想的不一樣——官方韌體目前沒有把 guest 流量導進 exit node 的選項。

用側邊滑動按鈕切換 Tailscale/exit node

GL.iNet 很多型號有實體側邊滑動開關(toggle switch),可以拿來快速切換功能。到 SYSTEM → Toggle Button Settings 設定。官方提供的選項(v4.8 起)是:

  • No Function、Repeater、Wi-Fi(Main/Guest Wi-Fi)、VPN、Tor、AdGuard Home、LED

注意:Tailscale 不在內建選項裡,也不能直接綁「切換 exit node」。要讓側邊開關控制 Tailscale,只能走自訂腳本:

GL.iNet 韌體有一個未寫進官方文件的掛勾:把可執行腳本放進 /etc/gl-switch.d/,開關撥動時韌體會以 on/off 當參數呼叫它,再用 uci 把開關指定到這個腳本。這點在官方論壇有 GL.iNet 員工回覆確認(Request official documentation/support for custom Toggle Button scripts),但官方至今沒有把自訂腳本寫進文件,屬進階、未正式支援的用法。

腳本的骨架如下(放在 /etc/gl-switch.d/,記得 chmod +x):

#!/bin/sh
# /etc/gl-switch.d/your-script.sh
action="$1"   # 撥動時會收到 "on" 或 "off"

if [ "$action" = "on" ]; then
  # 在這裡開啟 Tailscale(或選定 exit node)
  logger "gl-switch: tailscale on"
elif [ "$action" = "off" ]; then
  # 在這裡關閉 Tailscale(或取消 exit node)
  logger "gl-switch: tailscale off"
fi

再把開關指到這個腳本:

uci set switch-button.@main[0].func="your-script"
uci commit switch-button

func 的值就是腳本名稱(不含路徑、不含 .sh)。注意三點:

  • 具體的開/關 Tailscale 指令,官方文件沒有說明。GL.iNet 韌體內部用 UCI(/etc/config/tailscale)與自己的 hotplug 腳本管理 Tailscale,這些鍵值與路徑沒有正式文件,會隨韌體版本變動。上面骨架的 on/off 分支裡要執行的實際指令,請以你當下韌體上的實際機制為準,動工前先在 SSH 手動測試,不要照網路舊文照抄。
  • 綁定之後,不要再進 SYSTEM → Toggle Button Settings 頁面按 Apply:該頁只認內建功能清單,看不到自訂腳本(會顯示成 No Function),一按 Apply 就會用畫面顯示的值把 UCI 綁定覆寫掉(gl-tailscale-fix 的側邊開關腳本也明確警告這點)。
  • 腳本放在 overlay 裡,韌體升級可能被清掉;要跨升級保留,把它加進 /etc/sysupgrade.conf(論壇也提醒這點)。

如果你只是要「手動快速開關」,其實最穩的做法仍是進 APPLICATIONS → Tailscale 切開關——側邊按鈕自訂腳本適合已經很熟 OpenWrt 的人。

旅館 captive portal 的順序

旅館 Wi-Fi 常有 captive portal(要先在登入頁認證才能上網)。官方 FAQ Connect to public hotspot with Captive Portal 的順序是:

  1. 讓路由器以 Repeater 模式連上旅館 Wi-Fi(Repeater)。
  2. 用手機或筆電連到路由器發的 Wi-Fi,開瀏覽器,完成旅館的 captive portal 認證——認證完成的是路由器,之後房內所有裝置都算已認證。
  3. 認證完成、確認能上網之後,再到 APPLICATIONS → Tailscale 開 Tailscale(或啟用 Custom Exit Node)。

順序反了會失敗:官方 FAQ 在「連不上 captive portal」的排障建議裡,就有一條是先關閉所有 VPN 連線(v4.8 以上是 VPN Dashboard 的全部 tunnel)。Tailscale 通了之後流量都導回你家,captive portal 根本跳不出來,所以一定要「先過認證、再開 Tailscale」。若跳不出認證頁,還可以用韌體 v4.6 起的 Auto-Enable Login Mode for Public Hotspots 與 Enable Camouflage(偽裝成你登入 Admin Panel 那台裝置的 MAC),或乾脆 MAC Clone 成手機的位址;都失敗就請旅館櫃檯把路由器的出廠 MAC 加入白名單。

存取規則

預設 policy 下,tailnet 裡所有人都能用你核准的 exit node 與 subnet route。GL.iNet 的綁定流程是「以你的帳號把裝置加進來」,UI 上沒有 tag 或 auth key 的選項(要 tag 得走 SSH 的 tailscale up --advertise-tags=...),所以旅行路由器本身是普通帳號裝置。

要收緊,重點是限制 exit node 只能走你指定的出口,在家裡 exit node 打上 tag、再寫最小權限:

{
  "tagOwners": {
    "tag:home-exit": ["autogroup:admin"]
  },
  "grants": [
    {
      "src": ["autogroup:member"],
      "dst": ["autogroup:internet"],
      "ip": ["*"],
      "via": ["tag:home-exit"]
    }
  ]
}

這條 grant 放行「經由打上 tag:home-exit 的出口上網」——目的地寫 autogroup:internet 而不是那台裝置,via 指定只能走這台出口(via 只接受 tag)。路由器的 subnet route 則在 Admin console 手動核准(GL 的 UI 流程本來就是這樣),或改用 v4.9 的 IP Masquerading 免核准。完整語法見 ACL / Grants 入門、Tags 與 auth key,以及 Exit Node 的「自訂 ACL 時要注意」一節。

小結

步驟 做什麼
連旅館 Wi-Fi + captive portal Repeater 模式連上,先過認證、確認能上網,再開 Tailscale
啟用 Tailscale APPLICATIONS → Tailscale 開啟,點 Device Bind Link 綁定帳號
Allow Remote Access LAN 把房內網段廣告進 tailnet(等同 subnet router),Admin console 核准路由
Custom Exit Nodes 啟用、refresh、選家裡 exit node 的 IP,整房流量走家裡出口
Run Exit Node(v4.9 起) 反過來把 GL.iNet 本身當出口
IP Masquerading(v4.9 起) 免核准路由的簡化轉送(等同 masquerade),代價是失去來源 IP
側邊滑動開關 內建選項沒有 Tailscale,要用 /etc/gl-switch.d/ 自訂腳本(進階、未正式文件化)
存取規則 出口打 tag + via 限制,路由手動核准或開 IP Masquerading

最容易踩的坑:韌體停在 4.8.1(官方已下架)、captive portal 沒過就先開 Tailscale(跳不出認證頁)、沒核准 subnet route 就開 exit node(整房斷網)、以及沿用原生 OpenWrt 的防火牆改法(和 GL 的專屬 zone 衝突)。

延伸

參考資料

Navigation

Type to search…

↑↓ navigate↵ selectEsc close