现在的固定 IPv4 越来越难弄了,把家里 NAS、电脑和手机拉进同一个 Tailscale 网络,就能异地组网。装上等于把设备拉进一个局域网,默认允许同网互访。这个默认省事,但也存在网络安全隐患。

ACL 是这张网的门禁:规定谁能连谁、连哪个端口。如果全部只是自己设备用可以先不写。一旦把外面的设备拉进来,就要想清楚对方能干什么。

抛开全自有设备来说常见需要设定ACL就这几类。别人只走你家出口上网,不能碰 NAS 和电脑。让朋友来看电影或某几个家里服务,访问下共用文件夹,其他SSH、密码库、路由后台都不给。还有一种:外面有台电脑(办公室、宿舍,甚至公用机),你要在家用它,但不许它回过来访问你家。

不写 ACL 时,后台看起来像没设权限,实际是全开。对方能打开你 NAS、电脑上的 100.x。不开子网,只挡住没装客户端的电视和打印机,挡不住已经进网的设备。

不写 ACL 时,访客能摸到家里 NAS 和电脑
图:默认同网全互通。访客进网后,NAS、电脑、出口都能碰。

Tailscale 主要干什么

Tailscale 给每台设备发一个 100.x 地址,在设备之间建加密通道。常见用途就这几类:

用途做什么不适合拿它当
自己回家手机访问 NAS 网页、SMB、SSH、Vaultwarden给全世界开放的网站入口
子网路由只装一台(通常是路由),顺带摸到没装客户端的打印机、电视NAS 再广播一遍同一网段
出口节点外出流量从家里或某台 VPS 出去科学上网的完整替代;出口机权限要单独写
和别人组网把对方拉进你的 tailnet不写 ACL 就邀请

它不管你在家局域网里本来就能访问什么。官方写明:策略是默认拒绝、单向的,并且不影响设备在本地局域网里的访问。家里 Wi-Fi 直连 NAS,不靠这条 ACL。

不要开 Funnel 把家里服务打到公网。密码库那篇里写过:家庭优先私有 Tailnet,不要把容器端口映射出去。

开始前要准备什么

项目要求怎么确认
账号一个 Tailscale 账号,家人可后加能打开 管理后台
设备电脑、手机;NAS 或路由至少一台长期在线飞牛网页能开,或路由能 SSH
权限改 ACL 需要管理员后台能进 Access controls
备份改策略前复制整份 policy编辑器里全选复制,存到密码库

安装

1. 电脑和手机

为什么做: 没有客户端,就没有 100.x,也选不了出口节点。

Windows、macOS 从 官网下载页 安装。iPhone、iPad 用 App Store 的官方 Tailscale;Android 用 Google Play 或同页给出的商店。装完登录同一个账号。

正常结果: 管理后台 Machines 里出现这台设备,状态在线。

失败时先查: 是不是登成了另一个账号;公司电脑有没有拦 UDP。先看能不能打开后台,再查本机防火墙。

小火箭里也有内置 Tailscale。设备列表在线,不等于 100.x 一定通。要稳,用官方 App;必须和代理同开时,再走内置模块,规则不能照抄官方 App 的 DIRECT。

2. Linux 和飞牛

为什么做: NAS 长期开着,出门最常连的是它。

Linux 官方安装(2026-08-26 核对):

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

命令会给出登录网址。浏览器打开、授权后,这台机器进 tailnet。不想用 curl | sh 时,按官方 Packages 页用发行版源安装。

飞牛应用中心里有 Tailscale 时,用商店装即可,同样要登录。本机飞牛上这几项保持:

项建议原因
Accept DNS / MagicDNS关会改 NAS 的 DNS,更新和装应用容易怪
启用出口节点关出口放路由,NAS 不适合当全家网关
子网路由广播空路由已经宣告时,NAS 再报一遍会乱
Shields Up关开了会挡住别人连这台的 Web/SMB

要用名字访问,在电脑或手机客户端开 MagicDNS,NAS 继续关 Accept DNS。

正常结果: tailscale status 能看到自己和其他设备;NAS 的 100.x 在后台能复制。

失败时先查: 飞牛有没有先开 SSH;登录网址有没有在另一台已联网的设备上打开。

3. 路由(可选)

家里已经有一台梅林路由在跑 Tailscale、并且批准了子网时,NAS 不必再广播 192.168.50.0/24 这种网段。出口节点也放路由,不要放飞牛。

