IPv6普及了,光猫不改就能连外网,可为啥NAS还是打不开?
今天试通了家里NAS的远程访问,不用公网IP,不用折腾路由器,也不用装额外软件。整个过程就三步:确认IPv6通了,开个DDNS域名,配好反向代理。不是什么高深技术,就是按实操一步步来,卡在哪就查哪,没绕弯子。
光猫不用刷机,也不用关防火墙。我查了运营商给的IPv6前缀,是2409开头的,群晖面板里直接看到有2001开头的地址,不是fe80那种本地地址。拿手机开流量,用test-ipv6.com一测,IPv6连通性100%,全球单播地址也亮绿灯。这说明链路已经通了,剩下的全是NAS自己内部的事。
DDNS我选的是群晖自带的,登录账号后自动绑上域名,证书也一起生成了。有人担心证书过期,其实DSM 7默认会自动续签,只要NAS能联网,就不用管。威联通用户得手动搞Let’s Encrypt,但资料里说了用Container Station跑acme.sh就行,我也试过,一次成功。DDNS不是让光猫转发端口,它只是把你的IPv6地址实时写进DNS记录,别人输域名就能找到你。
反向代理才是真正干活的地方。我先开了一个Pi-hole的入口,目标主机填localhost,端口设5002,协议选HTTPS。再加一个家里旧路由器的管理页,目标填192.168.2.1,端口80,一样走5002入口。注意:每个服务必须用不同端口,不能两个都用5002,不然会冲突。NAS本机的服务全用localhost,局域网其他设备就填真实IP,很简单。
HTTPS这步不能跳。我一开始图省事关了强制HTTPS,结果用手机访问老是跳不过去,后来开了“强制重定向”,所有HTTP请求自动转HTTPS,再配上默认证书,访问就稳了。原理其实不复杂:NAS这层把HTTPS解开,再用HTTP发给内网设备,省得给每台设备都配证书。
接入设备我分了四类。NAS自己跑的Docker和套件,填localhost就行;同网段的设备比如智能音箱主机,填192.168.x.x;跨网段的,比如公司电脑想连我家树莓派,就得先连NAS的OpenVPN,连上后再走反向代理;最敏感的设备,像我存账单的数据库,我在NAS防火墙里加了规则,只允许我手机的IPv6地址段访问,别的全拦住。
配置导出我存成了JSON,像这样:{"service_name":"HomeRouter","entry_port":5002,"target_host":"192.168.2.1","target_port":80}。群晖和威联通虽然界面不同,但底层规则结构差不多,导出后改改字段就能复用。我还在任务计划里加了个每月curl ipify.com的任务,地址变了它会自动通知我。
风险这块真踩过坑。最早我让NAS用SLAAC自动分配IPv6地址,结果扫IP段的人真把我NAS页面扫出来了。后来改成DHCPv6有状态分配,地址就固定了,也不暴露在扫描范围里。反向代理端口我也限制了,只对我电信手机的IPv6前缀开放,别人连端口都连不上。DDNS域名我在Cloudflare开了DNSSEC,签了名,不怕被劫持。
监控我也做了。写了个小脚本,每天早上8点去curl一遍我的域名+端口,返回200就没事,返回超时或502就发邮件给我。邮件内容就一行:“HomeRouter反向代理异常”。不花哨,但有用。
NAS现在不光是存照片的地方。我连上了家里的温湿度传感器、扫地机器人API、甚至旧电视盒子的SSH,全走同一个域名,不同端口。没有公网IP,也没开任何端口映射,全靠IPv6原生特性撑起来。
之前以为得等宽带升级,或者换光猫,结果发现早就准备好了,只是没人告诉怎么用。试了两天,失败一次,改了防火墙设置,第三次就通了。
整个过程没抄教程,没问人,就是看一眼NAS设置,试一下,不行就查日志。日志里写的很清楚,哪行报错,为什么错。不是什么黑科技,就是照着逻辑走,错一步就倒回去。
现在手机、笔记本、甚至朋友的平板,输一个域名就能进我家NAS,还能跳转到路由器后台、Pi-hole统计页、甚至NAS里跑的Home Assistant界面。
不用记住IP,不用开远程端口,不用装APP,也不用担心密码泄露。
就是这么回事。
