/etc/resolv.conf被篡改会导致DNS劫持或解析失败,需立即清除并阻断自动覆盖;通过ls -l、cat、head和dig命令可确认篡改及控制源;停止systemd-resolved、NetworkManager、dhclient等服务后解除软链接并重写配置。

Linux系统中/etc/resolv.conf被恶意篡改后,DNS解析可能被劫持到钓鱼服务器或无法解析域名,必须立即清除并阻断自动覆盖机制。
确认是否被篡改及当前控制源
运行 ls -l /etc/resolv.conf,若输出含 ->,说明是软链接,真实内容在别处;若为普通文件,用 cat /etc/resolv.conf 查看 nameserver 行是否包含陌生IP(如 10.0.0.1、192.168.1.100、或非公开DNS如 1.1.1.1 以外的非常规地址)。
检查文件头部注释:head -n 3 /etc/resolv.conf,若出现 # Managed by systemd-resolved 或 # Generated by NetworkManager,说明有服务正在接管;若无注释且 nameserver 是可疑IP,大概率已被手动植入恶意配置。
【关键判断】 若 dig @8.8.8.8 google.com +short 能返回结果,但 dig google.com +short 返回空或错误IP,基本可断定 resolv.conf 中的 nameserver 已被篡改并生效。
清除恶意配置并锁定文件
第一步:停止所有可能写入 resolv.conf 的服务。依次执行:sudo systemctl stop systemd-resolved 2>/dev/null →sudo systemctl stop NetworkManager 2>/dev/null →sudo pkill -f dhclient 2>/dev/null
第二步:解除软链接并清空旧内容。sudo unlink /etc/resolv.conf 2>/dev/null
sudo tee /etc/resolv.conf nameserver 223.5.5.5<br> nameserver 114.114.114.114<br> options timeout:1 attempts:2 rotate<br> EOF
第三步:加不可变属性防覆盖:sudo chattr +i /etc/resolv.conf。这一步必须做——否则重启或网络重连后,恶意进程可能再次写入。如后续需修改,先执行 sudo chattr -i /etc/resolv.conf。
排查并清理持久化篡改源头
方法一:检查 NetworkManager 是否残留自启配置
运行 grep -r "dns=" /etc/NetworkManager/conf.d/ 2>/dev/null,若返回结果含 dns=dnsmasq 或 dns=systemd-resolved,说明它仍试图接管DNS。此时应创建禁用文件:echo -e "[main]\ndns=none" | sudo tee /etc/NetworkManager/conf.d/99-disable-dns.conf
再重启:sudo systemctl restart NetworkManager
方法二:检查 dhclient 是否被注入恶意 DNS 指令
打开 /etc/dhcp/dhclient.conf,搜索 supersede domain-name-servers 或 prepend domain-name-servers。若存在指向私有网段或未知IP的行,将其整行删除或注释(前面加 #)。
方法三:验证网卡配置是否硬编码了恶意 DNS
对每个激活网卡(如 eth0、ens33),运行:nmcli connection show "Wired connection 1" | grep ipv4.dns。若输出含异常IP,执行:sudo nmcli connection modify "Wired connection 1" ipv4.dns "" ipv4.ignore-auto-dns yessudo nmcli connection down "Wired connection 1" && sudo nmcli connection up "Wired connection 1"
验证清除效果
执行 cat /etc/resolv.conf,确认只含你设定的两个国内公共DNS及 options 行,无多余 nameserver。
执行 lsattr /etc/resolv.conf,输出应含 i 字符(表示不可变属性已生效)。
运行 nslookup baidu.com 和 nslookup google.com,两次均应快速返回正确A记录,且查询服务器显示为 223.5.5.5 或 114.114.114.114。











