检查/etc/resolv.conf配置,重启network服务,确认防火墙未拦截DNS,确保
CentOS 设置 DNS 无法解析域名的详细排查与解决方案
问题现象描述
在 CentOS 系统中配置 DNS 后,可能出现以下典型问题:
- 能访问 IP 地址但无法解析域名(如
ping google.com
提示未知主机) - 使用
nslookup
或dig
命令返回超时或无响应 - 部分域名可解析,其他域名无法解析
- 刚配置时正常,后续突然无法解析
常见原因分类
原因分类 | 触发场景 |
---|---|
网络连通性问题 | 服务器未接入互联网/DNS 服务器不可达 |
DNS 配置错误 | /etc/resolv.conf 文件配置错误或未生效 |
服务未运行 | DNS 客户端服务(如 NetworkManager、systemdresolved)未启动或异常 |
防火墙拦截 | firewalld/iptables 阻止了 DNS 请求端口(UDP 53) |
SELinux 限制 | SELinux 策略阻止 DNS 查询请求 |
缓存污染 | DNS 缓存中存在错误记录 |
软件冲突 | 多个 DNS 服务(如 systemdresolved 与 NetworkManager)冲突 |
系统性排查步骤
基础网络连通性检查
# 检查默认网关连通性 ping c 3 <默认网关IP> # ping 192.168.1.1 # 测试外部网络连通性 ping c 3 8.8.8.8 # Google公共DNS IP ping c 3 www.baidu.com # 测试域名解析基础功能
故障表现:
- 默认网关无法 ping 通:网络路由配置错误
- 8.8.8 无法 ping 通:服务器可能处于离线状态或网络阻断
- www.baidu.com 能 ping 通但其他域名不行:DNS 配置问题
DNS 服务状态检查
# 检查 NetworkManager DNS 配置 nmcli dev show | grep DNS # 检查 systemdresolved 服务状态 systemctl status systemdresolved # 查看当前生效的 DNS 配置 cat /etc/resolv.conf
关键检查点:
/etc/resolv.conf
是否包含有效 DNS 服务器(如nameserver 8.8.8.8
)- NetworkManager 管理的 DNS 配置是否被覆盖
- systemdresolved 服务是否正常运行(推荐启用)
防火墙规则验证
# 查看 firewalld 配置 firewallcmd listall # 测试 UDP 53 端口连通性 nc z u <DNS服务器IP> 53 # nc z u 8.8.8.8 53
典型问题:
- firewalld 默认可能未开放 UDP 53 端口
- 自定义防火墙规则误拦截 DNS 请求
- 云服务器安全组未放行 DNS 端口
SELinux 策略检查
# 查看 SELinux 模式 getenforce # 检查 DNS 相关策略布尔值 sesearch s dns_
关键策略:
dns_use_nftables
:允许使用 nftables 进行 DNS 转发nis_enabled
:影响 YP/NIS 服务(可能间接影响 DNS)httpd_can_network_connect
:影响 Web 服务发起的 DNS 查询
DNS 缓存清理
# 清理 systemdresolved 缓存 systemdresolve flushcaches # 清理 NetworkManager 缓存(需重启服务) systemctl restart NetworkManager
解决方案汇总
手动配置 /etc/resolv.conf
# 编辑配置文件 cat <<EOF > /etc/resolv.conf nameserver 8.8.8.8 # Google公共DNS nameserver 8.8.4.4 # Google备用DNS nameserver 114.114.114.114 # 阿里DNS EOF
注意事项:
- 确保文件权限为
644
,属主为root:root
- 如果使用 NetworkManager,需禁用其自动管理:
nmcli general hostname "yourhostname" nmcli con mod "yourconnection" ipv4.dns "" nmcli con mod "yourconnection" ipv4.ignoreautodns yes
启用并配置 systemdresolved
# 安装并启动服务 yum install y systemdresolved systemctl enable now systemdresolved # 配置监听范围(可选) echo "[Resolve] DNS=8.8.8.8 114.114.114.114" > /etc/systemd/resolved.conf systemctl restart systemdresolved
优势:
- 支持加密的 DNSoverTLS (DoT)
- 提供本地缓存加速
- 与 NetworkManager 兼容性好
防火墙规则配置
# 添加 UDP/TCP 53 端口规则 firewallcmd permanent addport=53/udp firewallcmd permanent addport=53/tcp firewallcmd reload
特殊场景处理
场景1:虚拟机/容器环境
- 问题:宿主机网络策略影响容器内 DNS
- 解决:在宿主机
/etc/resolv.conf
中添加公共 DNS,或为容器单独配置dns
参数
场景2:高可用集群环境
- 问题:多节点间 DNS 配置不一致导致解析失败
- 解决:通过 Ansible/Puppet 统一管理
/etc/resolv.conf
,或部署内部 DNS 服务器(如 bind)
最佳实践建议
最佳实践 | 实施方法 |
---|---|
使用冗余DNS配置 | 在 /etc/resolv.conf 中配置至少2个可靠DNS服务器 |
定期清理DNS缓存 | 每周执行 systemdresolve flushcaches |
监控DNS可用性 | 使用 Nagios/Zabbix 监控 ntpq 、dig 命令返回值 |
限制SELinux策略 | 根据实际需求关闭非必要的 SELinux 布尔值(谨慎操作) |
版本控制配置文件 | 将 /etc/resolv.conf 纳入版本管理系统(如 Git) |
相关问题与解答
Q1:如何测试当前系统的DNS解析优先级?
A:使用 systemdresolve
工具查询:
# 查询域名解析路径 systemdresolve query www.example.com preferfamily=ipv4
输出示例:
www.example.com: Succeeded with IPv4 address: [...IP...] via L3 cache (systemdresolved)
Link: enp0s3 [inet6 fe80::...] [route] [mng] [link/ether] [udp_support] [ipv6_support] [multicast] [dns_support] [arp_support] [lldp] [mdns] [ndisc] [router] [timesync] [vlan] [tls] [quic] [https] [http] [ftp] [ssh] [telnet] [ldap] [sip] [rtsp] [rtmp] [pop3] [imap] [smtp] [ftps] [sftp] [imaps] [pop3s] [sieve] [submit] [autoconfig] [autodiscover] [carddav] [caldav] [device] [printer] [scanner] [fax] [modem] [isdn] [bluetooth] [irda] [fido] [h323] [sipx] [mgcp] [rtpproxy] [rtspproxy] [sipgateway] [iax2] [asterisk] [freepbx] [trixbox] [elastix] [3cx] [pbxinaflash] [ippbx] [voipgrid] [skypeforbusiness] [teams] [zoom] [webex] [gotomeeting] [ringcentral] [8x8] [fuze] [grameen] [flowroute] [bandwidth] [twillo] [nexmo] [plivo] [tropo] [voxeo] [telesign] [apilayer] [msg91] [infobip] [smscentral] [clickatell] [clayys] [mocean] [mmg] [axiom] [diametriq] [dialogic] [portaone] [sipwise] [sippy] [opensips] [kamailio] [freeswitch] [asteriskari] [respoke] [plugx] [sipcapture] [rtpengine] [webrtc] [kurento] [janus] [jireh] [medooze] [licode] [openvidu] [kurento] [sproutvideo] [antmedia] [nginx] [apache] [haproxy] [varnish] [traefik] [caddy] [deimos] [rock] [kong] [traefik2] [oauth2proxy] [alb] [elb] [clb] [slb] [glb] [lb] [f5] [bigip] [radware] [citrix] [netscaler] [avivantage] [kemp] [loadbalancer.org] [percona] [mariadb] [mysql] [postgresql] [oracle] [sqlserver] [sybase] [db2] [sqlite] [firebird] [interbase] [frontbase] [informix] [greenplum] [netezza] [exasol] [vertica] [teradata] [parallel] [vectorwise] [actian] [paraccel] [kumo] [memsql] [couchbase] [cassandra] [mongodb] [redis] [memcached] [riak] [hbase] [dynamodb] [azurecosmosdb] [cockroachdb] [yugabytedb] [tidb] [oceanbase] [gaussdb] [polardb] [aurora] [redshift] [snowflake] [bigquery] [presto] [impala] [sparksql] [clickhouse] [druid] [pinot] [kylin] [hive] [hadoop] [flume] [kafka] [nifi] [logstash] [elasticsearch] [kibana] [beats] [prometheus] [grafana] [influxdb] [telegraf] [chronograf] [kapacitor] [victoriametrics] [timescaledb] [graphite] [carbon] [riemann] [collectd] [statsd] [librato] [datadog] [newrelic] [dynatrace] [appdynamics] [sumologic] [splunk] [elasticstack] [observability] [monitoring] [alerting] [tracing] [logging] [auditing] [compliance] [security] [encryption] [keymanagement] [certificatemanagement] [pki] [acme] [letsencrypt] [zerossl] [buypass] [comodo] [geotrust] [symantec] [thawte] [globalsign
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/202414.html