家庭 IPv6 折腾记
家里有几台服务器和 NAS,一直有从公网访问它们的需求。这次假期末尾,我下定决心把 IPv6 跑通,彻底解决公网访问问题。
第一步:联系电信,让主路由拿到 IPv6 前缀
第一步是给家庭网络入口开通 IPv6。这一步靠买设备或改设置都搞不定,必须联系运营商(电信)配合。
典型的家庭网络结构是:光猫作为总网关,下挂若干二级路由器。我家之前也是这样。
拿到 IPv6 的关键是:把光猫改成桥接模式,用一台刷 OpenWrt 的路由器做主路由,由它进行 PPPoE 拨号。
为什么要联系电信?两个原因:
- 光猫改桥接通常需要装维人员操作,或者找客服要光猫超级密码;
- 改桥接后由主路由拨号,宽带账号和密码得找电信要。
为什么主路由要跑 OpenWrt?因为需要把路由器管理页面的端口(默认 80)改成非常用端口(如 8830、1345)。家宽条款禁止对外提供 Web 服务,运营商会扫描 80、443 等常见端口,一旦发现就可能收回公网 IPv6 前缀,甚至限制宽带。
主路由我选的是 GL.iNet 的路由器,原生固件就是定制的 OpenWrt,开箱即用,体验很好。
这一步成功的标志有两个:
- 主路由拿到了公网 IPv6 地址;
- 运营商通过 DHCPv6-PD 下发的前缀长度是 /60(甚至更短,如 /56),而不是 /64——只有短于 /64 的前缀才能继续向下级设备划分子网。
第二步:局域网扁平化
有了第一步的铺垫,此时已经可以通过 IPv6 访问主路由的 SSH 和其他服务。但这还不够——服务器和 NAS 都挂在二级路由器下面。
我家的情况是:一级路由能正常下发 IPv6 前缀,但二级路由(中兴)不能稳定地把前缀继续往下传递。很多家用路由器对 DHCPv6-PD 下级委派的支持都不完整,这是通病。
我的应对办法是给局域网做扁平化:把二级路由器改为 AP(有线中继)模式,让所有设备直连一级路由。这样每台设备都能直接从一级路由获取公网 IPv6 地址。
这一步成功的标志:所有需要对外暴露的机器,都拿到了自己的公网 IPv6 地址。
第三步:防火墙放行 + DDNS
到这里,理论上从外网已经可以连通家里的所有服务了,但还剩两个问题:
- 部分服务的端口未放行;
- 运营商下发的 IPv6 前缀会定期变化,设备的公网地址并不固定。
第一个问题,在 OpenWrt 的防火墙里放行相应端口即可。注意要单独放行 IPv6:OpenWrt 默认拦截所有从 WAN 侧入站的 IPv6 连接,这和 IPv4 时代靠 NAT”天然隔离”内网完全不同。
第二个问题,用 DDNS 解决。这一步我花了一点小钱:
- 买一个域名;
- 在阿里云购买云解析(公网权威 DNS)服务;
- 到域名注册商后台,把域名的 NS 记录指向阿里云的 DNS 服务器。
NAS 自带 DDNS 功能,直接在后台配置即可。
服务器是一台 Mac mini,装开源的 ddns-go,定时把本机的 IPv6 地址同步到域名的 AAAA 记录,配置很简单。
至此全部打通:在任何地方都可以通过域名访问家里的服务器、NAS 上的 WebDAV 服务和数据库服务。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!





