V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MFWT
V2EX  ›  宽带症候群

广东移动,路由器拨号无法获取 IPv6 前缀,光猫拨号可以,何解?

  •  
  •   MFWT · 6 天前 · 989 次点击

    一直以来都是 NATv6 凑合着用,但是最近想要让下游的 BT 机器也有 v6 入站的能力,感觉还是研究一下比较好

    环境

    光猫是移动的 H3-2r ,已经干进去了 Telnet (但无从下手),改了桥接

    主路由是一台跑了 Debian 12 的小主机,PPPoE 拨号可以正常拿到双栈地址( v6 是/64 的地址)

    状况

    按照网上教程使用 wide-dhcpv6-client ,却无法获取 IPv6 PD 。手动运行 dhcp6c 也拿不到前缀,表现为远端无响应:

    root@router:~# dhcp6c -dDfi ppp0
    
    Feb/06/2025 16:14:06: get_duid: extracted an existing DUID from /var/lib/dhcpv6/dhcp6c_duid: 00:01:00:01:2e:3a:7b:ae:*:*:*:*:*:*
    Feb/06/2025 16:14:06: dhcp6_reset_timer: reset a timer on ppp0, state=INIT, timeo=0, retrans=720
    Feb/06/2025 16:14:07: client6_send: a new XID (58d61a) is generated
    Feb/06/2025 16:14:07: copy_option: set client ID (len 14)
    Feb/06/2025 16:14:07: copy_option: set elapsed time (len 2)
    Feb/06/2025 16:14:07: client6_send: send information request to ff02::1:2%ppp0
    Feb/06/2025 16:14:07: dhcp6_reset_timer: reset a timer on ppp0, state=INFOREQ, timeo=0, retrans=987
    
    # 之后都是不断的重试
    
    

    尝试过

    1. ping ff02::1:2%ppp0(通不通过-I 指定接口都尝试过),无响应

    2. 切换为光猫拨号,就可以在光猫后台看到前缀,下级路由也可以拿到前缀,继续分地址(之所以不使用光猫拨号,原因在于,此时下级设备分到的 IPv6 地址的入站访问会被光猫拦截,即使是已经把所有 WebUI 上能找到的和防火墙有关的开关全部关闭,外部网络路由追踪可以发现,显示到光猫那一跳,再往下就没有任何回应了。而如果是路由器拨号,那么就可以一路直通到路由器,访问服务也正常)

    我的问题:

    1. 可能会是因为光猫拨号时候有加入其他的参数进行鉴权吗?
    2. 可能会和光猫 MAC 地址什么的有关系吗?
    3. 这个小主机 WAN 口并不是直接接入路由器,而是类似 Trunk 口,接入网管交换机,通过 VLAN 一分四,再选一个接口( 本例中 ppp0 对应的是 eth1.10 )连接到光猫,会和这个有关系吗?
    4. 以前使用 OpenWRT 软路由的时候没这么多幺蛾子,我需要尝试更换为 OpenWRT-x86 吗?

    后注:

    如有需要补充日志的,请留言指出,谢谢!

    第 1 条附言  ·  4 天前

    问题已解决

    原因:原本为了防止外网扫描内网主机的 ip6tables 规则过于粗糙,屏蔽了 UDP 1:1024 的入站请求

    单独放行 UDP 546 端口入站后,故障消失

    19 条回复    2025-02-09 00:15:16 +08:00
    MFWT
        1
    MFWT  
    OP
       6 天前
    另:尝试过在分配给路由器 WAN 口的/64 地址中,『假装』前 64 位是前缀,自己补上后 64 位,分配给接口,依然可以使用,外部也可以正常接入(包括此时 WAN 口实际上打开了临时地址功能,也能正常使用,可能上级做了整个/64 的路由过来?)。我在想可不可以:

    1. 用同样的方法拼接一个/128 的地址,交给下级设备
    2. 同时,路由器上做好静态路由,目标地址为这个/128 的,路由到 LAN 口

    这种办法除了麻烦之外,还会有什么弊端吗
    titanium98118
        2
    titanium98118  
       6 天前
    没折腾过 debian 拨号,用 openwrt 拨号就能自动获取到 PD /60
    billytom
        3
    billytom  
       6 天前
    我也是广东移动,经常搞着搞着甚至连 ipv6 地址都没有了,这时候需要光猫重新注册
    djw123
        4
    djw123  
       6 天前
    0752 表示还是 v6 老实用 OP 吧
    djw123
        5
    djw123  
       6 天前
    同时建议看下是不是中兴 vbras ,可能存在响应兼容性问题
    MFWT
        6
    MFWT  
    OP
       6 天前
    @djw123 这个要怎么判断呢
    djw123
        7
    djw123  
       6 天前
    @MFWT PPPoE 查询对端响应信息就可以判断
    Ggmusic
        8
    Ggmusic  
       6 天前 via iPhone
    用 2 楼的办法,装个 openwrt 虚机拨号,如果不想放弃 Debian ,可以抓 openwrt 的包,和 Debian 的做比较,修改 widedhcpv6client 配置。
    如果想用一楼凑合,可以看看 v6 的 ndp 代理
    htfcuddles
        9
    htfcuddles  
       5 天前
    配置 dhcp6c.conf 不贴怎么分析,谁知道有没有请求 pd
    MFWT
        10
    MFWT  
    OP
       5 天前
    @htfcuddles

    profile default
    {
    information-only;
    request domain-name-servers;
    request domain-name;
    script "/etc/wide-dhcpv6/dhcp6c-script";
    };

    interface ppp0 {
    send ia-pd 0;
    };

    id-assoc pd 0 {
    prefix ::/64 infinity;
    prefix-interface eth0 {
    sla-len 4;
    ifid 1;
    };
    };


    这个是 dhcp6c.conf 的内容,不确定是不是缺少了什么内容?
    htfcuddles
        11
    htfcuddles  
       5 天前   ❤️ 1
    以下方法逐个试试:

    1. 移动可能不支持无穷大的租期时间,修改为 prefix ::/64 3600;

    2. 删除 ifid 1

    3. /etc/ppp/options 添加
    +ipv6
    ipv6cp-accept-local
    ipv6cp-accept-remote

    4.换成 odhcp6c ( op 同款)
    liaoyuan6666
        12
    liaoyuan6666  
       4 天前
    没试过,个人喜欢爱快或者 openwrt
    MFWT
        13
    MFWT  
    OP
       4 天前
    @htfcuddles
    经尝试,均无效,其表现都是 ff02::1:2 无响应
    所使用的 odhcp6c 包是:sbyx/odhcp6c
    所使用的命令是:
    1. odhcp6c -v -P 0 ppp0
    2. odhcp6c -v -P 60 ppp0
    3. odhcp6c -v -N try -P 0 ppp0
    运行后,命令行均无输出
    xqzr
        14
    xqzr  
       4 天前   ❤️ 1
    tcpdump -ni ppp0 port \(546 or 547\)
    MFWT
        15
    MFWT  
    OP
       4 天前
    @xqzr
    root@router:~# tcpdump -ni ppp0 port \(546 or 547\)

    tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
    listening on ppp0, link-type LINUX_SLL (Linux cooked v1), snapshot length 262144 bytes
    23:36:23.657373 IP6 fe80::1060:9335:2d8:eba0.546 > ff02::1:2.547: dhcp6 solicit
    23:36:23.659679 IP6 fe80::a67b:2cff:fe1f:a1f.547 > fe80::1060:9335:2d8:eba0.546: dhcp6 advertise
    23:36:24.703343 IP6 fe80::1060:9335:2d8:eba0.546 > ff02::1:2.547: dhcp6 solicit
    23:36:24.705625 IP6 fe80::a67b:2cff:fe1f:a1f.547 > fe80::1060:9335:2d8:eba0.546: dhcp6 advertise
    23:36:26.749296 IP6 fe80::1060:9335:2d8:eba0.546 > ff02::1:2.547: dhcp6 solicit
    23:36:26.752145 IP6 fe80::a67b:2cff:fe1f:a1f.547 > fe80::1060:9335:2d8:eba0.546: dhcp6 advertise

    547 端口有回应,但是....似乎 dhcp6c 并不认
    MFWT
        16
    MFWT  
    OP
       4 天前
    @xqzr 查看 ppp0 口配置,可以确定 fe80::a67b:2cff:fe1f:a1f 就是对端
    MFWT
        17
    MFWT  
    OP
       4 天前
    @xqzr 已检查 net.ipv6.conf.ppp0.accept_ra = 2
    MFWT
        18
    MFWT  
    OP
       4 天前
    @htfcuddles 如最新回复所示,抓包发现对端路由器 567 端口已经回包,tcpdump 可以看到,但是 dhcp6c 和 odhcp6c 均无任何反应,似乎就是没有包过来一样
    MFWT
        19
    MFWT  
    OP
       4 天前
    @djw123
    @Ggmusic
    @htfcuddles
    @xqzr

    感谢各位老哥的帮助,问题已解决

    原因:原本为了防止外网扫描内网主机的 ip6tables 规则过于粗糙,屏蔽了 UDP 1:1024 的入站请求。单独放行 UDP 546 端口入站后问题解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5446 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:46 · PVG 13:46 · LAX 21:46 · JFK 00:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.