原因:DNS配置错误(/etc/resolv.conf无效)、网络连接故障(无法访问DNS服务器)、域名本身不存在或已过期。
排查步骤:
ping www.example.com,若提示“Name or service not known”则确认是DNS问题;用dig www.example.com查看“ANSWER SECTION”是否有IP返回(无则解析失败),并检查“SERVER”字段确认使用的DNS服务器是否正确。/etc/resolv.conf,确保包含有效的nameserver(如8.8.8.8、114.114.114.114);若文件被NetworkManager或systemd-resolved动态管理(修改后被覆盖),需调整这些服务的配置(如/etc/NetworkManager/NetworkManager.conf中添加dns=none禁用动态修改)。ping 8.8.8.8测试能否访问DNS服务器;若不通,检查网络接口(ip addr)、路由(ip route show default)或防火墙(iptables -L/firewall-cmd --list-ports)是否阻止UDP 53端口。nslookup example.com验证域名是否存在DNS记录。原因:本地DNS缓存(如systemd-resolved、nscd)包含旧记录,或缓存服务异常。
解决方法:
systemd-resolved:resolvectl flush-caches;nscd(名称服务缓存):nscd -i hosts;dnsmasq:重启服务systemctl restart dnsmasq。原因:网络接口故障、默认网关缺失、防火墙阻止DNS流量。
排查步骤:
ip addr确认接口已获取IP(如eth0: inet 192.168.1.100/24)且状态为“UP”;若未获取IP,检查DHCP服务(systemctl status dhcpd)或手动配置静态IP。ip route show default确认有默认路由(如default via 192.168.1.1 dev eth0);若无,手动添加ip route add default via 192.168.1.1。systemctl stop firewalld/iptables -F);若解析恢复,添加允许UDP 53端口的规则:firewall-cmd --add-service=dns --permanent(firewalld)或iptables -A INPUT -p udp --dport 53 -j ACCEPT(iptables)。原因:NetworkManager、DHCP客户端或systemd-resolved动态修改了/etc/resolv.conf(常见于动态IP环境)。
解决方法:
/etc/NetworkManager/NetworkManager.conf的[main]段添加dns=none,然后重启服务systemctl restart NetworkManager;/etc/dhcp/dhclient.conf,添加supersede domain-name-servers 8.8.8.8;(强制使用指定DNS);/etc/systemd/resolved.conf,在[Resolve]段添加DNS=8.8.8.8并重启服务systemctl restart systemd-resolved。原因:/etc/hosts文件配置错误、/etc/nsswitch.conf中hosts解析顺序不正确。
排查步骤:
/etc/hosts:确保包含本机IP和主机名映射(如127.0.0.1 localhost、192.168.1.100 myserver);避免重复或错误的条目(如将example.com指向错误IP)。/etc/nsswitch.conf:确认hosts行的配置顺序为files dns(优先使用本地hosts文件,再查询DNS),例如:hosts: files dns。getent hosts localhost验证本机解析是否正确(应返回127.0.0.1 localhost)。原因:未配置反向DNS记录(PTR记录)、DNS服务器未启用反向解析。
解决方法:
1.1.1.1对应example.com);用dig -x 1.1.1.1手动测试反向解析。named.conf(BIND)或对应配置文件,添加反向区域(如zone "1.1.1.in-addr.arpa" { type master; file "/etc/bind/db.1.1.1"; };)并配置PTR记录。