OpenWrt IPv6 设置与 DHCPv6 设置入门指南

当前互联网的 IPv4 地址池已彻底分配完毕,因此 IPv6 地址也得以基本普及,使用 OpenWrt 的各技术人员有必要了解相关的 IPv6 基础信息,本文介绍一些最常用的 OpenWrt 上与 IPv6 有关的配置指南。

  • IPv6 地址使用十六进制表示法,共由8个字段组成,每个字段由4个十六进制数组成,每个字段由英文冒号分隔。
  • 完整的 IPv6 地址转换为二进制则为128位,IPv6 地址的每个字段占用16位。
  • IPv6 地址规范中,前4个字段用于表示网络前缀,后4个字段用于表示设备地址(由设备 MAC 地址根据 EUI-64 规范生成)。
  • IPv6 没有“子网掩码”,只有“网络前缀”,只要各设备的“网络前缀”相同,就表示处于同一个局域网内。
  • 如果要用浏览器直接访问 IPv6 地址,需要使用中括号标示。例如:http://[2408:ffff:ffff:ffff:ffff:ffff:ffff:ffff]

拨号上网模式 IPv6

如果是 OpenWrt 拨号上网的方式,那么默认配置即可正常使用 IPv6,如果发现并未获得公网 IPv6 地址,请联系宽带运营商客服,或咨询当地运维人员。

注意:使用 PPPoE 方式拨号上网时,需要删除默认的“wan6”接口,因为拨号成功后,会自动生成一个虚拟的“wan_6”接口。

  • 网关地址一般表示路由器自身,处于同网段或子网段的其它设备均可以访问网关地址。
  • 以 fe80 开头的 IPv6 地址称为链路本地地址,不参与网络通讯,仅用于自动地址配置、IPv6 邻居发现等。
  • IPv6 网络前缀由网络运营商下发,这是一个地址池,本地路由器可以根据这个前缀继续划分子网,类似于 IPv4 的子网掩码。

二级路由 IPv6

如果是作为二级路由器使用,默认配置仍然可以正常使用 IPv6。

IPv6 中继模式

如果发现 WAN 口有公网 IPv6 地址,但局域网其它设备未获得公网 IPv6 地址,这说明上级路由器没有下发 IPv6-PD(网络前缀),这种情况常见于光猫拨号的环境,这时需要修改 OpenWrt 的接口配置,以使得局域网设备能获取由上级路由器分发的公网 IPv6 地址。

首先修改 LAN 口配置,将“RA 服务”、“DHCPv6 服务”、“NDP 代理”这三个选项全部修改为“中继模式”。

然后修改 WAN 口配置,勾选 “IPv6 设置” 选项卡下的 “指定的主接口” 选项,并将“RA 服务”、“DHCPv6 服务”、“NDP 代理”这三个选项全部修改为“中继模式”。

随后让局域网设备重新连接网络,则应当可以获取到公网 IPv6 地址。

DHCPv6 模式

默认情况下,所有局域网设备是通过 SLAAC (无状态)方式自动生成 IPv6 地址,但有时为了更方便管理,可以启用 DHCPv6 方式来给局域网设备手动分配公网 IPv6 地址,和传统的 DHCPv4 方式一样,全部在路由器上进行操作即可。

1、关闭 SLAAC 功能,打开局域网接口中的 “DHCP 服务器”-“IPv6 RA 设置”选项卡,取消勾选 “启用 SLAAC” 选项,并勾选 “RA 标记”选项中的 “受管配置”。

2、使用 DHCP 服务器配置静态 IPv6 地址,主要是自定义一个 IPv6 十六进制后缀即可,即 IPv6 地址中的最后一个字段。

使用 DHCPv6 为局域网设备分配 IPv6 地址实例演示效果图。

配置局域网 IPv6 地址

OpenWrt 默认情况下,每次 “恢复出厂设置” 后,均会按照 IPv6 本地地址规范,随机生成一个局域网 IPv6 地址前缀,如有需要也可以自行手动配置,但需要遵守网络规范。详情参阅:RFC 4193

