找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 769|回复: 10

[红米ax6000] PPPoE拨号获取固定IPv6前缀的尝试,欢迎讨论。

[复制链接]
发表于 2024-7-31 23:19 | 显示全部楼层 |阅读模式
本帖最后由 zt406600 于 2024-8-2 00:58 编辑

一、背景
本人一直希望PPPoe拨号能获得固定的IPv6前缀,好处还是有的。
一是DDNS的频率变少,能有效避免更新后域名头几次仍解析出上一次更新的地址,体验不佳的问题。
二是可以小范围的自编前缀,方便记忆,也很酷。
三是可以方便防火墙的设置。以前也在恩山发贴求助过,但是没有大佬指点,无果,需求太偏门了。

最近看到odhcp6c的源码更新的IA-PD的选项,可以自编PPPoE-ipv6前缀的希望来了。
二、网络环境

坐标贵阳,1000M联通宽带,光猫型号记不得了,已改桥接,路由器为红米AX6000,官方固件1.0.67版本,已根据论坛教程解锁SSH,正常PPPoe是能获取到ipv6前缀委派。
三、原理
1、openwrt ipv4拨号成功后会进行ipv6协调,通过读取/etc/config/network配置文件,最终解析的参数会传递给odhcp6c,所以odhcp6c这个程序才是关键。

