家里的宽带一直分配不到 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 地址,怎么才能根据拨号的结果自动动态调整呢?
现在在路由器上用 Native 模式(目前路由器用的是原版 Merlin,马上可能会换成 OpenWrt ),通过 DHCPv6-PD,我的路由器和内网设备都能拿到公网 IPv6 地址。从外网可以 ping 通所有这些地址,但是只能访问路由器上的服务,不能访问内网设备的服务。
对这个现象我的理解如下:
无论是路由器还是内网设备,在 IPv6 的环境下,拿到的都是公网 IPv6 地址。访问不到内网服务的原因是,路由器上的防火墙配置默认只允许 ICMPv6、已完成连接的和新建出站的连接通过,不允许其它 IPv6 的入站连接( RFC4890 ?)。
所以在 IPv6 环境下,与 IPv4 NAT 环境的“端口映射”相对应的配置,应该是打开防火墙对应端口。
尝试了下,打开端口后在外网确实可以访问到对应 IPv6 设备上的服务。
问题来了:
我的 IPv6 地址和前缀是 DHCPv6 和 DHCPv6-PD 分配的,如果重新拨号,路由器和所有内网设备的 IPv6 地址都会变化。
地址变化这件事本身不怕,用 DDNS 一样可以解决,但是路由器上配置的开放内网服务的防火墙应该怎么办呢?配置防火墙时已经写死了内网设备的 IPv6 地址,怎么才能根据拨号的结果自动动态调整呢?