问题出现得很突然,日志倒是留得挺全。手工把解析配置改成内网地址,重启网络服务之后又被改回默认值,内网域名解析时好时坏。

排查方向其实有限,先把可能性排一排。网络管理服务接管了这个文件,每次启动都重写。少数情况下是容器运行时会挂载自己的解析配置。

还有一种情况,云厂商的初始化脚本在开机时覆盖。

动手时先看文件头和实际内容

head -5 /etc/resolv.conf

随后确认是哪个服务在管理

systemctl status systemd-resolved NetworkManager

再往下在管理服务里配置而不是改文件

grep -n dns /etc/systemd/resolved.conf

等前面都确认过,再重启后验证是否保留

systemctl restart systemd-resolved && cat /etc/resolv.conf

这类改动我都写进变更记录,过两周再出问题时能对上号。

改完先别撤,确认这几项。重启网络之后解析配置保持不变,内网和公网域名都能正常解析。

这里还有个坑。直接改这个文件是最容易被覆盖的做法;要让配置持久,必须改上层管理服务的配置项。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189