V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
username1919810
V2EX  ›  OpenWrt

二级 openwrt 路由分配 IPv6 的问题

  •  
  •   username1919810 · 276 天前 · 1699 次点击
    这是一个创建于 276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 上级路由是个口袋 WiFi ,通过 4G 连接网络,可以给接入的设备分配/64 的 IPv6 地址, 测试 PC 直接接入口袋 WiFi 可以正常通过 test-ipv6.com 测试,可以正常访问纯 IPv6 网站。 接入 OpenWRT 路由器后根据网上找到的一些教程对 WAN 、WAN6 和 LAN 接口进行修改,PC 能够获取到 IPv6 地址,但是无法通过 test-ipv6 测试,访问纯 IPv6 网站超时。 以下是接口的配置: 二级路由接口配置 如何对二级路由进行正确配置以访问 IPv6 网站? 测试 PC 获取 IPv6

    第 1 条附言  ·  275 天前
    在测试的过程中,非常偶然地突然有一次什么配置都没有改,ipv6 就通了,但是路由器重启后再次出现这种情况。
    第 2 条附言  ·  275 天前
    非常诡异的是路由器底下的 NAS 没有问题,可以正常 curl ipv6.google.com ,手机和 PC 就只能拿到 IPv6 地址但不能正常访问 ipv6 网络。
    12 条回复    2024-04-05 18:48:38 +08:00
    yena
        1
    yena  
       276 天前 via iPhone
    搜索 openwrt nat6 教程,或者也可以使用这里的脚本 https://github.com/Ausaci/luci-app-nat6-helper
    szdosar
        2
    szdosar  
       276 天前
    试试前提:
    1.上级路由口袋 WiFi 支持通过 USB 连接电脑吗?
    2.如果支持,看看电脑能获取公网 ipv6 ?

    如果前提满足,你直接把口袋 WiFi 插入二级 openwrt 路由的 USB 口,加载驱动即可。
    lcdtyph
        3
    lcdtyph  
       276 天前 via iPhone
    不想 nat6 的话可以试一下这个方法
    https://blog.icpz.dev/articles/notes/odhcpd-relay-mode-discuss/
    cpstar
        4
    cpstar  
       276 天前
    本机已经 2400 了,通过 ping -6 判断 v6 路由通不通
    yadong1985
        5
    yadong1985  
       276 天前
    问题出在一级路由器口袋 WiFi 的 DHCPv6 ,地址分配长度设置成 60 就好了,64 是不会给下一级路由器分配地址的。
    两个路由器全部设置 60 就行了
    username1919810
        6
    username1919810  
    OP
       275 天前
    @yena 这个脚本装了也没用
    username1919810
        7
    username1919810  
    OP
       275 天前
    @szdosar 支持的,我插到电脑上是可以直接获取公网 IPv6 。目前就是通过 USB 连接的二级 openwrt 路由器,虽然分配了 IPv6 地址但是访问 ipv6 网站一直超时。
    username1919810
        8
    username1919810  
    OP
       275 天前
    @cpstar 不通,ping 结果是超时
    username1919810
        9
    username1919810  
    OP
       275 天前
    @yadong1985 上级路由那个口袋 wifi 没有任何配置可以修改,只能下发一个 64 的 v6
    username1919810
        10
    username1919810  
    OP
       275 天前
    @szdosar 非常诡异的是路由器底下的 NAS 没有问题,可以正常 curl ipv6.google.com ,手机和 PC 就只能拿到 IPv6 地址但不能正常访问 ipv6 网络。
    @cpstar
    @yena
    yadong1985
        11
    yadong1985  
       274 天前
    那就只能 nat6 了
    yjzll
        12
    yjzll  
       22 天前
    第一步,先搞定 wan6 口
    1 、网络--接口--wan6--编辑
    1.1 、常规设置
    协议:DHCPv6 客户端
    设备:eth0
    开机自动运行:选择
    请求 IPv6 地址:try
    请求指定长度的 IPv6 前缀:自动

    1.2 、高级设置
    强制链路:不选
    请求 DHCP 时发送的客户端 ID:空
    使用默认网关:选择
    自动获取 DNS 服务器:选择
    DNS 权重:空
    使用网关跃点:空
    覆盖 IPv4 路由表:未指定
    覆盖 IPv6 路由表:未指定
    IPv6 源路由:选择
    委托 IPv6 前缀:选择
    IPv6 分配长度:已禁用
    IPv6 前缀过滤器:-- 请选择 --
    IPv6 后缀:::1
    IPv6 优先级:空


    1.3 、防火墙设置
    创建和分配防火墙区域:wan 和 wan6

    1.4 、DHCP 服务器--常规设置
    忽略此接口:不选

    1.5 、DHCP 服务器--IPv6 设置
    指定的主接口:选择
    RA 服务:中继模式
    DHCPv6 服务:中继模式
    NDP 代理:中继模式
    学习路由:选择


    第二步,搞定 lan 口
    2 、网络--接口--lan--编辑
    2.1 、常规设置
    协议:静态地址
    设备:br-lan
    开机自动运行:选择
    IPv4 地址:192.168.100.1
    IPv4 子网掩码:255.255.255.0
    IPv4 网关:灰色无法更改
    IPv4 广播地址:灰色无法更改
    IPv6 地址:空
    IPv6 网关:空
    IPv6 路由前缀:空

    2.2 、高级设置
    强制链路:选择
    使用默认网关:选择
    使用自定义的 DNS 服务器:空
    DNS 搜索域名:空
    DNS 权重:空
    使用网关跃点:空
    覆盖 IPv4 路由表:未指定
    覆盖 IPv6 路由表:未指定
    委托 IPv6 前缀:选择
    IPv6 分配长度:已禁用
    IPv6 前缀过滤器:-- 请选择 --
    IPv6 后缀:::1
    IPv6 优先级:空


    2.3 、防火墙设置
    创建和分配防火墙区域:lan

    2.4 、DHCP 服务器--常规设置
    忽略此接口:不选
    启动:100
    客户数:150
    租期:infinite

    2.5 、DHCP 服务器--高级设置
    动态 DHCP:选择
    强制:不选
    IPv4 子网掩码:灰色无法更改
    DHCP 选项:空

    2.6 、DHCP 服务器--IPv6 设置
    指定的主接口:不选
    RA 服务:中继模式
    DHCPv6 服务:中继模式
    NDP 代理:中继模式
    学习路由:选择
    NDP 代理从属设备:不选


    第三步,网络--接口--全局网络选项
    IPv6 ULA 前缀:空
    数据包引导:选择


    第四步,网络--DHCP/DNS--高级设置
    过滤 IPv6 AAAA 记录:不选
    过滤 IPv4 A 记录:不选


    第五步,网络--防火墙--自定义规则
    # WebDav 6086
    ip6tables -A INPUT -p tcp --dport 6086 -j ACCEPT
    # Aira2 6881,6882
    ip6tables -A INPUT -p tcp --dport 6881 -j ACCEPT
    ip6tables -A INPUT -p udp --dport 6881 -j ACCEPT
    ip6tables -A INPUT -p tcp --dport 6882 -j ACCEPT
    ip6tables -A INPUT -p udp --dport 6882 -j ACCEPT
    # qBittorrent Docker
    ip6tables -A INPUT -p tcp --dport 6883 -j ACCEPT
    ip6tables -A INPUT -p udp --dport 6883 -j ACCEPT
    # icmpv6 message go into router itself
    ip6tables -I INPUT -p ipv6-nonxt -m length --length 40 -j ACCEPT
    ip6tables -I INPUT -p udp --sport 547 --dport 546 -j ACCEPT
    ip6tables -I INPUT -p udp --sport 500 --dport 500 -j ACCEPT
    ip6tables -I INPUT -p udp --sport 4500 --dport 4500 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 1 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 2 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 3 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 4 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 128 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 129 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 130 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 131 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 132 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 133 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 134 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 135 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 136 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 141 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 142 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 143 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 148 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 149 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 151 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 152 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 153 -j ACCEPT
    # icmpv6 message go into other PC
    ip6tables -I FORWARD -p ipv6-nonxt -m length --length 40 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 1 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 2 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 3 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 4 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 128 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 129 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 130 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 131 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 132 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 133 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 134 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 135 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 136 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 141 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 142 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 143 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 148 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 149 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 151 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 152 -j ACCEPT
    ip6tables -I forwarding_rule -p ipv6-icmp --icmpv6-type 153 -j ACCEPT

    软路由重启(系统--重启)

    IPV6 联网测试
    https://testipv6.cn/
    ping -6 www.baidu.com

    第六步,其他问题
    6.1 、如果获得了 ipv6 地址,缺无法 ping 通,大概率是以下三个地方
    网络--接口--全局网络选项,IPv6 ULA 前缀:空
    网络--接口--wan6 ,IPv6 分配长度:已禁用
    网络--接口--lan ,IPv6 分配长度:已禁用
    原因是纯 relay 模式下客户端不会获取到“IPv6 ULA 前缀”下的地址/路由/邻居信息,当客户端尝试回复从路由器发出的 ULA-prefix 下地址的 neighbor solicitation 时,匹配不到这个 ULA 地址的路由只好放弃。
    6.2 、软路由 iStore ,22.03.6 版的防火墙配置,是一个通用配置,不适合国内的 IPv6 环境,icmpv6 的消息被防火墙阻挡,需要根据情况打开。
    6.3 、网络拓扑:电信光猫拨号-->OpenWrt X86 电脑( iStore )-->AP 。
    软件是 iStoreOS 22.03.6 2024012613 。日常 CPU 负载 20%以下,8G 内存剩下 7G 以上空闲。
    6.4 、iStoreOS 页面设置在网络防火墙一节似乎没有很完美,明明页面设置了,后台文件没变化
    6.5 、两个网关问题
    iStore 首页--终端--输入 root 和密码,查询路由器的默认 IPv6 网关
    ip -6 route | grep default 得到:
    default from 240e:38a:xxx:xxx::/64 via fe80::133:7cc9:xxx dev eth0 proto static metric 512 pref medium #外网到光猫 lan 侧
    default from 240e:38a:xxx:xxx::/64 via fe80::1 dev eth0 proto static metric 640 pref medium
    出现此情况,在本模式( SLAAC )下忽略,在 IPV6 NAT 模式下需要修改若干内容
    6.5 、openwrt 需要的 ipv6 包:
    odhcp6c 2022-08-05-7d21e8d8-18 ,DHCPv6 客户端
    odhcpd-ipv6only 2023-01-02-4a673e1c-2 ,ipv6 版本
    luci-proto-ipv6 git-21.148.48881-79947af git-23.355.78888-e047387 ,从 luci Web 界面配置 IPv6
    ip6tables-mod-nat 1.8.7-7
    ip6tables-zz-legacy 1.8.7-7
    kmod-ip6tables 5.10.201-1 并非必须,提供 IPv6 防火墙
    kmod-nf-ipt6 5.10.201-1
    kmod-ipt-nat6 提供 IPv6 的 NAT 支持
    6.6 、文件 /etc/config/dhcp 如下
    config dhcp 'lan'
    option interface 'lan' #端口名称
    option start '100' #端口号起始--结束
    option limit '150'
    option dhcpv4 'server'
    option ra_management '2' #分配何种地址,0 仅 SLAAC ,1 是 SLAAC 和 DHCP 混合, '2'仅 DHCP 有状态
    option leasetime '12h' # infinite 租期,v4v6 均有效
    option ra 'relay ' #中继运行模式
    option ndp 'relay' #中继运行模式
    option dhcpv6 'relay' #中继运行模式

    config dhcp 'wan'
    option interface 'wan'
    option ignore '1'

    config dhcp 'wan6'
    option interface 'wan6'
    option master '1'
    option ra 'relay'
    option ndp 'relay'
    option dhcpv6 'relay'
    6.7 、passwall 插件,DNS 设置,过滤代理域名 IPv6 ,要勾选,不对 IPV6 解析,使得 IPV6 直接连通,不经过 passwall 。

    6.8 、常用命令

    网络邻居
    ping ff02::1

    路由器
    ping ff02::2

    DHCP 服务器
    ping ff02::1:2

    查询路由器的默认 IPv6 网关
    ip -6 route | grep default
    ip -6 route show

    查看 icmp6 协议信息
    tcpdump -nn -i eth0 icmp6
    tcpdump -nn -i eth0 icmp6 -v
    tcpdump -nn -i eth0 icmp6 -vv

    查看邻居 mac 地址
    ip -6 neighbor show

    检查哪些端口和应用在运行,如过滤 19422 相关内容
    netstat -anp -p udp
    netstat -anp -p udp | grep 19422

    重启网络服务
    /etc/init.d/firewall restart
    /etc/init.d/network restart
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5718 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:30 · PVG 14:30 · LAX 23:30 · JFK 02:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.