86
这个楼主还没有留下简介。
当前还没有回复,欢迎成为第一个参与讨论的人。
家里有一台 NAS 和几台旧设备,人在外面经常想看一眼文件、连一下家里的服务器。最开始我用的是路由器端口转发加 DDNS。2024 年国庆我在外面出差,晚上想远程拿 NAS 上一个文件,结果运营商刚好换了宽带 IP,DDNS 还没来得及更新,人在酒店里什么都连不上,最后只能让家里人帮忙重启路由器才恢复。那次之后我就决定换组网方案。
后来换成 Tailscale,装完、登录、ping 通,前后不到十分钟。这篇文章写的是我自己组网过程中的配置和踩坑记录,不是官方文档的复述。
Linux 服务器上安装:
bashcurl -fsSL https://tailscale.com/install.sh | sh
然后启动:
bashsudo tailscale up
终端会输出一个登录链接,浏览器授权后设备就进网了。查看设备:
bashtailscale status
我当时的操作顺序是:先在服务器上装好,再在手机装客户端登录,然后手机直接 ping 服务器的 100.x.x.x 地址,通了之后 SSH 也直接能连。最让我意外的是延迟,同城两台设备 ping 只有 3ms 左右,体感和局域网基本没区别。
默认情况下只能访问装了 Tailscale 的设备本身,想在外面直接访问家里局域网里的其他设备,需要一台常开设备当子网路由器。
先开 IP 转发:
bashsudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p
再通告家里的网段:
bashsudo tailscale up --advertise-routes=192.168.1.0/24
我在这里卡了大概二十分钟:命令执行了,后台也显示路由已通告,但手机还是访问不了 192.168.1.50,后来才发现管理后台还有一步 Approve 没点。批准之后,手机在外面立刻就能访问家里设备。
批准之后,手机在外面直接访问 192.168.1.x 就行,不用再折腾端口转发。
tag:server;一个最小 ACL 示例:
json{
"acls": [
{
"action": "accept",
"src": ["autogroup:member"],
"dst": ["tag:server:22,80,443"]
}
],
"tagOwners": {
"tag:server": ["autogroup:admin"]
}
}
改 ACL 之前先备份原配置,我见过有人把 ACL 改坏了,所有设备直接失联,最后只能靠另一台设备回滚。
tailscale ping 一看是 via DERP,说明 NAT 穿透失败走了中继,不是网速问题;--accept-dns 没开;问:Tailscale 免费版够用吗?
答:个人和家庭场景完全够用。我自己挂了不到十台设备,免费版用到现在没遇到过限制。
问:和 frp 比怎么选?
答:frp 我主要用来临时把某个端口暴露给朋友访问;Tailscale 给自家人和设备组私有网络用。我现在两台机器都在跑,使用场景不一样,不冲突。
问:速度到底怎么样?
答:能直连的时候和局域网差不多,走 DERP 中继就看中继节点脸色。我的 NAS 传小文件没问题,大文件我还是用局域网。
问:能完全不用官方服务器吗?
答:可以,用 Headscale 自建控制面,但要多维护一套服务和证书。我自己暂时用官方,够省心。
组网工具用过不少,Tailscale 能留下来主要因为省心:不用维护端口映射、不用记一堆地址,设备加进来就是自己的网。如果你也有一台常年开机的设备,建议先从一台服务器加一台手机试起,十分钟就能感受到差别。