Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于光猫重启后linux debian12丢失ipv6并不能自动重新获取 #1175

Closed
2 tasks done
bzlzm opened this issue Jun 27, 2024 · 20 comments
Closed
2 tasks done

关于光猫重启后linux debian12丢失ipv6并不能自动重新获取 #1175

bzlzm opened this issue Jun 27, 2024 · 20 comments
Labels
enhancement New feature or request

Comments

@bzlzm
Copy link

bzlzm commented Jun 27, 2024

功能描述

由于我光猫的问题,每次光猫重新从ISP处获取到ipv6前缀后,导致光猫下的linux debian12小主机一台并不能重新自动获取到新的有效的ipv6地址。此时ifconfig eth0查看仍是用的前期的失效的ipv6,可手动dhclient -6 -d eth0 重新获取ipv6

现在的问题是在docker ddns-go里配置页面 获取IP指令 使用指令dhclient -6 -d eth0出现以下指示

2024/06/27 13:40:08 获取IPv6结果失败! 未能成功执行命令:/bin/sh -c dhclient -6 -d eth0, 错误:"sh: dhclient: not found\n", 退出状态码:exit status 127

求各位吴彦祖指点!

解决的问题

No response

附加信息

No response

检查清单

  • 我已搜索同类问题,并确保没有我要提交的功能
  • 我已使用最新版本,并确保该功能仍未在最新版本中实现
@bzlzm bzlzm added the enhancement New feature or request label Jun 27, 2024
@jeessy2
Copy link
Owner

jeessy2 commented Jun 27, 2024

dhclient用全路径

@bzlzm
Copy link
Author

bzlzm commented Jun 27, 2024

dhclient用全路径

大佬,使用

image

仍然错误
2024/06/27 14:58:58 获取IPv6结果失败! 未能成功执行命令:/bin/sh -c /usr/sbin/dhclient -6 -d enp3s0, 错误:"sh: /usr/sbin/dhclient: not found\n", 退出状态码:exit status 127

ssh到小主机里手动 /usr/sbin/dhclient -6 -d enp3s0 仍然有效。

@jeessy2
Copy link
Owner

jeessy2 commented Jun 27, 2024

有这个命令? docker?

@bzlzm
Copy link
Author

bzlzm commented Jun 27, 2024

dhclient用全路径

image

@bzlzm
Copy link
Author

bzlzm commented Jun 27, 2024

有这个命令? docker?

我的ddnsgo运行在docker里的

@WaterLemons2k
Copy link
Contributor

如果没有,安装:

apk add dhclient

@bzlzm
Copy link
Author

bzlzm commented Jun 27, 2024

有这个命令? docker?

大概了解了,您的意思是docker里没有dhclient这个命令是吧?

@WaterLemons2k
Copy link
Contributor

有这个命令? docker?

大概了解了,您的意思是docker里没有dhclient这个命令是吧?

那大概率就是没有

@bzlzm
Copy link
Author

bzlzm commented Jun 27, 2024

有这个命令? docker?

大概了解了,您的意思是docker里没有dhclient这个命令是吧?

那大概率就是没有

docker exec 后 apk add dhclient 已安装了。不好意思,没绕过来这个弯,以为默认调用系统里的dhclient。目前没有报错,测评三两天后来报告,谢谢各位吴彦祖!

@Emtier
Copy link

Emtier commented Jun 28, 2024

一样的问题 debian12 从isp重新获取IPv6 后Linux不会获取新的IPv6前缀 需要重启服务器才会更新,现在换的 Ubuntu 22

@bzlzm
Copy link
Author

bzlzm commented Jun 28, 2024

一样的问题 debian12 从isp重新获取IPv6 后Linux不会获取新的IPv6前缀 需要重启服务器才会更新,现在换的 Ubuntu 22

这个锅可能不完全属于debian,我前期在此光猫桥接的情况下,使用x86爱快当路由就莫有问题。目前在docker ddnsgo里安装了dhclient命令,使用命令刷新IP,才测试了一天,IP还没变更过,但从日志里查看没有错误信息。但,但,但 日志也没有了更新信息了,使用 通过网卡获取 时,日志里一天会产生至少几十上百行的信息。 等等看吧

@GuoYuefei

This comment was marked as resolved.

@Emtier
Copy link

Emtier commented Jul 4, 2024

我yay -Syu升级了之后,没用ipv6的,就公网ipv4,现在也失效了,关键还是前几天发现远程连接不上了,离下次回家还有半个月,有IPV4有问题的人嘛?1. 我目前怀疑是不是获取ip的接口停止服务了,但是我配了三个。2. 要么就是升级之后没有自动重启。。。。

没遇到IPv4 问题 应该是你自己的问题

@bzlzm
Copy link
Author

bzlzm commented Jul 4, 2024

有这个命令? docker?

报告大佬,此方案无效。今天光猫IPV6前缀变更后仍然能不获取新前缀,是不是跟dhclient命令有关,这个命令不像ls 这类命令执行会自动终结,dhclient命令会一直处于执行中,导致ddnsgo不能退出这个命令所以不成功,这样也能解释docker logs ddnsgo里没有日志的问题。

@bzlzm
Copy link
Author

bzlzm commented Jul 4, 2024

image
image

docker exec 进入手动执行dhclient -6 -d enp3s0报错,网卡也获取不到IPV6,退出docker在debian12下执行dhclient -6 -d enp3s0然后重启docker restart ddnsgo后可用

@Emtier
Copy link

Emtier commented Jul 11, 2024

