现在的固定 IPv4 越来越难弄了,把家里 NAS、电脑和手机拉进同一个 Tailscale 网络,就能异地组网。装上等于把设备拉进一个局域网,默认允许同网互访。这个默认省事,但也存在网络安全隐患。
ACL 是这张网的门禁:规定谁能连谁、连哪个端口。如果全部只是自己设备用可以先不写。一旦把外面的设备拉进来,就要想清楚对方能干什么。
抛开全自有设备来说常见需要设定ACL就这几类。别人只走你家出口上网,不能碰 NAS 和电脑。让朋友来看电影或某几个家里服务,访问下共用文件夹,其他SSH、密码库、路由后台都不给。还有一种:外面有台电脑(办公室、宿舍,甚至公用机),你要在家用它,但不许它回过来访问你家。
不写 ACL 时,后台看起来像没设权限,实际是全开。对方能打开你 NAS、电脑上的 100.x。不开子网,只挡住没装客户端的电视和打印机,挡不住已经进网的设备。

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:别人只走你家出口上网

对方选 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、密码库、呆呆、路由后台一律不写。

{
"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,来自同期官方文档。