首先,系统运行正常,并成功地协商了一个IPv6地址并按预期操作。
一段时间后,系统停止发送DHCP请求,IPv6在租约超时后失败,但IPv4继续运行。可以通过重新启动wide dhcpv6 6-客户端服务来恢复系统。这表明问题在于这项服务,但我的互联网搜索还没有找到根本原因。记录了以下消息:
dhcp6c[]: client6_send: transmit failed: Network is unreachable我还没有找到任何其他相关的错误信息。
虽然错误消息表明网络层有问题,但重新启动清除问题的服务会表明情况并非如此。随着IPv4继续运行,由于几乎所有的IPv6服务都是双重堆叠的,尚不清楚这种情况发生的频率。它今天被手动恢复,最后一次恢复是在两周前,但是日志显示它在不到5天的时间内就失败了。
System Description: Debian GNU/Linux 11 (bullseye)
DHCPc6 version: wide-dhcpv6-client/stable,now 20080615-23 amd64 这个问题的根本原因似乎是,如果网络层没有做好准备,那么服务就无法应付,并且会出错。可以通过重新启动服务来解决这个问题,然后恢复正常运行:
systemctl restart wide-dhcpv6-client.service网络上似乎很少有这方面的报道。
此外,如果服务在网络准备好之前就启动了,则会看到一个不同的错误,即更多的终端,吸引更多的注意和更明显的修复:
wide-dhcpv6-client[]: failed!
systemd[1]: wide-dhcpv6-client.service: Control process exited, code=exited, status=1/FAILURE
systemd[1]: wide-dhcpv6-client.service: Failed with result 'exit-code'.发布于 2023-05-03 13:07:33
虽然不是修复,但我已经实现了一个解决方案,直到维护人员修复了这个问题。这是非常初级的,但暂时可以。我在系统启动时将此脚本作为服务运行。
import time
import subprocess
import select
filename="/var/log/syslog"
action_map = {
"client6_send: transmit failed: Network is unreachable": {"action": "sudo systemctl restart wide-dhcpv6-client.service",
"cooldown": 5},
"wide-dhcpv6-client.service: Control process exited, code=exited, status=1/FAILURE": {"action": "sudo systemctl start wide-dhcpv6-client.service",
"cooldown": 5}
}
def monitor(filename):
f = subprocess.Popen(['tail','-F',filename],\
stdout=subprocess.PIPE,stderr=subprocess.PIPE)
p = select.poll()
p.register(f.stdout)
while True:
if p.poll(1):
check_output(str(f.stdout.readline()))
def check_output(syslog_line):
for action_key in action_map.keys():
if action_key in syslog_line:
subprocess.Popen([action_map[action_key]['action'].split()],\
stdout=subprocess.PIPE,stderr=subprocess.PIPE)
time.sleep(action_map[action_key]['cooldown'])
print("Ran:", action_map[action_key]['action'])
print("Starting syslog_actioner")
monitor(filename)发布于 2023-05-03 17:05:43
如果IPv6没有网络可达性,那么它的链路本地地址可能会出现问题,因为即使还没有分配全局单播或唯一本地地址,主机也应该使用它的链路本地地址(主机主要使用EUI-64自动配置)与路由器连接。
当您看到上述错误消息时:
FE80::/10)?ping6路由器和主机的(平本身)链路-本地地址吗?如果仍然不清楚出了什么问题,那么检查是否没有设置无状态地址自动配置(SLAAC),只是为了确保它没有中断与DHCP6客户端:
netctl,会否确保没有配置stateless参数?iface eth0 inet6 auto设置,可以检查主机的接口配置吗?尽管在主机上使用IPv6地址配置还有另一种方法,称为SLAAC,所以您根本不需要使用DHCP,而且通过使用它,您在地址配置方面也减少了网络利用率(对于负载大量主机的网络来说很好)。但是,如果您需要获得DHCP选项值(如DNS ),则仍然需要一个DHCP服务器。
https://unix.stackexchange.com/questions/742943
复制相似问题