路由上保持 accept-dns=false。互访优先用 100.x,不要死磕 .ts.net 名字。

日常怎么用

出门打开官方客户端,等状态变成已连接。访问家里服务时写 Tailscale 地址,例如:

http://100.x.x.x:端口

不要用家里的 192.168.x.x,除非这台设备已经接受了子网路由,并且你真的批准过那条路由。

本机核对过的用法:

  • 看 NAS、呆呆面板:走 NAS 的 100.x,不要让 NAS 当 Exit。
  • 开路由后台:小火箭内置 Tailscale 不稳定时,用官方 App,或直接打路由的 100.x。
  • Vaultwarden 这类服务:继续只在 Tailnet 里访问,不要 Funnel。

tailscale ping 100.x.x.x 先出现 DERP、再变成直连,是正常打洞,不是故障。不要为了 Tailscale 去开路由 UPnP。

ACL 是安全开关,不是高级玩法

官方默认策略让 tailnet 里所有设备都能互相通信。你没写过规则时,后台看起来像「什么都没设」,实际是全开。

所以:

  • 只给自己的手机、电脑、NAS 用,风险主要是某台设备丢了、账号密码泄露。
  • 把朋友、同事、临时设备拉进来,对方默认能扫到你其他设备的 100.x。不开子网,只能挡住没装客户端的打印机;挡不住 NAS 和电脑。
  • 改过策略之后,规则是默认拒绝。没写到的通路就不通。出口上网还要单独允许 autogroup:internet,只允许访问出口那台机器本身,只能 SSH 上去,不能拿它当网关。

官方现在建议新规则用 grants。旧的 acls 还能用,但不会再加新功能。编辑入口是 Access controls,也可以用可视化编辑器。

家里常用的 ACL 场景

标签先想清楚,再写规则:

标签打在谁身上
tag:home自己的电脑、NAS,不给外人碰
tag:exit只当出口的路由或 VPS
tag:guest访客设备
tag:nas只想单独开放的那一台(可以和 home 同时用,看你怎么拆)

tagOwners 必须先写,否则后台打不上标签。本机给东京那台出口机打过 tag:exit,打上之后设备所有权会转到标签,这是预期变化。

场景 A:全家自己用

可以保持默认。仍然不要开 Funnel,不要把 NAS 当 Exit。设备丢了,到后台禁用那台机器。

场景 B:别人只走你家出口上网

访客只许走出口上网
图:ACL 拦住访客到 NAS、电脑,只留出口上网。

对方选 Exit Node = 你的路由或出口 VPS。不要给对方批准局域网子网。

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

tag:guest 没有写到 tag:home,就不能连 NAS 和电脑。autogroup:internet 才是「允许走出口上网」。

保存前先保证管理员自己那条还在。写完让对方试:能上网,打不开 NAS 网页,也 ping 不通家里 192.168.x.x。

场景 C:朋友只用家里某几个服务

想让朋友也用 NAS 看电影,不等于把整台 NAS 和整网交给他。ACL 按端口拆:看片用的口放行,SSH、密码库、呆呆、路由后台一律不写。

访客只许打开 NAS 上的看片入口
图:只放行看片相关端口,SSH、管理页和家里电脑全部拦住。
{
  "grants": [
    {
      "src": ["autogroup:admin", "tag:home"],
      "dst": ["*"],
      "ip": ["*"]
    },
    {
      "src": ["tag:guest"],
      "dst": ["tag:nas"],
      "ip": ["tcp:80", "tcp:443"]
    }
  ]
}

80 / 443 换成飞牛影视或你实际给朋友用的端口。走 SMB 看片再加 tcp:445。不要写成 *,否则 SSH 和网页管理也会一起打开。

对方关掉「接受子网路由」。你不要给 guest 批准家里的网段,否则他还能绕到打印机、路由和其他没装 Tailscale 的设备。

场景 D:我能用外面那台电脑,它不能访问我家

外面有台电脑要拉进同一张网,好在家里远程桌面或 SSH 过去用。这台机器可能是办公室、宿舍,甚至别人也会登录的公用机。你要的是:你能用它,它不能回来访问你。

VPS 也是同一类:家里能连它的 SSH 或下载站,它不能扫 NAS 和家里电脑。

