家宽固定 ipv6 前缀实现静态公网 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
piero66
V2EX    宽带症候群

家宽固定 ipv6 前缀实现静态公网

  •  1
     
  •   piero66 2024-09-02 00:11:05 +08:00 via Android 7481 次点击
    这是一个创建于 408 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ![1000013040.webp]( https://j.teno.cx/root/2024/09/01/66d47e29cf906.webp)

    虽然之前有人发了,但实在太神奇所以再补充下,原理可以看参资料:,t/1014864



    方法就是打开 prefix hint 功能,

    ![1000013041.webp]( https://j.teno.cx/root/2024/09/01/66d47f8d48c53.webp)

    输入当前 IP 前缀或者按照 bras 的前缀写全尝试也可以,也就是可以调靓号,也可以全 0 补全,(如图上就是 0 补全)如果报错就是 bras 拒绝了手动的前缀

    实测本地移动全 0 最短前缀可以,/48 ~/60 的子网部分 随便改靓号,电信如果改的太短或者太靓号会强制修改几个位,没法全 0 最短前缀,但只要分配给我了就可以一直用

    # 此方法修改后重拨号前缀固定,理论上只要 bras 方这段前缀不过期就可以一直用,算静态 ipv6 体验卡



    关于如何 win 系统用短 ipv6 ,

    win 系统要把 ipv6 临时地址和 ra 通告给禁用了,适配器里面再改成手动获取 ipv6 地址

    实现 12 位超短 ipv6 地址

    linux 系统更简单,直接配置静态 ipv6 即可,

    安卓只支持 slaac 短不了一点,iOS MacOS 似乎没法静态 ipv6 ,用有状态 dhcpv6 可以分固定 v6 ,(但 ROS 不支持有状态)
    第 1 条附言    2024-09-02 00:51:33 +08:00
    补充:安卓也可以设置静态后缀,需要 root 权限,在 shell 里面输入

    ip token set ::1234/64 dev wlan0

    设置后缀为 1234 ,重启下 wifi 即可生效,入站可用,出站怎么改优先级不走 slaac 地址还不得知
    第 2 条附言    2024-09-04 21:44:44 +08:00
    第三十四楼,openwrt 也得到了固定前缀的支持
    69 条回复    2025-01-07 10:28:09 +08:00
    rulagiti
        1
    rulagiti  
       2024-09-02 00:28:11 +08:00
    这个不错,openwrt 怎么指定呢
    creepersssss
        2
    creepersssss  
       2024-09-02 00:38:30 +08:00
    我测试的是,可以固定现在拿到的地址,但是不能自己指定改地址
    piero66
        3
    piero66  
    OP
       2024-09-02 00:49:45 +08:00 via Android
    @rulagiti 无解
    piero66
        4
    piero66  
    OP
       2024-09-02 00:50:04 +08:00 via Android
    @creepersssss 多试几次,可以先把拨号断了再改
    yyyb
        5
    yyyb  
       2024-09-02 01:03:28 +08:00   1
    上周折腾了半天把家里的 debian 软路由开了 ipv6 ,又搞了个纯 v6 小鸡,一切都弄好以后发现 x 、github 好多网站不支持 ipv6 就又滚回去了
    nlzy
        6
    nlzy  
       2024-09-02 01:24:55 +08:00
    @rulagiti 自己改 odhcp6c 的源代码,其实不算复杂,我改过。
    piero66
        7
    piero66  
    OP
       2024-09-02 02:05:09 +08:00 via Android
    @nlzy 如果可用的话麻烦分享出来,很有用的功能
    MuJian
        8
    MuJian  
       2024-09-02 08:05:23 +08:00
    我说呢,我这有个华为的 f30 fttr 设备就是固定公网 ipv6 ,无论停电几小时重连还是这个 prefix
    allenby
        9
    allenby  
       2024-09-02 13:13:01 +08:00 via Android
    @MuJian #8 华为的是会这样,用其他牌子的就不会
    ewader
        10
    ewader  
       2024-09-02 13:45:20 +08:00
    ipv6 其实方便多了,我现在的 nas 就是用 ipv6 ,v4 从来是不想的了
    piero66
        11
    piero66  
    OP
       2024-09-02 13:51:35 +08:00 via Android
    @MuJian 自查
    FastAce
        12
    FastAce  
       2024-09-04 01:08:25 +08:00
    https://openwrt.org/docs/guide-user/network/ipv6/configuration#protocol_static_ipv6

    看官方文档是支持的,不知道怎么配置
    ip6hint prefix hint (hex) no (none) Hint the subprefix-ID that should be delegated as hexadecimal number (see Downstream configuration below)

    @rulagiti
    piero66
        13
    piero66  
    OP
       2024-09-04 02:25:44 +08:00 via Android
    @FastAce op 这个设计是给 lan 分子网 id ,ros 反过来找上游要前缀,原理应该一样,改源码是需要的
    rulagiti
        14
    rulagiti  
       2024-09-04 07:58:42 +08:00
    @FastAce

    这是是 ula 针对 lan 配置的
    FastAce
        15
    FastAce  
       2024-09-04 11:15:15 +08:00
    @rulagiti 多谢大佬解惑~
    FastAce
        16
    FastAce  
       2024-09-04 11:51:07 +08:00   1
    @rulagiti
    @piero66
    https://github.com/themiron/odhcp6c/tree/prefix-request

    最新的源码这里有,

    相关 PR 的说明:

    odhcp6c: allow to request specific ipv6 prefix
    Expand -P option with optional exact ipv6 prefix format.
    This allows to keep the IPv6 prefix in some cases, for example
    if the prefix is issued dynamically on upstream.

    Examples:
    -P <length>
    -P <prefix/length>


    odhcp6c:允许请求特定的 IPv6 前缀

    代码 Github 大佬写好了,只需编译,ROS 部分地区的 Vbras DUID 不规范拿不到 IPV6 (确切的说 ROS 检查 DUID 比较严格),OPENWRT 编译 应该 即解决 ROS DUID 的问题,也不仅仅再局限于使用 ROS
    rulagiti
        17
    rulagiti  
       2024-09-04 12:50:35 +08:00
    @FastAce 感谢
    flybird08765
        18
    flybird08765  
       2024-09-04 13:18:34 +08:00
    @FastAce @rulagiti 我编译了一下似乎不能正常工作,卡住了,帮忙确认下是这么用的吗?

    root@OpenWrt:~# odhcp6c -P "2409:xxxx:xxxx:xxxx::/60" br-lan
    flybird08765
        19
    flybird08765  
       2024-09-04 13:42:23 +08:00
    这版改的有点神奇,不支持/60 这样的字段了,会报错:odhcp6c: invalid argument: '/60'
    FastAce
        20
    FastAce  
       2024-09-04 14:15:02 +08:00 via Android
    @flybird08765 我还没编译,只找到了源码
    FastAce
        21
    FastAce  
       2024-09-04 15:12:34 +08:00
    @flybird08765 -P2400:X:X:X::/XX 这样看看
    flybird08765
        22
    flybird08765  
       2024-09-04 15:31:40 +08:00
    我发现核心原因是卡在/lib/netifd/dhcpv6.script 这个脚本里面,这个脚本写的好复杂,得研究哪里出了问题 @FastAce
    FastAce
        23
    FastAce  
       2024-09-04 15:53:03 +08:00
    @flybird08765 琢磨出来了,麻烦贴下步骤,造福下 V 友
    Satansickle
        24
    Satansickle  
       2024-09-04 16:09:01 +08:00
    爱快能这样搞吗
    FastAce
        25
    FastAce  
       2024-09-04 16:48:07 +08:00
    @Satansickle 不行,不能指定前缀(类似 prefix hint )
    piero66
        26
    piero66  
    OP
       2024-09-04 18:01:25 +08:00 via Android
    @Satansickle 不可能有,这种东西动了运营商蛋糕了,开源 OpenWrt 改源码还有希望
    FastAce
        27
    FastAce  
       2024-09-04 18:37:11 +08:00 via Android
    @piero66 已经有源码了,有空再折腾下
    FastAce
        28
    FastAce  
       2024-09-04 19:05:39 +08:00
    @flybird08765 编译的可以发下吗?我琢磨下 dhcpv6.script ,或者有完整镜像也可以
    flybird08765
        29
    flybird08765  
       2024-09-04 19:12:03 +08:00
    追踪到了/lib/netifd/proto/dhcpv6.sh ,是这里调用的 odhcpv6 ,有没有大佬一起研究研究
    flybird08765
        30
    flybird08765  
       2024-09-04 19:14:49 +08:00
    @FastAce http://142.171.30.131/odhcp6c
    flybird08765
        31
    flybird08765  
       2024-09-04 19:20:55 +08:00 via Android
    @FastAce 可以加 tg 吗?同步下我这边进展 https://t.me/yaozhizhao
    flybird08765
        32
    flybird08765  
       2024-09-04 20:10:41 +08:00 via Android
    openwrt 搞定了,不过好像没办法挑靓号
    piero66
        33
    piero66  
    OP
       2024-09-04 20:18:07 +08:00 via Android
    @flybird08765 折腾出来麻烦发出来造福 v 友吧
    FastAce
        34
    FastAce  
       2024-09-04 20:35:39 +08:00
    @flybird08765 修改 lib/netifd/proto/dhcpv6.sh 文件大概第 7 行 proto_dhcpv6_init_config()函数的 reqprefix 这行的属性域为 ip6addr 。
    proto_config_add_string 'reqprefix:ip6addr'
    FastAce
        35
    FastAce  
       2024-09-04 20:36:15 +08:00
    @flybird08765 可以固定了?先不说靓不靓
    flybird08765
        36
    flybird08765  
       2024-09-04 20:51:13 +08:00 via Android
    就是 34 楼的方法,改 reqprefix 变量 @FastAce
    FastAce
        37
    FastAce  
       2024-09-04 21:03:58 +08:00
    @flybird08765 没得 TG ,抱歉,目前是 OK 了?
    flybird08765
        38
    flybird08765  
       2024-09-04 21:07:53 +08:00 via Android
    统一回复下。
    1. 我静态编译了 odhcp6c x86 版本,替换/usr/sbin 下面同名文件。
    2. 修改/lib/netifd/proto/dhcpv6 .sh 里面的 reqprefix 变量,如 2409:xxxx:xxxx:100::/60 。
    3. 重新拨号即可。

    我们这边移动不能选靓号,联通可以。
    FastAce
        39
    FastAce  
       2024-09-04 21:09:47 +08:00
    @flybird08765 666~~~
    FastAce
        40
    FastAce  
       2024-09-04 21:10:16 +08:00
    @piero66 OP 可以置顶 WRT 的用法么?
    piero66
        41
    piero66  
    OP
       2024-09-04 21:42:31 +08:00 via Android
    @flybird08765 试试子网 id 那四位的规律,我们这电信最后一位必须要是 0 ,也就是 1000 、2000 这样的格式允许
    FastAce
        42
    FastAce  
       2024-09-05 01:24:47 +08:00
    @flybird08765
    有空了赶紧回家搞,结果好像不符合预期,不知道哪里没搞对
    1.IPV6 配置如下(指定了请求前缀)(配置之后,Luci 页面重启 pppoe-wan6 )
    ![image]( https://imgur.com/yyenVwE.png)
    2.查看 Luci IP 信息(查到的前缀不是指定的前缀,重复实验,按照截图的前缀获取(运营商下发的) 都不可以)
    ![image]( )
    3.单独执行 odhcp6c -s /lib/netifd/dhcpv6.script -P2408:9:8:7::/64 pppoe-WAN (有以下报错,难道是编译差异?我直接拿你的二进制替换的,还是使用姿势不对)
    ![image]( )
    4.DHCPV6.sh 变量配置如下(不知道这样写和你的有啥差别吗):
    ![image]( )

    辛苦有空帮忙看看,咱两操作上有啥区别么,或者 方不方便 直接打包下你的 openwrt 的镜像,万分感谢
    FastAce
        43
    FastAce  
       2024-09-05 02:07:19 +08:00
    @flybird08765

    执行了

    ps w|grep odhcp6c

    5035 root 1272 S odhcp6c -s /lib/netifd/dhcpv6.script -Ntry -P2408:XXXX:1234:5678::/60 -k -t120 pppoe-WAN

    看执行过程实际执行了 我指定的前缀配置,但是实际运营商给的始终不是这个 IPV6 PD (不知道是不是运营商的锅)
    flybird08765
        44
    flybird08765  
       2024-09-05 08:40:15 +08:00
    @FastAce 按你的步骤回复下:
    1. 我配置的 prefix 在 br-lan 上;
    2. 我是直接改的配置,Luci 的校验只包含数字,没法从 web 上保存;
    3. 单独执行是会报错,我昨天下午在这里纠结了很久,但是发现根本原因不在这里,应该是 env 不是 sh 的原因导致某些脚本和命令找不到;
    4. 我直接修改的-P 参数传值,没有动上面 config 变量,因为这个变量里面又是冒号又是斜杠,担心出现字符串切割问题
    flybird08765
        45
    flybird08765  
       2024-09-05 08:47:43 +08:00
    FastAce
        46
    FastAce  
       2024-09-05 13:16:06 +08:00
    @flybird08765 妥了,我是在 PPPOE_WAN 上配置的,没有问题了,br_lan 上死活拿不到 IPV6
    [root@KWrt:01:09 PM ~] # ps w|grep odhcp6c
    63973 root 1272 S odhcp6c -s /lib/netifd/dhcpv6.script -P2408:XXXX:XXXX:780::/60 -t120 pppoe-wan
    65110 root 1200 S grep odhcp6c
    [root@KWrt:01:09 PM ~] # curl ip.sb
    2408:XXXX:XXXX:780::1
    [root@KWrt:01:09 PM ~] # curl 6.ipw.cn
    2408:XXXX:XXXX:780::1
    FastAce
        47
    FastAce  
       2024-09-05 13:19:34 +08:00
    @flybird08765 更正
    产看了一下终端
    br-lan: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:15:5d:c2:99:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.199.198/24 brd 192.168.199.255 scope global br-lan
    valid_lft forever preferred_lft forever
    inet6 2408:XXXX:XXXX:780::1/64 scope global deprecated dynamic
    valid_lft 6718sec preferred_lft 0sec

    是 br-lan 拿到了这个 IP ,只不过在 Luci 上不展示(完美
    flybird08765
        48
    flybird08765  
       2024-09-05 13:40:25 +08:00
    @FastAce 哈哈,恭喜,低调使用,不建议贡献代码,懂技术的按照上面的讨论步骤自然可以搞定。门槛降低很有可能运营商会禁用这个功能。
    allenby
        49
    allenby  
       2024-09-06 13:02:33 +08:00 via Android
    @FastAce #16 不知道为啥 openwrt 很久没有合并 odhcpd 了
    FastAce
        50
    FastAce  
       2024-09-06 13:59:29 +08:00 via Android
    @allenby 可能觉得没啥大的 bug ,能用就行
    tpsxiong
        51
    tpsxiong  
       2024-09-06 17:16:26 +08:00
    同是 op 系统,按照操作下来,ps 看进程的前缀参数是正确的,但分配的依然是其他的前缀。说明上游不支持吗?
    FastAce
        52
    FastAce  
       2024-09-06 18:11:33 +08:00 via Android
    @tpsxiong 可以拿历史分配的,手动指定再次 pppoe 拨号,看看
    tpsxiong
        53
    tpsxiong  
       2024-09-06 18:12:18 +08:00 via Android
    @FastAce 也试过 依然分配新的
    FastAce
        54
    FastAce  
       2024-09-06 19:29:44 +08:00 via Android
    @tpsxiong 那估计不支持
    xiaoxiang69460
        55
    xiaoxiang69460  
       2024-09-07 10:29:52 +08:00
    修改/lib/netifd/proto/dhcpv6.sh ,替换编译的 odhcp6c 之后疯狂报错 user.err : invalid argument: '240e:xxxx:xxxx:abcd::/60',不知道是哪里的问题
    bigtwo
        56
    bigtwo  
       2024-09-07 13:12:49 +08:00
    @xiaoxiang69460 不用这么麻烦,各种教程都教复杂了,直接编译最新源码后新装或替换/usr/sbin/odhcp6c 就行,openwrt 那个 reqprefix 参数本身就支持 64 位以下字符,直接填前缀就行
    Techzero
        57
    Techzero  
       2024-09-07 13:53:59 +08:00
    最新的源码编译替换测试了一下,南京电信不行,ps -w | grep odhcp6c ,查看参数已经带上-P 前缀了,实际每次拨号还是会变,还是看地区吧

    提供一份源码和编译后的 ipk 、bin 文件(直接替换 /usr/sbin/odhcp6c ),有兴趣的可以试试,记得备份原来的文件
    Techzero
        58
    Techzero  
       2024-09-07 14:11:45 +08:00
    xiaoxiang69460
        59
    xiaoxiang69460  
       2024-09-07 16:37:00 +08:00
    @cnyang
    @Techzero
    是我菜了,那个代码默认下来是 master 分支,编译时忘记切换到 prefix-request 分支了,所以我自己编译了个和原版一样的 odhcp6c ,切换到正确的分支后在编译就没有遇到 invalid argument 错误了。
    但是实测江西电信不支持。折腾结束
    bigtwo
        60
    bigtwo  
       2024-09-08 11:01:17 +08:00
    @xiaoxiang69460
    @Techzero 多换几个前缀试试,不同时间也试试,我这换了上百个相邻的并加上:0000 才成功找到两个,凌晨成功率更高,只要重拨断线时间不太长就一直能用
    amyw495062
        61
    amyw495062  
       2024-09-09 18:04:14 +08:00
    这么厉害
    xiaoxiang69460
        62
    xiaoxiang69460  
       2024-09-10 18:43:43 +08:00
    @cnyang
    发现了,如果设置成他分配的 PD ,重播后暂时没有改。以前 IPv6-PD 重播必定改变。
    FastAce
        63
    FastAce  
       2024-09-10 22:50:03 +08:00 via Android
    @xiaoxiang69460 联通目前稳定,特意多次拨号,中断好几个小时拨号,都可以指定好几天前的 PD
    piero66
        64
    piero66  
    OP
       2024-09-11 10:59:44 +08:00 via Android
    @FastAce 还是看地区看 bras 设备,昨天帮苏州的朋友用 ROS 弄了下,中兴 m6000 ,可惜固定不了。我这里华为 me60 ,移动电信都随便固定
    huaxie1988
        65
    huaxie1988  
       2024-09-23 18:56:29 +08:00
    测试成功,但是感觉有了 ddns 也没多大用然后关了
    piero66
        66
    piero66  
    OP
       2024-09-23 19:25:39 +08:00 via Android
    @huaxie1988 有私有云用处就大了
    NoInternet
        67
    NoInternet  
       355 天前
    标记一下,还挺有用的,谢谢大佬
    wxhwz
        68
    wxhwz  
       282 天前
    @piero66 #64 一样,中兴 m6000 ,固定不了
    titanium98118
        69
    titanium98118  
       281 天前
    请教一下友善 R5c 应该要怎么编译?
    Linux r5c 5.15.167 #0 SMP PREEMPT Fri Sep 27 07:23:35 2024 aarch64 GNU/Linux
    我从甲骨文 arm 上 make 出来的 odhcp6c 在 r5c 上运行不了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5934 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 02:40 PVG 10:40 LAX 19:40 JFK 22:40
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86