家里的宽带一直分配不到 IPv6 地址,所以也没关注和学习 IPv6 的相关技术。大前天终于找到了渠道,电信把我分配不到 IPv6 地址问题解决了,果然是他们后台配置的问题,不是我的问题。
现在在路由器上用 Native 模式(目前路由器用的是原版 Merlin,马上可能会换成 OpenWrt ),通过 DHCPv6-PD,我的路由器和内网设备都能拿到公网 IPv6 地址。从外网可以 ping 通所有这些地址,但是只能访问路由器上的服务,不能访问内网设备的服务。
对这个现象我的理解如下:
无论是路由器还是内网设备,在 IPv6 的环境下,拿到的都是公网 IPv6 地址。访问不到内网服务的原因是,路由器上的防火墙配置默认只允许 ICMPv6、已完成连接的和新建出站的连接通过,不允许其它 IPv6 的入站连接( RFC4890 ?)。
所以在 IPv6 环境下,与 IPv4 NAT 环境的“端口映射”相对应的配置,应该是打开防火墙对应端口。
尝试了下,打开端口后在外网确实可以访问到对应 IPv6 设备上的服务。
问题来了:
我的 IPv6 地址和前缀是 DHCPv6 和 DHCPv6-PD 分配的,如果重新拨号,路由器和所有内网设备的 IPv6 地址都会变化。
地址变化这件事本身不怕,用 DDNS 一样可以解决,但是路由器上配置的开放内网服务的防火墙应该怎么办呢?配置防火墙时已经写死了内网设备的 IPv6 地址,怎么才能根据拨号的结果自动动态调整呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://v2ex.xtra.eu.org/t/530084
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.