jeessy2 / ddns-go

Simple and easy to use DDNS. Support Aliyun, Tencent Cloud, Dnspod, Cloudflare, Callback, Huawei Cloud, Baidu Cloud, Porkbun, GoDaddy, Namecheap, NameSilo...
MIT License
10.7k stars 1.23k forks source link

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

Open bzlzm opened 4 weeks ago

bzlzm commented 4 weeks ago

功能描述

由于我光猫的问题,每次光猫重新从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

检查清单

jeessy2 commented 4 weeks ago

dhclient用全路径

bzlzm commented 4 weeks ago

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 commented 4 weeks ago

有这个命令? docker?

bzlzm commented 4 weeks ago

dhclient用全路径

image

bzlzm commented 4 weeks ago

有这个命令? docker?

我的ddnsgo运行在docker里的

WaterLemons2k commented 4 weeks ago

如果没有,安装:

apk add dhclient
bzlzm commented 4 weeks ago

有这个命令? docker?

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

WaterLemons2k commented 4 weeks ago

有这个命令? docker?

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

那大概率就是没有

bzlzm commented 4 weeks ago

有这个命令? docker?

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

那大概率就是没有

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

Emtier commented 4 weeks ago

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

bzlzm commented 4 weeks ago

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

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

GuoYuefei commented 3 weeks ago

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

Emtier commented 3 weeks ago

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

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

bzlzm commented 3 weeks ago

有这个命令? docker?

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

bzlzm commented 3 weeks ago

image image

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

Emtier commented 2 weeks ago

找到了问题解决办法: 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

  1. 在crontab 文件的末尾添加以下内容:/5 * /bin/systemctl restart NetworkManager && /sbin/dhclient -6 -r && /sbin/dhclient -6
  2. 保存并退出编辑器。
  3. 确保 cron 服务正在运行,可以使用以下命令检查并启动 cron 服务: sudo systemctl status cron sudo systemctl start cron
bzlzm commented 2 weeks ago

找到了问题解决办法: 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 commented 2 weeks ago

找到了问题解决办法: 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 commented 1 week ago

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

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

哇哈哈,我就升级了下,除了这个啥都没操作~~~ 回家用内网查看了下,emmm,升级把我配置文件给换了。。。 刚查到,emmm,非常贴心的给我备份了,没有覆盖掉 截图_20240713230736

补充下,看了下文件时间,不是升级备份的,是刚开始配置完配置的

Steven52065 commented 1 week ago

我也大概找到了解决的方法 首先路由器关闭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并且会自动更新前缀了