固件环境

  • 固件镜像: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
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