家里能连外网机器,外网机器不能回连家
图:规则是单向的。允许家里连过去,不等于那边能连回来。
{
  "tagOwners": {
    "tag:home": ["autogroup:admin"],
    "tag:remote": ["autogroup:admin"]
  },
  "grants": [
    {
      "src": ["autogroup:admin", "tag:home"],
      "dst": ["tag:home"],
      "ip": ["*"]
    },
    {
      "src": ["tag:home"],
      "dst": ["tag:remote"],
      "ip": ["tcp:22", "tcp:3389"]
    }
  ]
}

tag:remote 打在外面那台电脑或 VPS 上。上面第二条只允许家里连它的 SSH / 远程桌面,端口按实际改。没有写 tag:remote 去连 tag:home,也没有写它访问 192.168.x.0/24,它就回不了家。

如果这台同时还要当出口,另加一条 src 为 tag:home、dst 为 autogroup:internet。不要给这台批准家里的子网路由。

操作步骤(写 ACL 时)

1. 先只读,再改

打开 Access controls,把当前整份政策复制出来。

在还没锁自己的前提下,先给 NAS、路由、电脑打标签。本机给出口机打标签时,是在 Machines 页选 Edit ACL tags,不是在 SSH 里写 tailscale set --advertise-tags——有的版本这条命令不可用。

正常结果: 设备名后面出现 tailnet 域名后缀,所有权不再显示成个人邮箱,说明标签生效了。

失败时先查: tagOwners 里有没有这个标签;当前登录是不是管理员。

2. 先写管理员通路,再写收紧

把对应场景的 grants 贴进编辑器。用官方校验器看有没有红字。保存。

正常结果: 自己的手机仍能打开 NAS;按设计,访客打不开不该碰的口。

失败时先查: 是不是删掉了默认全开、又忘了给 autogroup:admin 写一条。出问题立刻把备份贴回去保存。

3. 需要出口时补 autogroup:internet

官方专门提醒:把出口机本身写成目的地,只等于允许连那台机器,不等于允许上网流量从它出去。

正常结果: 客户端能选到 Exit Node,浏览器能打开外网。

失败时先查: Machines 页有没有批准这台做 Exit;客户端有没有真的选中它。

常见问题与排错

装上就能互访,以为没设权限

现象: ACL 页面几乎是空的,朋友的设备却能打开你的 NAS。

如何判断: 你还在用默认政策。官方写过:刚建 tailnet 时,默认允许所有设备通信。

处理: 不打算拉人,可以先不动。要拉人,按上面的场景改,不要只关子网。

改完 ACL,自己也连不上

现象: 手机打不开 NAS 的 100.x。

如何判断: 管理员或 tag:home 的 grants 丢了。

处理: 用还能登录后台的设备,把备份政策贴回去。以后先写放行自己的规则,再写访客。

选了 Exit,外网不通

现象: 出口节点能勾选,网页打不开。

如何判断: 政策里没有 dst: ["autogroup:internet"]。

处理: 补这条。不要只写出口机的 100.x 或 tag:exit。

NAS 能上 100.x,用名字不行

现象: IP 通,设备名.ts.net 不通。

如何判断: NAS 关了 Accept DNS,电脑也没开 MagicDNS。

处理: 先用 IP。要名字,在电脑/手机开 MagicDNS,NAS 继续关。

飞牛装完,家里解析变怪

现象: 飞牛更新、装应用失败,或国内站点解析异常。

如何判断: NAS 开了 Accept DNS。

处理: 关掉。名字解析放在客户端。

风险、备份与回滚

  • 改政策可能让所有远程访问立刻中断。先复制全文。
  • 不要给访客批准 192.168.x.0/24。
  • 不要把 NAS 当 Exit,也不要开 Funnel 暴露密码库、面板。
  • 标签会改变设备所有权,打之前确认这台就是出口机或 NAS。
  • 回滚:把备份贴回 Access controls 保存。回滚成功的标志是:自己的设备恢复互访,访客按你的设计仍然进不去。

维护和更新

  • 新设备进网先打标签,再给对方用。
  • 官方若再改 grants 语法,以 ACL 说明 和 grants 为准。
  • 飞牛或路由大升级后,复查 Accept DNS、子网广播、Exit 开关。
  • 最近核对:2026-08-26。安装命令来自官方 Linux 安装页;默认全互通、默认拒绝、出口要用 autogroup:internet,来自同期官方文档。

参考资料