Openwrt ipv6 配置
Openwrt ipv6 中继
参考资料
https://lwz322.github.io/2018/10/06/IPv6_CERNET.html
更新
1
220.08.28 初始
22.10.18 重新整理相关内容
导语
家宽和校园网的 ipv6 配置备忘,并非教程.
基础
ipv6 的部署分配 ip 等,与 ipv4 完全不同,一些参考资料
- IPv6与路由
- IPv6邻居发现协议
ipv6 支持
- Lean’Openwrt
Extra packages --> ipv6helper
NetWork --> Firewall --> ip6tables
下的俩个全选
- 原版 22.03 固件需要启用这 4 个
odhcp6c
odhcpd
ip6tables
luci-proto-ipv6
odhcpd
可替换成odhcpd6
校园网
校园网 ipv6 环境千差万别.每个学校只能对号入座.
总结有 3 种配置: 中继 (Relay) 桥接 (Brige) 和 NAT6,以下纯个人建议,请结合实际尝试
- 校园网有 PD/SLAAC -> 基本同家宽.难度 easy 很多路由器默认配置就能用.
- 需要认证才能有地址 -> 先找能完成认证的插件吧.
- 插线就有 ipv6 地址
- 不能访问公网,还得认证 -> 先找能完成认证的插件吧.
- 能访问公网:
- 只有 /128 的 -> 大概率还有别的限制,NAT6 更直接.
- 有 /64 -> 优先尝试中继 (Relay),但是学校对 mac 地址有限制那就没辙了.
- 所有情况都能用桥接 (Brige).
基本上个人尝试了 3 种全部
- 测试环境包括最新源码编译的 lean 和 Openwrt 22.03.
中继 (Relay): 在 lan wan 之间中继 ipv6 的报文.
- 可能是最优雅的解决方案了,中继 (Relay) 可用时优先使用.
- 按照 南京大学教育网 OpenWrt IPv6 配置方案——宿舍网络工程系列 的中继配置,可以让 lan 口设备分到 ipv6 地址.
- 此时可能会出现有地址无法访问公网,但 ping 一下 wan 口地址,又能正常联网了.
- 这是 openwrt 默认路由 问题,原因 & 解决 -> odhcpd 中继模式原理、局限以及解决方案
- (22.12.29) 必须 ping 网关才能上网情况一直反复, 表现为是好是坏,怀疑是上级深的兼容性问题,最终换到了 NAT6.
- 其他参考资料
- openwrt 1806 ipv6 relay模式lan端无法访问ipv6的解决方法
- OpenWrt ipv6查错记录
- 成功在校园网环境下配置 OpenWRT IPv6 relay
桥接 (Brige): 也叫透传,lan 直接打通 wan,但建个门只允许 ipv6 过.
- 几乎适用于所有情况,建立后 路由器 = ipv4 路由器 + ipv6 交换机.
- 可能存在性能和稳定性问题,不同资料描述差异较大,个人测试会有断链问题,但没有具体原因.
- 跟这 K2 OpenWrt配置Ipv6之穿透模式 配置一遍即可.
- Openwrt 22.03 效果不佳
- Openwrt 22.03 已经 iptables -> nftables,桥接必要的 ebtables 可能有冲突.
- 个人测试 结论同 -> 教育网DD-WRT/OpenWrt用上IPv6——以南京大学为例
- lean 没有问题.
NAT6: wan 口有 ipv6 地址,lan 直接 nat,如同 ipv4.
- 对配置最复杂的一种,但稳定性个人测试比桥接要好.
- 南京大学教育网 OpenWrt IPv6 配置方案——宿舍网络工程系列 适用于 openwrt 22.03 原版.
- 校园网环境下Openwrt配置ipv6教程——以nat6为例 适用于 lean 固件.
- OpenWrt配置IPv6 NAT 这一篇是否适用于最新的固件未测试
家宽 Ipv6 中继记录
以下内容仅仅作为自己的备份,其内容已不适用于最新的固件.
常规
开始是通过无线网卡连接上级路由
新建 WWAN6
- 新建了 DHCPv6 客户端.
- 接口选择连接上级路由的无线网络,提交保存.
- 确保
- 基本设置
- 协议: DHCPv6 客户端
- 请求 IPV6 地址: try
- 请求指定长度的 IPv6 前缀: 自动
- 防火墙设置: 与 wwan 在同一组
- 基本设置
重启连接后发现已经有了 WWAN6 /64 的 v6 地址,还有对应的 pd /64.
lan 口设置
- 一般配置
- 基本设置
- IPv6 分配长度: 64
- IPv6 后缀: ::1
- 高级设置
- 使用内置 IPv6 管理
- 基本设置
- DHCP 服务器
- IPv6 设置
- 路由通告服务: 混合模式
- DHCPv6 服务: 混合模式
- NDP 代理: 混合模式
- DHCPv6 模式: 无状态的 + 有状态的
- 总是通告默认路由
- IPv6 设置
此时连入 lan 口的设备都自动分配了 ipv6 地址,很完美是吗? 但是没法正常访问 ipv6 网络.没法 ping 通,也没法正常解析.
路由器无法联网
对照网上这样有 ipv6 地址,但是无法访问 ipv6 网络的有几种常见解决方法.
- 接口 -> 全局网络选项 -> IPv6 ULA 前缀删除.什么原理不太知道.
- 网络 -> 负载均衡 -> 策略,规则.全部改成 默认 (使用主路由表). 可能有 ipv6 路由有关.
- 网络 -> DHCP/DNS -> 高级设置 -> 禁止解析 IPv6 DNS 记录,取消勾选.这个应该仅仅影响 DNS 解析,不影响 ping6.
- 网络 -> 防火墙 -> 通信规则 ,添加两条从 wwan -> lan ,从 lan -> wwan 的转发规则.
- 以上无效,关闭负载均衡/防火墙.
全部尝试无效后,转而通过有线连接上级路由.
此时才发现通过无线连接时,路由器 ipv4 可以 ping 通,但是 ipv6 ping 不通,有线连接 ipv6 ping 是通的.
无线 ipv6 不通,与网卡还没关系…这可能与 ipv6 的路由表有关,等待进一步探究.
设备无法联网
换成有线连接后,路由器可以正常访问 ipv6 网络,但是 lan 口的设备还是不行.仅有 ipv6 地址,还是无法访问 ipv6 网络.
找了 N 久后在 v2ex 的这个帖子 OpenWRT 成功获取 IPv6 地址却无法使用,说如果以上还不通,需要使用 slaac 获取 ipv6 才行,并且给出了配置.
接口 -> 全局网络选项 -> IPv6 ULA 前缀删除
ssh 到路由器,修改 /etc/config/dhcp.
1
2
3
4
5
6
7
8
9
10
11config dhcp 'lan'
option dhcpv6 'disabled' # 重点是这里禁用 dhcpv6
option ra 'relay' # 对应 lan 口的路由通告服务->中继模式
option ndp 'relay' # 对应 lan 口 NDP 代理-> 中继模式
config dhcp 'wan6' # 下面这个有没有用还没测试.
option interfere 'wan'
option dhcpv6 'disabled'
option ra 'relay'
option ndp 'relay'
option master '1'
设备能正常使用 ipv6 网络了…
结束语
如果想完美问题,估计需要完全了解 ipv6 分配全过程,配合抓包和反复调试 一整个网络工程师了