找到了问题解决办法:
a.进入路由器 找到IPv6选项 将自动配置选为Stateful,配置租约时间为300秒,自己可以根据需求调整,这样每过5分钟,Linux就会向路由器重新申请IPV6地址,如果IPV6地址没变,就续期。如果IPV6地址变更了,客户端也相应变更最新的IPV6地址。为什么要调整这个租约时间是因为很多时候默认租约是7天。Linux会等待7天后再去申请 新的IPv6。此时IPv6已经被运营商重新分配,所以是不能用的状态。
b.如果自己的路由器不能配置租约时间,可以去Linux写一个定时任务 定时刷新网络配置,
sudo systemctl restart NetworkManager
sudo dhclient -6 -r
sudo dhclient -6
以下是每五分钟刷新网络的配置步骤
1.打开终端,使用 sudo crontab -e 编辑 root 用户的定时任务:sudo crontab -e
2. 在crontab 文件的末尾添加以下内容:*/5 * * * * /bin/systemctl restart NetworkManager && /sbin/dhclient -6 -r && /sbin/dhclient -6
3. 保存并退出编辑器。
4. 确保 cron 服务正在运行,可以使用以下命令检查并启动 cron 服务:
sudo systemctl status cron
sudo systemctl start cron

@bzlzm
Copy link
Author

bzlzm commented Jul 12, 2024

找到了问题解决办法: a.进入路由器 找到IPv6选项 将自动配置选为Stateful,配置租约时间为300秒,自己可以根据需求调整,这样每过5分钟,Linux就会向路由器重新申请IPV6地址,如果IPV6地址没变,就续期。如果IPV6地址变更了,客户端也相应变更最新的IPV6地址。为什么要调整这个租约时间是因为很多时候默认租约是7天。Linux会等待7天后再去申请 新的IPv6。此时IPv6已经被运营商重新分配,所以是不能用的状态。 b.如果自己的路由器不能配置租约时间,可以去Linux写一个定时任务 定时刷新网络配置, sudo systemctl restart NetworkManager sudo dhclient -6 -r sudo dhclient -6 以下是每五分钟刷新网络的配置步骤 1.打开终端,使用 sudo crontab -e 编辑 root 用户的定时任务:sudo crontab -e 2. 在crontab 文件的末尾添加以下内容:*/5 * * * * /bin/systemctl restart NetworkManager && /sbin/dhclient -6 -r && /sbin/dhclient -6 3. 保存并退出编辑器。 4. 确保 cron 服务正在运行,可以使用以下命令检查并启动 cron 服务: sudo systemctl status cron sudo systemctl start cron

image
大佬,我这光猫没有这个 有状态 设置选项啊,您的猫这个选项在哪里能抓个图解一下吗?宽带配置页面里也莫有的,只有
PrefixDelegation
AutoConfigured
WANDelegated
这几个选项 选项框里有 静态 可咱们不是固定ipv6,选不了啊
用脚本的话实现很方便的,谢谢!

@Emtier
Copy link

Emtier commented Jul 12, 2024

找到了问题解决办法: a.进入路由器 找到IPv6选项 将自动配置选为Stateful,配置租约时间为300秒,自己可以根据需求调整,这样每过5分钟,Linux就会向路由器重新申请IPV6地址,如果IPV6地址没变,就续期。如果IPV6地址变更了,客户端也相应变更最新的IPV6地址。为什么要调整这个租约时间是因为很多时候默认租约是7天。Linux会等待7天后再去申请 新的IPv6。此时IPv6已经被运营商重新分配,所以是不能用的状态。 b.如果自己的路由器不能配置租约时间,可以去Linux写一个定时任务 定时刷新网络配置, sudo systemctl restart NetworkManager sudo dhclient -6 -r sudo dhclient -6 以下是每五分钟刷新网络的配置步骤 1.打开终端,使用 sudo crontab -e 编辑 root 用户的定时任务:sudo crontab -e 2. 在crontab 文件的末尾添加以下内容:*/5 * * * * /bin/systemctl restart NetworkManager && /sbin/dhclient -6 -r && /sbin/dhclient -6 3. 保存并退出编辑器。 4. 确保 cron 服务正在运行,可以使用以下命令检查并启动 cron 服务: sudo systemctl status cron sudo systemctl start cron

image 大佬,我这光猫没有这个 有状态 设置选项啊,您的猫这个选项在哪里能抓个图解一下吗?宽带配置页面里也莫有的,只有 PrefixDelegation AutoConfigured WANDelegated 这几个选项 选项框里有 静态 可咱们不是固定ipv6,选不了啊 用脚本的话实现很方便的,谢谢!

我用的是华硕路由器拨号的

@GuoYuefei

This comment was marked as resolved.

@Steven52065
Copy link

我也大概找到了解决的方法
首先路由器关闭DHCPv6,使用SLAAC分配IP(貌似因为DHCPv6分配的地址存在租期,在租期快到了之前设备不会重新请求一个新的地址,就导致了前缀无法更新),并且确保开启了RA(路由器通告报文)

下面是在debian12上修改的内容
/etc/network/interfaces

auto io
iface io inet loopback
allow-hotplug enp3s0
iface enp3s0 inet auto
iface enp3s0 inet6 auto

编辑 /etc/sysctl.conf 文件,并添加以下配置:

net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.enp3s0.accept_ra = 1

然后sudo sysctl -p或者直接重启
这样应该就能分配到ipv6并且会自动更新前缀了

@jeessy2 jeessy2 closed this as completed Aug 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants