Openwrt ipv6 配置

  • Openwrt ipv6 中继

  • 参考资料

    https://lwz322.github.io/2018/10/06/IPv6_CERNET.html

  • 更新

    1
    2
    20.08.28 初始
    20.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 中继模式原理、局限以及解决方案
    • 其他参考资料
      • 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 模式: 无状态的 + 有状态的
      • 总是通告默认路由

此时连入 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
    11
    config 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 分配全过程,配合抓包和反复调试 一整个网络工程师了