V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
测试工具
SmokePing
IPv6 访问测试
woshijidan
V2EX  ›  宽带症候群

救命!关于 openwrt 仅限给单独设备分配 v6 这件事

  •  
  •   woshijidan · 258 天前 · 2483 次点击
    这是一个创建于 258 天前的主题,其中的信息可能已经有所发展或是发生改变。
    首先说说我的设备
    广东联通 500M 双栈公网 v4+v6 光猫是已替换的 HS8145V5 GPON (因为旧垃圾联通光猫性能太差 连接数到 3k 就会降速 断流) 实测换光猫后能跑约 18000 左右连接数(可能是宽带 /光猫极限?)

    光猫出来网线直插 openwrt 软路由( d2550 )
    v6 相关设定

    lan 获取到的 v6 是宽带 v6 公网 wan 的 v6 的是 fe80 内网 wanv4 是公网

    防火墙相关设定
    参考帖子 https://www.v2ex.com/t/664819

    光猫 - openwrt 软路由 - AP1 - AP2 (主要无线使用)
    目前网络的情况是:设定在 openwrt 防火墙的自定义规则之后,手机 /电脑 过一段时间还是能获取到 ipv6 地址 并且地址是 2408 公网 ip 不过因为设定了防火墙命令后 ipv6 访问是不能访问的 导致电脑打不开网页卡住很久 然后手机显示网络上不了网 wifi 打叉的情况
    还漏了什么?
    18 条回复    2022-05-27 17:05:50 +08:00
    woshijidan
        1
    woshijidan  
    OP
       258 天前
    手机部分补图
    wifi 会这样


    打开微信 /美团看图会这样
    https://imgur.com/a/K8FGDQe
    Buges
        2
    Buges  
       258 天前 via Android
    Openwrt 下 ra 没有使用 radvd ,不支持仅通过单播的方式发送 ra ,所以“仅给单独设备分配 ipv6”是不可能做到的。
    除非你使用仅 dhcpv6 的方式,可以为 Android 以外的设备分配地址( Android 不支持纯 dhcpv6 )。
    不用看那所谓的防火墙规则,正常情况下 ra/slaac 发送的是“广播”( multicast ), 是向所有设备发出而非某特定地址,所以防火墙是没法单独拦截的。
    用防火墙拦截了特定设备的 rs 请求,只能让它刚接入时没有地址。任何其他设备发送 rs 或定时时间一到,路由器发出 ra 后所有设备都能获得地址。
    woshijidan
        3
    woshijidan  
    OP
       258 天前
    @Buges 也就说果断时间强制下发 v6 地址,然后手机获取到 v6 地址后就检测是否能用,不能用就直接 t 出去 wifi 这样吗?不单只是手机,电脑获取到的 v6 也是时不时断网状态 那这样看来 无解了 只能是 v6 全开了
    Buges
        4
    Buges  
       258 天前 via Android
    @woshijidan 你手机具体什么行为我就不清楚了,不过一般 Android 系统默认 v6 优先,只要获得了 v6 就会优先使用,如果 v6 还被 ban 了那对网络请求延时会有明显影响。
    主要原因还是 slaac 的无状态,dhcp 这种有状态协议拿到地址要确认一下,slaac 拿到广播的网段之后自己就给自己配上了,所以你根本没办法拦截。
    cloudsigma2022
        5
    cloudsigma2022  
       258 天前
    其实就是 dns 问题,ip6tables 转发 53 端口数据包,确定能解析到 v6 和 v4 地址?
    dig 命令 @lanv6ip
    cloudsigma2022
        6
    cloudsigma2022  
       258 天前
    同时,在 op 上, 用 ping6 test-ipv6.com
    Damn
        7
    Damn  
       258 天前
    请使用“!”
    iptables 规则我是成功的。
    https://www.v2ex.com/t/664819
    -m mac ! --mac-source * -j DROP
    jobmailcn
        8
    jobmailcn  
       258 天前 via Android
    解决问题的思路不对吧,你不就是想通过 ipv6 访问 nas ,又不想给内网其他设备分配 ipv6 吗?那就把 lan 里面的 ipv6 禁用,只允许路由器 wan 获取 ipv6 地址,然后路由器上部署一个 nginx 反代到 nas ,问题不就解决了?
    jim9606
        9
    jim9606  
       258 天前
    Android 完全不支持 DHCPv6 ,所以只能通过 SLAAC ,但 SLAAC 的 RA 只能使用组播发送。
    你不如考虑单独分一个双栈 VLAN 一个纯 IPv4 VLAN ,然后只在双栈 VLAN 启用 IPv6 路由通告。
    veSir
        10
    veSir  
       258 天前
    数据包负载均衡这玩意没什么用,还会导致莫名其妙的问题.
    woshijidan
        11
    woshijidan  
    OP
       258 天前
    @cloudsigma2022 openwrt 在 v6 是有效的,但是防火墙可能不一定有效
    woshijidan
        12
    woshijidan  
    OP
       258 天前
    @Damn 我没用 “!” 虽然防火墙是生效了,但是如上,过一段时间又会重新获取到公网的 v6 难道用“!”就不会了吗?我去试试
    Damn
        13
    Damn  
       258 天前
    @woshijidan 要点在原帖里有写,附言里的“路由器开 RA 和 DHCPv6”你忽略了。
    最后一条回帖“取消启用 SLAAC 选项”你也忽略了。
    如果你的设备只能支持 SLAAC 的话这个方法无效。
    使用“!”的话规则比你先 accept 后 drop 短,理论上效率更高,大流量 CPU 友好。
    woshijidan
        14
    woshijidan  
    OP
       258 天前 via Android
    @Damn 好吧 软路由是 lean 自编译的 目前看来没法禁用 只能全开了
    TsukiMori
        15
    TsukiMori  
       258 天前 via iPhone
    你还不如禁用 slaac 然后开 DHCPv6 给你要的设备
    但是你这个固件版本用的 ipv6 luci 是老版的 你只能手动 ssh 到路由里改配置文件 关闭 ra 的 a 标记
    而且另一个问题就是不知道是不是显示问题 你这个 wan 口没有 pd
    oovveeaarr
        16
    oovveeaarr  
       258 天前
    战略性 Mark ,我的需求倒是反过来,只给某些设备不配 IPv6 )
    flynaj
        17
    flynaj  
       257 天前 via Android
    我是深更半夜定时重拨,IPv6 确实更新速度慢
    woshijidan
        18
    woshijidan  
    OP
       257 天前
    @TsukiMori 不是老版,我刚一星期前编译的,其实它是基于 lean 源码,可能和官方的比稍微有点旧,另外改配置文件我试过了,参考这个帖子 https://www.v2ex.com/t/664819 这样改后还是会广播
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   3252 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 11:30 · PVG 19:30 · LAX 03:30 · JFK 06:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.