侧边栏壁纸
博主头像
いちごみるく

行动起来,活在当下

  • 累计撰写 70 篇文章
  • 累计创建 48 个标签
  • 累计收到 55 条评论

目 录CONTENT

文章目录

OpenWrt IPv6:先用前缀委派,再按条件配置中继与旁路由

先确认上游是否提供 IPv6 前缀委派,再决定使用路由分发还是 relay;不能只根据“WAN 有 IPv6 地址”选择配置。

IPv6 地址、默认路由和 DNS 信息可能分别通过 SLAAC/RA、DHCPv6 获得。RA 负责告诉主机默认路由;获得 DHCPv6 地址并不自动代表存在默认网关。OpenWrt 接入上游后,通常应该用前缀委派(DHCPv6-PD)给 LAN 分配独立的 /64,由自己的路由器提供 RA,而不是把所有 IPv6 选项一律切成中继。

优先使用前缀委派

先检查 wan6 的状态,区分接口本身的 IPv6 地址与 ipv6-prefix。在命令行可运行:

ubus call network.interface.wan6 status
ip -6 address
ip -6 route

接口逻辑名称可能不同,应换成自己的上游 IPv6 接口。如果上游已经委派 /56、/60 或可用于一个 LAN 的 /64,在现有 /etc/config/network 中确认上游请求 PD、LAN 分配 /64。以下展示相关字段,不能用片段覆盖整份 network 文件:

config interface 'wan6'
    option device '@wan'
    option proto 'dhcpv6'
    option reqaddress 'try'
    option reqprefix 'auto'

config interface 'lan'
    # 保留原有 device、IPv4 等字段
    option ip6assign '64'

@wan 指向已有逻辑 WAN 设备;PPPoE 或定制固件的名称需要实际核对。LAN 的 DHCP/RA 配置可以使用服务器模式:

config dhcp 'lan'
    # 保留原有 IPv4 DHCP、租约等字段
    option interface 'lan'
    option ra 'server'
    option dhcpv6 'server'
    option ndp 'disabled'

从上游委派的前缀中分配 LAN 子网,客户端能得到公网地址,同时路由器防火墙仍控制 WAN 到 LAN 的新连接。ULA 可以为内部通信保留,但它不是公网前缀。我的 Actions-OpenWrt 项目 也按 /64 进行 LAN 前缀分配;具体是否获得 PD 由上游决定。

没有 PD 时才考虑 relay

如果上游只在一个链路上提供地址/RA,没有给 OpenWrt 委派可路由的 LAN 前缀,odhcpd 提供 RA、DHCPv6 与 NDP relay。它需要符合上游网络条件,不能保证每个运营商、PPPoE 链路或认证网络都支持。odhcpd 官方说明

以下假设真正的 IPv6 上游逻辑接口是 wan6,LAN 是 lan。把上游设为 relay 的 master,下游设为 relay;不要因为物理线插在 WAN 口就把 master 随意写到另一逻辑接口。

config dhcp 'wan6'
    option interface 'wan6'
    option ignore '1'
    option ra 'relay'
    option dhcpv6 'relay'
    option ndp 'relay'
    option master '1'

config dhcp 'lan'
    # 保留当前 IPv4 DHCP 配置
    option interface 'lan'
    option ra 'relay'
    option dhcpv6 'relay'
    option ndp 'relay'

这里的 ignore 是上游 DHCP 配置中的设置,不能把它复制到 LAN 后关闭原有 IPv4 DHCP。配置前保留 /etc/config/network 和 /etc/config/dhcp 的当前版本。接口或 PD 设置变更需要通过 LuCI 保存并应用,或在控制台重新加载网络;单独重启 odhcpd 只应用 DHCP/RA 配置,不会应用 network 文件中的接口变更。完成网络配置应用后再重启 odhcpd:

/etc/init.d/odhcpd restart
logread -e odhcpd

在 LuCI 中对应 relay/master 字段,是否显示、名称和位置会随固件不同。下面的 2022 年截图只辅助理解接口关系:

历史 IPv6 relay 界面

不需要仅为 IPv6 再造一个固定名称为 LAN6 的接口,也不要同时把“服务器模式”“中继模式”和“总是通告默认路由”混为一套必选项。是否通告默认路由应与该设备真实具备的 IPv6 出口相符;出口不可用时强行通告会把客户端引到黑洞。

旁路由要先确定默认网关

旁路由与主路由在同一 LAN 时,客户端收到谁的 RA,就可能选择谁作为 IPv6 默认网关。IPv4 DHCP 指向旁路由并不自动改变 IPv6 路径。

  • 主路由负责 IPv6:旁路由只作为 LAN 主机,不再向同一链路通告自己为 IPv6 默认路由。客户端直接通过主路由出站;旁路由的 IPv4 代理或 DNS 设置不会自动接管这些连接。
  • 旁路由负责下游 IPv6:为下游建立独立接口/网段,先获得可路由的委派前缀,或在确实满足条件时使用 relay,然后按这条路径配置转发和防火墙。

不要只添加一个 DHCPv6 客户端接口就声称接管了所有客户端 IPv6。最终以客户端的 IPv6 默认路由、实际源地址和出口记录为准。

连接慢时怎么检查

依次检查客户端地址是否来自正确前缀、默认路由是否指向预期设备、DNS 是否正常、路由器本身是否能访问 IPv6。对比同一目标的 IPv4/IPv6 请求,再检查 MTU、ICMPv6 Packet Too Big、邻居发现与防火墙。

Flow Offloading 的历史缺陷只对应特定版本与设备;不能把所有 IPv6 慢归因于加速模块,也不应默认安装或切换 Shortcut-FE。需要排查时暂时关闭当前的 flow offload,对同一链路做可重复比较,再决定升级固件或调整配置。

最后从外部测试有明确授权开放的服务端口,同时检查其他入站新连接仍被阻止。获得公网 IPv6 不表示应开放全部端口;客户端地址、默认路由、出站、必要 ICMPv6 和入站边界都需要验证。

0

评论区