出门在外如何打回家?内网穿透与远程访问全解析
一台不能在公司或者地铁上随时访问的 NAS,充其量只能算是个高级的本地大硬盘。由于 IPv4 地址在十几年前就被全人类耗尽,运营商默认把家庭宽带塞进了一个巨大的"大局域网"里(NAT)。我们在外面敲门,根本找不到自家的门牌号。
1. 为什么没法直接访问家里的 NAS?
可以把 NAS 想象成你房间里的一个保险柜。你在家里(局域网)当然随便开。
但当你到了外地(公网),你只知道所在小区的地址,保安(大内网 NAT 设备)绝对不会允许你一个外人直接走进大楼去开一个私人的房间门。
2. 王者方案:动态公网 IP + DDNS (最推荐)
这是最丝滑、最快速、能跑满你家里那条几百兆宽带上传极限的神级方案。
- 第一步:打电话要公网 IP。 给你的宽带运营商(电信/联通/移动)打电话,理直气壮地要求把你的光猫改成"公开动态 IP"(可以说装了监控需要外网看)。注意:一定要说改成"桥接模式"由你自己的路由器去拨号。如果是 IPv4 最好,现在很多地方只给发 IPv6 原生也是很好的。
- 第二步:路由器的端口转发 (Port Forwarding)。 登录你家的主路由器。假如外网你想在浏览器用
8888端口访问,那你就在路由器里设置:把来自外网的8888请求,映射发给局域网里那台192.168.1.150(NAS的IP) 的80端口网页端。 - 第三步:配置 DDNS (动态域名解析)。 因为运营商每天会强制换一次你的公网 IP 地址你记不住。你需要在阿里云或者腾讯云花几块钱买一个域名(比如
jensen.com)。然后在 NAS 上跑一个 DDNS 的 Docker 容器(比如 ddns-go),把你阿里云的 API 填进去。
原理: 容器每隔 5 分钟去查一下你家现在的 IP 是多少,如果变了,它就自动给阿里云发消息:"嘿,把jensen.com指向这个新地址!" 你以后在外面永远只需要输入自己好记的域名加上端口号即可。
3. 白银方案:P2P 虚拟局域网 (如 ZeroTier / Tailscale)
如果你不幸遇到了死活不肯给公网 IP,甚至是那种层层嵌套的黑心大内网小区宽带怎么办?打洞 (P2P) 是最好的选择。
- 在官网注册一个 ZeroTier 账号,建立一个虚拟网络 (Network ID)。
- 在你的软路由或 NAS 里安装 ZeroTier 客户端,输入 ID 也就是"加入群聊"。此时它会被分配一个虚拟的
10.x.x.x局域网地址。 - 在你的公司电脑、或者外面的手机里,也装一个客户端,同样输入 ID 进群聊,获得另一个地址。
神奇的事情发生了:这台远在天边的手机和你在家里静静躺着的 NAS,仿佛在物理层面被插在了一个交换机上。你可以直接用那个 10.x.x.x 的地址极速互访!如果 P2P UDP
打洞成功,基本能跑满上行带宽;如果失败走了官方的中继服务器就会慢成蜗牛而且高延迟。国内玩家强烈推荐 Tailscale 并自建 Derp 节点。
4. 青铜方案:FRP 内网穿透 (需有公网服务器)
终极保底方案。如果你有一台带有公网 IP 的阿里云/腾讯云轻量服务器(比如一年几十块钱租的低配做博客那种)。
原理: 让家里死活出不去的 NAS,主动去向这台云服务器建立一条长期的"隧道"(FRP Client)。你在外面访问这台宽敞大马路上的云服务器上的某个特定端口(FRP Server),云服务器再顺着这根隧道把请求硬生生塞给你家的电脑。
这个方案最致命的问题是:你外网看 NAS 电影的速度,被死死卡在那台云服务器的可怜带宽上(国内便宜云通常给的是 3M/5M 小水管),传几张图片还行,看几十个 G 的电影必定卡得你怀疑人生。
5. 远程访问的安全底线
不要以为自己不是马斯克就不会有黑客盯上。一旦你的端口暴露在公网茫茫的扫描器大潮中:
- 绝对不要把 22 (SSH) 端口通过直接转发暴露到互联网!!! 否则你每天会收到成百上千次的爆破密码攻击,并且很有可能沦陷变成挖矿肉鸡。
- 绝对不要把群晖等 NAS 厂家的万能管理员最高 root 级别权限直接挂网分享!!! 平常在外只用低权限的账号登录使用特定的组件(如查阅相册)。
- 一定要使用 HTTPS/SSL 证书加密,防范公司或者公共 Wi-Fi 中间人流量监听你的账户密码。