固件环境
- 固件镜像:openwrt-x86-64-generic-squashfs-combined-efi.img(基于 coolsnowwolf 开源 lede 编译)
- 固件共享地址:(待上传)
- 固件版本:OpenWrt R20.10.20 / LuCI Master (git-20.256.12360-1a54222)
- 内核版本:5.4.75
问题描述
- OpenWrt 在校园网环境下,路由器获得了 IPv4 和 IPv6 地址
- SSH 连接路由器测试路由器能够正常 ping 通 IPv6 地址
- 连接到该路由器下的电脑的网卡也获得了 IPv4 和 IPv6 地址,但是就是无法正常访问和使用 IPv6 地址资源,无法正常 ping 通 IPv6 地址
- IPv6 测试网站(http://www.test-ipv6.com/)测试结果:也显示无法正常访问 IPv6
- IPv4 地址能够正常访问
原因分析
- 连接到该路由器下的电脑的网卡也获得了 IPv6 地址,但估计都是内网 IPv6 地址,所以无法正常访问外网 IPv6 地址资源
(PS:不是专业研究网络,无法拿出充足时间研究该问题,所以只能浮于表面分析原因,如果有高手能更清晰地分析该问题出现的原因,敬请留言和不吝赐教)
解决方法
-
通过 ssh 登录路由器
-
通过 vim 命令打开 /etc/config/dhcp 配置文件:
vim /etc/config/dhcp
- 修改 dhcp 配置内容(如下面几项不一样的替换为下面几项,其他项保留原来即可),英文输入法状态下输入“:”,在输入“q!”,回车保存修改
config dhcp 'lan'option dhcpv6 'disabled'option ra 'relay'option ndp 'relay'config dhcp 'wan6'option interface 'wan'option dhcpv6 'disabled'option ra 'relay'option ndp 'relay'option master '1'
- 通过如下命令重启 odhcpd 服务
/etc/init.d/odhcpd restart
- 通过 vim 命令打开 /etc/rc.local 开机启动配置脚本
vim /etc/rc.local
- 在开机启动配置脚本 /etc/rc.local 中添加如下内容,英文输入法状态下输入“:”,在输入“q!”,回车保存修改
sleep 30
/etc/init.d/odhcpd restart
-
在 OpenWrt 图形配置界面下,依次展开【网络】–【DHCP/DNS】–【高级设置】,去勾选“禁止解析 IPv6 DNS 记录” 这项
-
然后,依次展开【网络】–【负载均衡】–【策略】,点击【修改】
-
在【备用成员】下拉选项中选择【默认(使用主路由表)】,点击【保存&应用】
-
重启路由器后,可以发现连接到路由器的电脑网络可以获得与路由器 WAN6 口相同前缀的 IPv6 地址,然后就可以尽情访问和使用 IPv6 教育资源了
参考及致谢
- https://blog.csdn.net/baidu_33340703/article/details/109843529
- http://blog.kompaz.win/2017/02/22/OpenWRT%20IPv6%20%E9%85%8D%E7%BD%AE/
- https://v2ex.com/t/700446