Openwrt ipv6 中继

  • Openwrt ipv6 中继

  • 参考资料

    https://lwz322.github.io/2018/10/06/IPv6_CERNET.html
    https://www.v2ex.com/t/700446?__cf_chl_jschl_tk__=31caa54803d3638a0fbb754b7d1539ba59194987-1598586247-0-ATKHIxnJdra9hFHOrvxmszn6bfukYUOcT_F9FcIlf_fg3_HZhRkRRUF30mQup4K_HnTCH4kwqlhF3p-ng1yGExoWOAXVAd4Axxc3RU8Jt7x27orVtHVA9ZsZNRVdTzoe7YIgOwmTZrFsKnq4rqbkGv36hgbc8TVi0IfirmqCrOdJjtcOpDLMwp6yqgfEYnUd9hJyBnvKhXNrjtrfMa-LAVFouEEaXbEWNShYpCkhIYsBhBATeJKxmjtuPrpvpnnuFqIQzoLioDeEsCdiTrtv0DIlkhaq0z6oaMsB6m4R6YpVqei9iv29Dy5d2DMCxDiAfANTT9x5bQJOHjegzgX0b1U

  • 更新

    1
    20.08.28 初始

导语

这些天被 ipv6 的部署打击到了,重新刷计算机网络.😡.

这一篇是 openwrt 下 ipv6 网络的中继..说实话还并不怎么理解故障背后的原因,因此这一篇仅仅是记录而非教程了.

基础

ipv6 的部署分配 ip 等,与 ipv4 完全不同,具体参考这一篇 IPv6与路由.

理论上的内容,等待刷完相关内容再做更多解释.

网络拓扑

  • 主路由通过 PPPoe 拨号,得到了 IPv6-PD (/64),连接主路由可用分配 ipv6 地址.
  • 主路由之后是桥接的副路由,与主路由在同一个网段,ipv6 中继等也正常.
  • 最后才是我自己的 x86 路由器,别问为什么套娃,出租屋能有这网就不错了.
  • x86 路由有一个私网段,ipv4 一直没啥问题,但是 ipv6 ….
  • x86 路由可以通过无线网卡或网线连接上级路由.

路由器是使用的固件是 Lean’Openwrt ,在编译时选择 Extra packages ---> ipv6helper 即可启用完整的 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 配置的各种问题的原因.一下是收集的一下参考资料

  • IPv6与路由: ipv6 分配的基础知识.
  • OpenWRT IPv6 三种配置方式
  • OpenWrt配置IPv6 NAT
  • 如何在路由器后获取 IPv6 地址
  • 进阶类教程】多种无PD的情况下给内网配置IPv6的方法
  • 电信PPPOE的Ipv6配置方法
  • 家用宽带的IPv6配置

结束语

这些天来,打击有点大…从头学起吧…