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

18 天前
 piero66
![1000013040.webp]( https://j.teno.cx/root/2024/09/01/66d47e29cf906.webp)

虽然之前有人发了,但实在太神奇所以再补充下,原理可以看参考资料:,https://www.v2ex.com/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 不支持有状态)
4504 次点击
所在节点    宽带症候群
64 条回复
piero66
15 天前
@flybird08765 试试子网 id 那四位的规律,我们这电信最后一位必须要是 0 ,也就是 1000 、2000 这样的格式允许
FastAce
15 天前
@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
15 天前
@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
14 天前
@FastAce 按你的步骤回复下:
1. 我配置的 prefix 在 br-lan 上;
2. 我是直接改的配置,Luci 的校验只包含数字,没法从 web 上保存;
3. 单独执行是会报错,我昨天下午在这里纠结了很久,但是发现根本原因不在这里,应该是 env 不是 sh 的原因导致某些脚本和命令找不到;
4. 我直接修改的-P 参数传值,没有动上面 config 变量,因为这个变量里面又是冒号又是斜杠,担心出现字符串切割问题
flybird08765
14 天前
FastAce
14 天前
@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
14 天前
@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
14 天前
@FastAce 哈哈,恭喜,低调使用,不建议贡献代码,懂技术的按照上面的讨论步骤自然可以搞定。门槛降低很有可能运营商会禁用这个功能。
allenby
13 天前
@FastAce #16 不知道为啥 openwrt 很久没有合并 odhcpd 了
FastAce
13 天前
@allenby 可能觉得没啥大的 bug ,能用就行
tpsxiong
13 天前
同是 op 系统,按照操作下来,ps 看进程的前缀参数是正确的,但分配的依然是其他的前缀。说明上游不支持吗?
FastAce
13 天前
@tpsxiong 可以拿历史分配的,手动指定再次 pppoe 拨号,看看
tpsxiong
13 天前
@FastAce 也试过 依然分配新的
FastAce
13 天前
@tpsxiong 那估计不支持
xiaoxiang69460
12 天前
修改/lib/netifd/proto/dhcpv6.sh ,替换编译的 odhcp6c 之后疯狂报错 user.err : invalid argument: '240e:xxxx:xxxx:abcd::/60',不知道是哪里的问题
cnyang
12 天前
@xiaoxiang69460 不用这么麻烦,各种教程都教复杂了,直接编译最新源码后新装或替换/usr/sbin/odhcp6c 就行,openwrt 那个 reqprefix 参数本身就支持 64 位以下字符,直接填前缀就行
Techzero
12 天前
最新的源码编译替换测试了一下,南京电信不行,ps -w | grep odhcp6c ,查看参数已经带上-P 前缀了,实际每次拨号还是会变,还是看地区吧

提供一份源码和编译后的 ipk 、bin 文件(直接替换 /usr/sbin/odhcp6c ),有兴趣的可以试试,记得备份原来的文件
Techzero
12 天前
xiaoxiang69460
12 天前
@cnyang
@Techzero
是我菜了,那个代码默认下来是 master 分支,编译时忘记切换到 prefix-request 分支了,所以我自己编译了个和原版一样的 odhcp6c ,切换到正确的分支后在编译就没有遇到 invalid argument 错误了。
但是实测江西电信不支持。折腾结束
cnyang
11 天前
@xiaoxiang69460
@Techzero 多换几个前缀试试,不同时间也试试,我这换了上百个相邻的并加上:0000 才成功找到两个,凌晨成功率更高,只要重拨断线时间不太长就一直能用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1069456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX