AppGoBox

教程

Tailscale OpenWrt 安装教程:远程访问家里设备,子网路由与出口节点设置

在官方 OpenWrt 25.12/24.10 上从官方软件源安装 Tailscale,登录后建立防火墙区域、发布子网路由并在后台批准,可选设为出口节点,在外面访问家里的 NAS 和路由器。约 20 分钟。

在官方 OpenWrt 上装 Tailscale 不需要第三方脚本:25.12 用 apk add tailscale,24.10 用 opkg install tailscale,然后 tailscale up --accept-dns=false 登录。要从外面访问家里没装 Tailscale 的设备(NAS、打印机、路由器后台),再做三件事:建一个 tailscale 接口和防火墙区域、用 tailscale set --advertise-routes=192.168.1.0/24 发布家里的网段、在 Tailscale 管理后台批准这条路由。出口节点(让手机的上网流量经家里出去)是同样的思路,多一个转发到 WAN。

先判断你要做到哪一步

你想要的效果做到哪一步
只想远程登录路由器本身(LuCI、SSH)第 1~3 步
远程访问家里所有设备(子网路由)第 1~5 步
在外面用公共 Wi-Fi 时,让手机流量经家里的宽带出去(出口节点)第 1~4 步 + 第 6 步

准备

  • 一台已经刷好官方 OpenWrt 的路由器。还没刷的先看型号教程,例如 GL-MT3000、小米 AX3000T、x86 小主机。
  • 闪存剩余空间够大:OpenWrt 25.12 的 tailscale 程序本身约 30 MB,16 MB 闪存的老路由器装不下。先运行 df -h / 看剩余空间。
  • 一个 Tailscale 账号,以及要用来远程访问的手机或电脑也装上 Tailscale 并登录同一账号。iPhone、iPad 从本站 Tailscale 页 进入 App Store 获取;Windows、macOS、Android、Linux 客户端本站暂未收录,从 Tailscale 官网下载页获取。
  • 能用 SSH 登录路由器(ssh root@192.168.1.1)。

第 1 步:从 OpenWrt 官方软件源安装

OpenWrt 25.12(apk):

apk update
apk add tailscale

OpenWrt 24.10 及更早(opkg):

opkg update
opkg install tailscale

应看到:安装结束没有报错;tailscale version 能显示版本号(25.12.6 软件源里是 1.104.1)。

安装后服务会自动启动,并设为开机自启。OpenWrt 官方 Wiki 提醒,软件源里的版本可能比 Tailscale 最新版旧。

提示LuCI 软件源里还有 luci-app-tailscale-community(社区维护的网页界面,带中文语言包)。本文全部用命令行,和官方 Wiki 一致。

第 2 步:登录 Tailscale

  1. 在路由器上运行:
tailscale up --accept-dns=false

--accept-dns=false 让 Tailscale 不接管路由器自己的 DNS。OpenWrt 官方 Wiki 说明,不加这个参数时 Tailscale 可能改写 /etc/resolv.conf,路由器的域名解析就不再走自带的 dnsmasq,可能出问题。

  1. 终端会显示 To authenticate, visit: 和一个登录链接。把链接复制到手机或电脑的浏览器里打开,用你的 Tailscale 账号登录并确认添加这台设备。
  2. 回到路由器查看状态:
tailscale status
tailscale ip -4

应看到:tailscale status 列出这台路由器和你的其他设备;tailscale ip -4 显示一个 100. 开头的地址。

提示Tailscale 设备的登录有效期默认会到期。路由器这类长期在线的设备,可以在 Tailscale 管理后台的 Machines 页面对它关闭密钥过期(Disable key expiry),免得过一段时间要重新登录。

第 3 步:建 tailscale 接口和防火墙区域

这一步让 OpenWrt 的防火墙认识 Tailscale 的虚拟网卡 tailscale0,否则流量可能被默认转发规则挡住。按 OpenWrt 官方 Wiki,在 LuCI 里操作:

  1. Network → Interfaces → Add new interface:Name 填 tailscale,Protocol 选 Unmanaged,Device 选 tailscale0,保存。
  2. 编辑刚建的 tailscale 接口 → DHCP Settings → 点 Set up DHCP Server,再勾选 Ignore interface(这个接口不要发 DHCP),保存。
  3. Network → Firewall → Zones → Add,按下表填写后 Save & Apply:
选项填写
Nametailscale
InputACCEPT
OutputACCEPT
Masquerading勾选
MSS clamping勾选
Covered networkstailscale
Allow forward to destination zoneslan(要做出口节点再加 wan)
Allow forward from source zoneslan

应看到:运行 ip address show tailscale0 能看到第 2 步的 100. 地址。

到这一步,你在外面的手机打开 Tailscale 后,就能用路由器的 100. 地址打开 LuCI 或 SSH 登录路由器。