2、根据openwrt官方论坛大佬描述,原来的odhcp6c 无论如何,它始终在IA-PD请求消息中使用空前缀地址,也就是说,以前是不能自编前缀的。现在源码更新后,修改了原来的-P选项,可以向上游服务器发送自编前缀。
3、对应openwrt的配置选项为/etc/config/network   wan6 接口的option reqprefix。
看github上[color=var(--fgColor-muted,var(--color-fg-muted,#656d76))]/odhcp6c.c修改后源码usage()函数的描述。

4、那么我们修改/etc/config/network wan6该选项即可,如可以把前缀自编为:option reqprefix 240088:8::/64。

5、这样修改后,odhcp6c会在IA-PD中携带我们自编的前缀,请求上游服务器把这个前缀分配给我们,如果在上游服务器的地址池中这个前缀可以,那它就会分配给我们。

6、最终传递给odhcp6c 的命令行为:odhcp6c -s /lib/netifd/dhcpv6.script -Ntry -P2400:8:8:8::/64 -k -t120 pppoe-wan

7、当然这个前缀自定义要根据各地运营商的分配范围来,超出分配范围了肯定是不能成功的。

四、操作步骤

由于我的是小米官方固件,限制太多,相对较繁琐,我把我的步骤写出来,欢迎讨论。
如果已刷过机的,那就简单多了,替换掉系统的odhcp6c即可。

第一步
编译最新的odhcp6c源码,得到aarch64架构的odhcp6c,并上传到ax6000的/data目录中。可以cd /data目录 后,执行./odhcp6c -h看看能不能看到 -P <[pfx/]len> ,能看到说明没问题。

第二步
1、把/lib/netifd/proto/dhcpv6.sh和/usr/sbin/enable_ipv6这两个文件复制到/data目录中来。
2、修改/usr/sbin/enable_ipv6的大概125行,在## for pppoe ipv6, must set ipv6=auto注释的后面,EOF之间的代码修改为
  1. if [ "$proto_type" = "pppoe" ]; then
  2.         uci -q batch <<EOF
  3.         delete network.lan.ip6addr
  4.         del_list network.lan.ip6class=${iface}_6
  5.         set network.${iface}.ipv6='1'
  6.         set network.${iface}_6.proto='dhcpv6'
  7.         set network.${iface}_6.reqaddress='none'
  8.         set network.${iface}_6.ifname='@wan'
  9.         set network.${iface}_6.peerdns='0'
  10.         set network.${iface}_6.norelease='1'
  11.         set network.lan.ip6assign=${ip6assign}
  12.         commit network
  13. EOF
复制代码



3、修改lib/netifd/proto/dhcpv6.sh文件大概第7行proto_dhcpv6_init_config()函数的reqprefix这行的属性域为ip6addr
proto_config_add_string 'reqprefix:ip6addr'



第三步
在/data新建 miwifi_ipv6文件,加上可执行权限,并把这个文件加入启动项/data/auto_ssh/auto_ssh.sh中,让文件能开机启动,当然修改firewall文件添加单独开机启动也可以。文件内容如下:
  1. #!/bin/sh
  2. /bin/mount --bind /data/dhcpv6.sh /lib/netifd/proto/dhcpv6.sh 2>&-
  3. /bin/mount --bind /data/odhcp6c /usr/sbin/odhcp6c 2>&-
  4. /bin/mount --bind /data/enable_ipv6 /usr/sbin/enable_ipv6 2>&-
  5. touch /tmp/replace_sys_odhcp6c_ok
  6. return 0
复制代码


第四步:
修改/etc/config/network文件,结合实际情况,添加自编前缀。



第五步:

重启路由即可。


五、当前尝试的效果和存在问题
1、效果:一般情况下上游服务器基本可以分配自编前缀。

2、发现的问题:
重启后能加载mount --bind替换的文件,但是通过ps w|grep odhcp6c发现odhcp6c的命令行为

odhcp6c -s /lib/netifd/dhcpv6.script -Ntry -P2400:8:8:8::/64 -k -t120 eth1.5,
而不是预期的
odhcp6c -s /lib/netifd/dhcpv6.script -Ntry -P2400:8:8:8::/64 -k -t120 pppoe-wan
——也就是说,接口被识别为L2接口,而不是预期的L3接口,导致重启不能与上游服务器协调ipv6。

——/etc/config/network文件 wan6口的option ifname会被修改为wan口的ifname的值,我的是eth1.5。
每次重启路由器后可以通过手动执行/etc/init.d/ipv6 restart 重启ipv6解决。




最后,肯请懂的大佬指点下这个问题,也欢迎大家交流,交流才能进步呀。
由于文档体积超了,传不了截图,将就看看了。


只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2024-7-31 23:33 来自手机 | 显示全部楼层
跟你不一样 ,我第一件事就是关闭ipv6,影响去旅游。
楼主说的ddns获取失败,你用的是哪家。我用阿里+电信,从没获取失败。就算重新拨号也是十分钟就更新了。

点评

没有ipv4公网,只有用ipv6了,我也是阿里的,不过我每次更新后解析的还是旧的地址,要多ping几下才能得到更新的地址,体验不太好。  详情 回复 发表于 2024-8-2 01:01
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-7-31 23:36 | 显示全部楼层
为了上网海淘,我第一时间就关了V6
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-8-1 06:17 | 显示全部楼层
进来学习下,看看答案。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-8-1 07:15 | 显示全部楼层
运营商只能给你动态的,固定ip是需要花钱买的

点评

ipv6不花钱的。  详情 回复 发表于 2024-8-2 01:01
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-2 01:01 | 显示全部楼层
大兔子 发表于 2024-7-31 23:33
跟你不一样 ,我第一件事就是关闭ipv6,影响去旅游。
楼主说的ddns获取失败,你用的是哪家。我用阿里+电信 ...

没有ipv4公网,只有用ipv6了,我也是阿里的,不过我每次更新后解析的还是旧的地址,要多ping几下才能得到更新的地址,体验不太好。

点评

那无解了,换电信吧。 不信电信不给你ip4。  详情 回复 发表于 2024-8-2 12:10
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-2 01:01 | 显示全部楼层
1323344202 发表于 2024-8-1 07:15
运营商只能给你动态的,固定ip是需要花钱买的

ipv6不花钱的。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-8-2 08:30 | 显示全部楼层
zt406600 发表于 2024-8-2 01:01
ipv6不花钱的。

静态前缀和ip必须花钱,运营商不给你
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-8-2 12:10 来自手机 | 显示全部楼层
zt406600 发表于 2024-8-2 01:01
没有ipv4公网,只有用ipv6了,我也是阿里的,不过我每次更新后解析的还是旧的地址,要多ping几下才能得到 ...


那无解了,换电信
不信电信不给你ip4
ip6,目前多多少少有点问题,无解。

只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2024-8-3 21:34 | 显示全部楼层
只能用natmap或者lucky  搞 stun了    还是很方便 的 和公网一样的体验

点评

没用过,有空研究下,谢谢提醒。  详情 回复 发表于 2024-8-4 11:07
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-4 11:07 | 显示全部楼层
xxgg 发表于 2024-8-3 21:34
只能用natmap或者lucky  搞 stun了    还是很方便 的 和公网一样的体验

没用过,有空研究下,谢谢提醒。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-29 09:38

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表