在OpenWRT中,IPv6是可选功能,它默认不启用。如果按照默认设置来编译、使用固件,那最终将导致以下问题:
- 无法获取上游的IPv6地址
- 接口设置中,协议列表里没有“DHCPv6 客户端”这一项
- 无法给本地设备分配IPv6地址
那么,该如何使OpenWRT重获IPv6连接的能力?基本思路就是重新编译固件,刷入设备后再启用IPv6的一系列选项。
1. 纵览OpenWRT的IPv6支持
OpenWRT的IPv6支持由两个部分组成:
其一是WAN端。 OpenWRT使用DHCPv6客户端
odhcp6c
,来获取WAN的IPv6地址。其二是本地DHCP服务器。 OpenWRT会在本地运行一个DHCPv6服务器,为连接到路由器的设备分配IPv6地址。
二者相互独立,互不影响。为了获得完整的网络体验,我们需要同时启用它们。
2. 重新编译固件,启用IPv6支持
接下来,我们将在配置菜单中找到那些与IPv6相关的选项,并逐一打开。编译固件、刷写固件及配置菜单的操作方法不是本文重点,因此不详细展开,请自行搜索相关资料。
基本操作方法:
- 左右方向键:选择底部的功能按钮
- 上下方向键:在列表中移动光标
- 按两次ESC键:返回上一页
- Y键:勾选当前设置项(如果左边有
< >
或[ ]
标记)
2.0 预先准备
首先准备好OpenWRT环境。在OpenWRT源码根目录中运行以下命令:
1 |
|
2.1 开启LuCI的IPv6协议支持
OpenWRT LuCI界面的“接口”设置中,每个接口都可以设置不同的协议,其中包括“DHCPv6 客户端”。有的固件看不到这个协议,是因为编译时没有启用LuCI的IPv6协议支持——
luci-proto-ipv6
。
在配置菜单中,依次进入LuCI
==>5. Protocols
。
然后,光标选中这一项:
< > luci-proto-ipv6........... Support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu
选中之后按Y键,这样就开启了LuCI的IPv6协议支持。
2.2 开启dnsmasq
的DHCPv6支持
新版OpenWRT使用
dnsmasq
作为本地DHCP与DHCPv6服务器。
在配置菜单中,进入【Base system】 ,光标下移,定位到 【dnsmasq-full】 ,按Y键启用。
启用【dnsmasq-full】后,下方会多出几个新选项。依次启用【Build with DHCP support.】与【Build with DHCPv6 support.】。
其中,重点就是后面这个【Build with DHCPv6 support.】,只有打开它,才能给本地设备自动分配IPv6地址。
注意:
上方还有两个
dnsmasq
的组件选项:【dnsmasq】和【dnsmasq-dhcpv6】,不要勾选。一般来说,【dnsmasq-full】就可以完成它们的功能,并且还进行了增强。同时启用可能会造成冲突!L大的源码默认强制勾选了【dnsmasq-full】,并默认同时开启了DHCP与DHCPv6支持。
2.3 添加odhcp6c
OpenWRT使用
odhcp6c
作为DHCP客户端,获取上游IPv6地址。
在配置菜单中,进入【Network】。然后按Page Down往下翻,直到找到【odhcp6c】这一项,按Y键启用。
注意:
不要启用【odhcpd】与【odhcpd-ipv6only】。它是DHCP服务器,并不负责从WAN获取IPv6地址。并且,它可能会与dnsmasq的DHCP服务器产生冲突!
例外是你当前的路由器配置不使用dnsmasq作为DHCP服务器,例如小米路由器青春版。
2.4 保存设置
按上文设置完成后,按左右方向键,选择界面底部的【Save】按钮,回车,保存设置。
保存完成后,请退出设置界面,然后运行以下命令编译:
1 |
|
最后刷入固件。
3. 启动DHCPv6服务器
登录路由器,依次选择【网络】==》【接口】,打开接口管理面板。然后找到【LAN】一栏,单击【修改】按钮,进入LAN接口设置界面。
向下翻,找到“DHCP设置”,点击【IPv6设置】选项卡,把【路由通告服务】与【DHCPv6服务】全部设置为【服务器模式】。如下图所示:
保存设置后,连上路由器的电脑就会立刻获得IPv6地址。
4. 启用WAN6的DHCPv6功能
回到【接口】界面,找到【WAN6】这一栏,点击【修改】,进入WAN6接口设置界面。
然后,【协议】一栏选择【DHCPv6客户端】,点击下方“确定要切换协议?
”提示文字右侧的【切换协议】按钮,即可启用DHCPv6功能。
再回到【接口】界面,这时就能看到WAN6获取到了IPv6地址,设置生效。
5. 拓展阅读
odhcp6c
可以单独安装
如果没有在配置菜单中勾选【odhcp6c】,只勾选了【luci-proto-ipv6】,那么你依然可以在“接口”设置中选择“DHCPv6客户端”。只是LuCI会提升缺少组件,要求你安装odhcp6c
。
考虑到odhcp6c
是基础设施,建议把它编译到固件中,而不是单独安装,这样可以保证系统功能的完满,同时避免在恢复出厂设置后丢失IPv6的支持。
6. 注意:你还有后续的工作要做
本教程的目的仅仅是启用OpenWRT的IPv6“基础设施”。 仅仅完成上面的步骤,是不能让连接路由器的设备连上IPv6网络的。
你还需要阅读以下的教程:
- 《在OpenWrt路由器上使用IPv6(采用NAT6方式)》,通过NAT6来实现IPv6共享。
- 《修改配置文件,给OpenWRT开启IPv6中继》,通过启用IPv6中继来解决本地设备无法获取公网IPv6地址的问题。
当然,对于OpenWRT的IPv6访问,也有其他的解决思路,根据你自己的实际情况选择。建议参考LoriLand的文章《OpenWRT 路由器IPv6实战配置长篇教程:纠正你的IPv4思维!》。
- 本文作者: 爱拼安小匠
- 本文链接: https://anclark.github.io/2023/05/10/OpenWRT/OpenWRT_DHCPv6/
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0(署名-非商用-禁止演绎 3.0) 许可协议。转载请注明出处!