第 4 步:发布家里的网段(子网路由)

OpenWrt 默认 LAN 是 192.168.1.0/24(改过 LAN 地址的换成你自己的网段)。在路由器上运行:

tailscale set --advertise-routes=192.168.1.0/24 --snat-subnet-routes=false
  • --advertise-routes 是要让 Tailscale 设备能访问的网段,多个用逗号分开。
  • --snat-subnet-routes=false 是 OpenWrt 官方 Wiki 的建议:第 3 步的防火墙区域已经开了伪装(Masquerading),Tailscale 自己的地址转换就关掉。
  • OpenWrt 默认已开启 IP 转发,Tailscale 官方文档里 Linux 需要手动开启转发的那一步这里不用做。

注意用 tailscale up 加参数改设置时,如果没把之前设过的参数全部带上,会报 Error: changing settings via 'tailscale up' requires mentioning all non-default flags。改设置用 tailscale set 就不会遇到。

第 5 步:在管理后台批准路由

  1. 在浏览器打开 Tailscale 管理后台的 Machines 页面,找到这台路由器(带 Subnets 标记)。
  2. 进入这台设备的 Subnets 部分,点 Edit,勾选 192.168.1.0/24,点 Save。
  3. 用手机关掉 Wi-Fi、改用流量,打开 Tailscale 后访问家里设备的内网地址(例如 外部资料(请使用来源按钮访问) 或 NAS 的 192.168.1.x`)。

应看到:手机在外网也能打开家里的设备。Windows、macOS、iOS、Android 客户端会自动接收新路由;Linux 电脑要运行 sudo tailscale set --accept-routes 才会使用。

注意如果你改过 Tailscale 的访问控制规则(ACL),还要允许你的账号访问这个网段;默认规则不用改。

第 6 步:把路由器设为出口节点(可选)

  1. 确认第 3 步的防火墙区域里,Allow forward to destination zones 已经加上 wan。
  2. 在路由器上运行:
tailscale set --advertise-exit-node
  1. 管理后台 Machines 页面,这台路由器的菜单里选 Edit exit node,勾选 Use as exit node。
  2. 手机的 Tailscale 里进入 Exit Node,选这台路由器;如果还想同时访问手机所在的本地网络,打开允许访问本地网络的开关(Android 上叫 Allow LAN access)。

应看到:用手机查看公网 IP,显示的是家里宽带的地址;选回 None 就恢复直接上网。

注意Tailscale 官方提醒,关闭了 SNAT(--snat-subnet-routes=false)的设备同时当子网路由和出口节点,可能出现上行丢包;官方建议是把两个角色分到两台设备上。

常见问题

  • `tailscale up` 没有显示登录链接:先运行 /etc/init.d/tailscale restart,再执行第 2 步的 tailscale up --accept-dns=false;确认路由器本身能上网,ca-bundle 已安装(tailscale 包的依赖,正常会自动装上)。
  • 能连上路由器,但访问不了家里其他设备:依次检查:管理后台的路由批准了没有(第 5 步);防火墙区域的转发是否允许到 lan(第 3 步);Linux 客户端是否加了 --accept-routes;手机当前所在网络的网段是否也是 192.168.1.0/24(和家里重叠时会访问到本地网络,可以改家里的 LAN 网段,再按新网段重新执行第 4 步)。
  • 安装时报空间不足:tailscale 程序约 30 MB,闪存不够的设备装不下,换闪存更大的设备或 x86 软路由。
  • 想用 Tailscale 的 MagicDNS 名字访问:OpenWrt 官方 Wiki 建议不要让 Tailscale 接管路由器的 DNS(第 2 步已用 --accept-dns=false),而是让 dnsmasq 把 ts.net 交给 Tailscale。第一行在已按第 2 步登录时不会改变设置,可以照抄:
tailscale set --accept-dns=false
uci add_list dhcp.@dnsmasq[0].server='/ts.net/100.100.100.100'
uci commit dhcp
/etc/init.d/dnsmasq restart
  • 以后升级 OpenWrt:刷新固件后,自己额外装的软件包需要按第 1 步重新安装。tailscale 软件包把 /etc/tailscale/(登录状态)登记为升级时保留的文件,保留设置升级时登录状态会一起保留;不保留设置就要重新登录。升级方法见 OpenWrt 升级固件。

资料来源

按 OpenWrt 官方 Wiki 的 Tailscale 页面、OpenWrt 25.12.6 与 24.10 官方软件源中的 tailscale 软件包信息、Tailscale 官方文档(子网路由、出口节点)及 Tailscale 命令行源码中的提示文字整理(2026-10-22 查阅)。

提示本页按官方文档整理,本站没有在路由器实机上测试。Tailscale 管理后台的页面文字可能随版本调整,以 Tailscale 官方说明为准。

整理:AppGoBox · 依据 · 本站未在实机上逐一验证