问题出现得很突然,日志倒是留得挺全。手工把解析配置改成内网地址,重启网络服务之后又被改回默认值,内网域名解析时好时坏。
排查方向其实有限,先把可能性排一排。网络管理服务接管了这个文件,每次启动都重写。少数情况下是容器运行时会挂载自己的解析配置。
还有一种情况,云厂商的初始化脚本在开机时覆盖。
动手时先看文件头和实际内容
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
这类改动我都写进变更记录,过两周再出问题时能对上号。
改完先别撤,确认这几项。重启网络之后解析配置保持不变,内网和公网域名都能正常解析。
这里还有个坑。直接改这个文件是最容易被覆盖的做法;要让配置持久,必须改上层管理服务的配置项。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。