2026 没有公网 IP 也能安全回家:Tailscale 远程访问 AdGuard Home / NAS / SSH 完整指南

2026 没有公网 IP 也能安全回家:Tailscale 远程访问 AdGuard Home / NAS / SSH 完整指南
家里装好了 AdGuard Home、NAS 或一台 Linux 小主机在局域网里访问很舒服一离开 Wi-Fi192.168.x.x就全部失联。很多人的第一反应是 DDNS 端口映射。但如果运营商给的是 CGNAT 地址没有真正的公网 IP端口映射根本进不来即使能映射把管理后台或 SSH 直接暴露到公网也会增加扫描、撞库和漏洞利用的风险。这篇文章用 Tailscale 解决这个问题不申请公网 IP不在路由器上开放入站端口也不改变家里原有网络结构。手机、Mac、Windows 在外面仍可访问家里的 AdGuard Home、NAS 和 SSH。本文只讨论你本人拥有或获授权管理的设备。示例网段和端口必须替换成自己的实际配置不要原样照抄。一、先选对方案不要一上来就配子网路由Tailscale 可以把已登录的设备放进一个加密的私有网络tailnet。实际部署有两条路你的情况推荐方案远程访问地址AdGuard Home / NAS 所在主机能安装 Tailscale方案 A直接安装最简单Tailscale IP 或 MagicDNS 主机名服务设备不能安装但局域网里有一台长期在线的 Linux / NAS方案 B配置 Subnet Router服务原来的局域网 IP想让任何陌生访客通过公网打开页面本文方案不适合应单独设计反向代理、认证和安全边界能用方案 A 就不要先上方案 B。直接安装的链路更短排错也更容易。二、准备工作开始前确认四件事你知道服务的局域网地址例如192.168.50.2。你知道实际管理端口。AdGuard Home 首次安装通常使用3000/TCP完成初始化后 Web 界面常见为80/TCP但最终应以自己的AdGuardHome.yaml中http.address或页面配置为准。家里至少有一台设备长期在线。手机与家中设备登录同一个 Tailscale 网络。先在家中局域网验证原地址确实能打开例如http://192.168.50.2:3000如果局域网内都打不开先解决服务监听、端口或防火墙问题Tailscale 不会自动修复应用本身。三、方案 A直接在服务主机安装 Tailscale下面以常见 Linux 主机为例。官方安装脚本支持 Debian、Ubuntu、RHEL、CentOS、Fedora、Raspberry Pi OS 等主流发行版curl-fsSLhttps://tailscale.com/install.sh|shsudotailscale up如果你不接受curl | sh的安装方式可以按 Tailscale 官方 Packages 页面为自己的发行版手动添加软件源并安装。终端会给出一个登录 URL。完成认证后检查设备是否已经加入 tailnettailscale status tailscaleip-4假设输出的 Tailscale IPv4 是100.x.y.z手机安装 Tailscale、登录同一账号并开启连接后就可以尝试http://100.x.y.z:你的实际端口如果开启了 MagicDNS也可以直接使用设备名http://adguard-home:你的实际端口MagicDNS 的价值不是“更快”而是不用记住100.x地址。新建的 tailnet 通常已经默认开启也可以在管理后台的 DNS 页面检查。这一步最容易忽略的安全点Tailscale 解决的是设备间的私有连通不替代 AdGuard Home / NAS 自己的登录密码。不要因为用了 Tailscale就顺手把 Web 管理端口映射到公网。不要为了省事长期关闭所有防火墙。只有可信、长期在线的服务器才考虑关闭密钥到期设备丢失或替换后要立即撤销。四、方案 B服务装不了 Tailscale就用 Subnet Router典型场景是AdGuard Home 跑在路由器插件、旧 NAS 或无法直接安装 Tailscale 的设备上但家里还有一台长期在线的 Linux 小主机。此时让小主机充当“进家门的网关”。1. 确认真实网段在 Linux 网关上执行iproute假设局域网是192.168.50.0/24AdGuard Home 是192.168.50.2。如果你看到的是192.168.1.x、10.0.0.x或其他网段后面的命令必须同步修改。2. 开启 IP 转发仅使用 IPv4 子网时可以创建一个专用配置echonet.ipv4.ip_forward 1|sudotee/etc/sysctl.d/99-tailscale.confsudosysctl-p/etc/sysctl.d/99-tailscale.conf然后安装并登录 Tailscale如果尚未安装curl-fsSLhttps://tailscale.com/install.sh|shsudotailscale up3. 发布子网路由sudotailscaleset--advertise-routes192.168.50.0/24这条命令只是“声明我能带你去这个网段”还不等于路由已生效。4. 在管理后台批准路由进入 Tailscale 管理后台打开Machines。找到刚才的 Linux 网关。在Subnets中编辑并批准192.168.50.0/24。保存。如果你配置了autoApprovers这一步可能会自动完成普通家庭网络手动批准更直观。5. 客户端接收路由iOS、Android、macOS 和 Windows 默认会使用已批准的子网路由。Linux 客户端还需要sudotailscaleset--accept-routes此时在手机关闭 Wi-Fi、改用蜂窝网络再访问原来的局域网地址http://192.168.50.2:你的实际端口注意方案 B 访问的是AdGuard Home 原局域网 IP不是充当网关那台机器的100.x地址。五、把权限缩到真正需要的端口“能连通”不等于“应该全部放开”。Tailscale 当前推荐使用 Grants 做细粒度访问控制可以把来源、目标和端口限制到最小范围。下面只是一个结构示例只允许家庭管理员访问目标主机的 SSH、HTTP、HTTPS 和一个自定义管理端口。请合并进现有策略不要覆盖整个策略文件端口也必须按实际情况删改。{groups:{group:home-admins:[your-accountexample.com]},grants:[{src:[group:home-admins],dst:[192.168.50.2],ip:[tcp:22,tcp:80,tcp:443,tcp:3000]}]}如果只是远程查看 AdGuard Home 后台就不要顺便开放整段*:*。最小权限往往比“先全开后面再说”省事。六、连不上时按这个顺序排查1. 设备根本不在线tailscale status先确认两端都出现在设备列表里认证没有过期家中的设备也没有休眠或断电。2. Tailscale 通但网页不通tailscaleping目标设备名或100.x地址tailscale ping可以判断两个 Tailscale 进程是否连得通并显示最终是直连还是经中继。能 ping 通但网页打不开通常要回头查服务端口、监听地址和本机防火墙。Linux 上可以检查监听状态sudoss-lntp如果服务只监听127.0.0.1其他设备当然无法访问。修改监听地址前要同时确认应用认证和防火墙不要为了省事把所有接口、所有端口一起放开。3. 子网路由没有真正生效重点检查--advertise-routes的 CIDR 是否写对管理后台是否批准了 Subnet RouteLinux 客户端是否启用了--accept-routes网关是否开启 IP forwarding家中网段是否和酒店、公司 Wi-Fi 网段重叠。网段重叠是很隐蔽的坑。例如家里和外面的 Wi-Fi 都是192.168.1.0/24系统可能把流量发到错误接口。长期方案是给家庭网络换一个不那么常见的网段或者改用方案 A 的直接节点访问。4. 开启 Tailscale 后其他 VPN 异常多个 VPN 客户端可能同时修改路由和 DNS。先暂时断开另一个 VPN 做对照测试再判断是路由冲突、DNS 冲突还是服务本身不可达。七、发布前的 6 项验收清单不要只在家中 Wi-Fi 里点开一次就宣布成功。至少验证手机关闭 Wi-Fi使用蜂窝网络仍可访问路由器没有新增公网端口映射管理后台仍要求应用自己的账号密码Grants 只允许实际需要的设备和端口家中网关重启后 Tailscale 与服务会自动恢复tailscale ping和实际网页 / SSH 都验证成功。八、Tailscale 和端口映射到底怎么选维度TailscaleDDNS 端口映射是否要求公网 IP不要求通常要求是否开放公网入站端口不需要需要访问者是否安装客户端需要通常不需要适合对象自己、家人、固定团队面向公开访客的服务权限控制可按身份、设备、目标和端口细分主要依赖服务自身与防火墙如果目标只是“我在外面安全管理自己家的设备”Tailscale 通常更省心如果目标是对所有访客公开网站它就不是同一个问题不能硬套。总结没有公网 IP 并不意味着只能把家里的服务困在局域网。正确顺序是能直接安装 Tailscale就用方案 A不能安装再用 Subnet Router先打通最小链路再收紧 Grants最后必须用蜂窝网络做一次真正的外网验收。这套方法同样适用于 NAS、Home Assistant、个人 Git、Code Server 和 SSH。变化的只是目标 IP 与端口安全原则不变不暴露不必要的公网入口、保留应用认证、按最小权限放行。你是把 Tailscale 直接装在服务主机上还是通过子网路由访问如果卡在“能 ping 但打不开页面”可以把系统、部署方式和实际监听端口写在评论区排查会快很多。参考资料Tailscale 官方文档Install Tailscale on LinuxTailscale 官方文档Subnet routersTailscale 官方文档MagicDNSTailscale 官方文档GrantsTailscale 官方文档Troubleshoot TCP connection issuesAdGuard Home 官方 WikiGetting StartedAdGuard Home 官方 WikiConfiguration