IPv6 地址简化表示法

完整的 IPv6 地址共由32个十六进制字符组成,不便于记忆与书写,所以默认引入了一种简化表示法,即遇零简化法。

例如完整的 IPv6 地址:2408:8207:18ee:6790:0000:0000:0000:0001
简化后的 IPv6 地址:2408:8207:18ee:6790::1

例如完整的 IPv6 地址:fd23:822a:5a5a:0000:6038:e0ff:fec9:e830
简化后的 IPv6 地址:fd23:822a:5a5a:0:6038:e0ff:fec9:e830

例如表示 IPv6 中的任意地址:0000:0000:0000:0000:0000:0000:0000:0000(等同于 IPv4 中的 0.0.0.0)
简化后的 IPv6 中的任意地址:::
例如表示 IPv6 中的回环地址:::1(等同于 IPv4 中的 127.0.0.1)

  • 连续的零字段可以用双冒号代替。
  • 以零开头的字段,则可以省略开头的零以及与其连续的零。
  • 一个字段全是零,则该字段只写一个零即可。
  • 一个简化后的 IPv6 地址中,双冒号只能使用一次。
  • 不管是使用完整的 IPv6 地址,还是简化后的地址,都是可以正常进行网络通信的。

IPv6 前缀网络位的具体写法

IPv6 的前缀网络位,常见的前缀网络位写法请参照下列表格。

备注:下列示例 IPv6 地址中的 f 表示允许用户自定义。

前缀长度适用场景示例地址地址范围
32国家级互联网注册机构
大型网络服务提供商 ISP
大型互联网公司
2001:0db8::/322001:0db8:0000:0000:0000:0000:0000:0000
2001:0db8:ffff:ffff:ffff:ffff:ffff:ffff
40ISP 给大型企业分配2001:0db8:ab00::/402001:0db8:ab00:0000:0000:0000:0000:0000
2001:0db8:abff:ffff:ffff:ffff:ffff:ffff
48ISP 给中型企业分配2001:0db8:abcd::/482001:0db8:abcd:0000:0000:0000:0000:0000
2001:0db8:abcd:ffff:ffff:ffff:ffff:ffff
56ISP 给小型企业分配2001:0db8:abcd:1200::/562001:0db8:abcd:1200:0000:0000:0000:0000
2001:0db8:abcd:12ff:ffff:ffff:ffff:ffff
60ISP 给普通用户分配2001:0db8:abcd:1230::/602001:0db8:abcd:1200:0000:0000:0000:0000
2001:0db8:abcd:123f:ffff:ffff:ffff:ffff
64末端设备地址2001:0db8:abcd:1234::/642001:0db8:abcd:1234:0000:0000:0000:0000
2001:0db8:abcd:1234:ffff:ffff:ffff:ffff

通常普通家用宽带用户获得的是 60 前缀网络位,用户可自定义最后一个网络位,用于自行划分出多个子网,具体的可用字符为:0123456789abcdef(共计16个,可以用来划分出 16个子网。)

60 前缀网络位自行划分子网的具体书写示例:

子网一:2001:0db8:abcd:1230:ffff:ffff:ffff:ffff
子网二:2001:0db8:abcd:1231:ffff:ffff:ffff:ffff
子网三:2001:0db8:abcd:1232:ffff:ffff:ffff:ffff
子网四:2001:0db8:abcd:1233:ffff:ffff:ffff:ffff
……
子网十三:2001:0db8:abcd:123c:ffff:ffff:ffff:ffff
子网十四:2001:0db8:abcd:123d:ffff:ffff:ffff:ffff
子网十五:2001:0db8:abcd:123e:ffff:ffff:ffff:ffff
子网十六:2001:0db8:abcd:123f:ffff:ffff:ffff:ffff

备注:最后四个字段用于表示设备地址(接口 ID)。