路由器使用Tailscale内网穿透
家里没有公网 IP,在路由器上开启内网穿透。内网穿透的核心思想都是一样的:既然外面的人进不来,那我们就主动从内部出去,与一个在外面有固定地址的 “ 中间人 “ 建立联系,然后让这个 “ 中间人 “ 帮忙传递消息。
1. 方案选择
- 新手入门/个人使用:从 ZeroTier 或 Tailscale 开始。它们能解决 90% 的个人远程访问需求,而且几乎没有成本和心智负担。
- Web 服务发布者:如果你有域名,并且想稳定地搭建一个个人网站或分享文件,Cloudflare Tunnel 是你的首选。
- 硬核玩家/特殊需求:如果你需要转发非标准的 TCP/UDP 协议(比如特定游戏服务器),或者想拥有一个完全自主可控的通道,那么去租一台便宜的 VPS 搭配 FRP 吧!
1.1 使用成熟的 P2P/SD-WAN 服务(例如 ZeroTier, Tailscale)
这是目前最推荐给大多数用户的方案,因为它在易用性、安全性和性能之间取得了绝佳的平衡。一句话总结:想从外面方便、安全地访问家里的 NAS、路由器后台、远程桌面等,选这个准没错。
- 技术原理 (虚拟局域网)
- 它们不 “ 暴露 “ 你的服务,而是创建一个加密的虚拟局域网(Virtual LAN)。你的路由器、你的手机、你的电脑,只要安装了它们的客户端,就会像在同一个 WiFi 下一样,可以互相访问。
- 工作流程:
- 所有设备(包括你的 OpenWrt 路由器)都安装客户端,并登录到同一个账户。
- 它们会向服务商的 “ 协调服务器 “ 注册,获取一个固定的虚拟内网 IP 地址(例如 10.147.x.x)。
- 当你从手机(在外面)访问家里路由器的虚拟 IP 时,协调服务器会帮助你的手机和路由器 “ 牵线搭桥 “。
- 它们会尝试使用一种叫做 “NAT 打洞 “ (NAT Traversal) 的技术,尽可能地建立设备之间的直接连接(P2P)。
- 如果 “ 打洞 “ 失败(比如网络环境太复杂),流量会通过服务商的 “ 中继服务器 “ 进行转发。
- 优点
- 极简配置:通常只需要在 OpenWrt 和你的其他设备上安装软件并登录即可,几乎是零配置。
- 安全性高:所有流量都是端到端加密的,你创建的是一个私有网络,不会将服务暴露在公网上。
- 访问灵活:可以访问整个内网,而不仅仅是某一个端口或服务。
- 免费额度充足:对于个人使用,ZeroTier 和 Tailscale 的免费套餐通常已经足够。
- 缺点
- 性能依赖打洞:如果 P2P 连接成功,速度很快,延迟低。如果被迫使用中继服务器,速度可能会受限。
- 不适合公共服务:它主要用于你自己的设备间私密访问,不适合用来搭建一个公开的网站给所有人访问。
1.2 使用反向代理服务 (例如 FRP, NPS)
这是在技术圈子里非常流行和强大的方案,自由度极高。一句话总结:如果你有自己的 VPS,或者不差钱想买一台,并且乐于折腾,追求极致的性能和灵活性,FRP 是不二之选。
- 技术原理 (反向代理)
- 你需要一台拥有公网 IP 的服务器(通常是云服务器,即 VPS)。
- 服务器端 (Server):在你的 VPS 上安装并运行 FRP 的服务端程序 frps。
- 客户端 (Client):在你的 OpenWrt 路由器上安装并运行 FRP 的客户端程序 frpc。
- frpc 会主动连接到 VPS 上的 frps,并在此之间建立一个稳定的隧道。
- 当外部用户访问 VPS 的 IP: 端口 时,frps 会通过这个隧道将请求转发给 OpenWrt 上的 frpc,frpc 再将请求转发给你内网的实际设备(比如 NAS 的 192.168.1.100:5000)。
- 优点
- 功能强大,性能卓越:你可以转发任何 TCP/UDP 流量,性能瓶颈只在于你的 VPS 带宽和性能,可以跑满速。
- 完全控制:所有配置和数据都由你掌控,没有第三方限制。
- 适合公共服务:可以轻松地将你的网站、游戏服务器等发布到公网上。
- 缺点
- 需要成本:你需要购买一台云服务器(VPS),有持续的费用支出。
- 配置复杂:需要在服务器和客户端都进行配置文件编写,对新手有一定门槛。
- 需要维护:你需要自己负责 VPS 的安全和稳定运行。
1.3 使用 Cloudflare Tunnel (Argo Tunnel)
这是 Cloudflare 提供的一项免费且强大的服务,尤其适合穿透 Web 服务。一句话总结:如果你主要是想安全地暴露一个网站、博客、NAS 管理页面等 Web 服务,Cloudflare Tunnel 是近乎完美的选择。
技术原理 (持久化连接)
- 你需要在 OpenWrt 路由器或局域网内任意一台设备上运行一个名为 cloudflared 的小软件。
- cloudflared 会主动与离你最近的 Cloudflare 全球网络节点建立多个持久、加密的连接。
- 你需要在 Cloudflare 上设置一个域名(或子域名),并将其指向这个 Tunnel。
- 当有人访问你的域名时,请求会进入 Cloudflare 的网络,Cloudflare 通过之前建立好的安全隧道,将请求精准地转发到你家里的 cloudflared 进程,再由它转发给你的内部服务。
优点
- 完全免费:Cloudflare 的基础 Tunnel 服务是免费的,而且非常慷慨。
- 极致安全:你的家庭网络完全不暴露任何端口,源 IP 被完美隐藏在 Cloudflare 之后,还自带 DDoS 防护。
- 配置相对简单:特别是对于 Web 服务,配置流程很清晰。
- 全球加速:可以享受到 Cloudflare 全球 CDN 网络的加速效果。
缺点
- 需要一个域名:你必须拥有一个域名,并将其 DNS 解析托管在 Cloudflare。
- 对非 Web 服务支持稍弱:虽然也能穿透 SSH、RDP 等 TCP 流量,但配置比 Web 服务稍复杂,且需要用户电脑也安装 cloudflared 客户端来访问。
- 依赖单一厂商:你的所有流量都经过 Cloudflare,受其政策和稳定性影响。
2. Tailscale 配置
2.1 下载 Tailscale

1 | https://login.tailscale.com/admin/machines |
2.2 启用 Tailscale 的「子网路由」
这样做的效果是: 在手机上开着 Tailscale 时,它把发往 192.168.6.0/24 (家里内网网段)的流量都自动转发到你的 ImmortalWrt 路由器,不需要改变网址。

1 | tailscale up --advertise-routes=192.168.6.0/24 |
- 对 luci 的 nginx 放行 Tailscale
1 | root@ImmortalWrt:~# cat /etc/nginx/restrict_locally |
2.3 修改 Luci 跳转 Https
1 | root@ImmortalWrt:~# uci show nginx |
修改后如下
1 | # 1️⃣ 删除 HTTPS 443 的 server |