Linux系统DNS配置主要位于
/etc/resolv.conf
,由nameserver
指令指定,若使用NetworkManager,则需通过nmcli
或图形界面修改连接Linux系统DNS配置详解
DNS配置文件核心位置
/etc/resolv.conf
文件
参数 | 说明 |
---|---|
nameserver |
指定DNS服务器IP地址(可配置多个) |
search |
定义本地域名后缀(可选) |
options |
设置DNS查询选项(如ndots 参数控制点分隔符解析规则) |
示例文件内容:
# Generated by NetworkManager nameserver 8.8.8.8 nameserver 8.8.4.4 search example.com options ndots:1
特殊说明
- 文件特性:系统启动时自动生成,可能被网络管理工具覆盖
- 权限要求:需root权限修改
- 生效方式:修改后立即生效(无需重启服务)
主流发行版DNS管理方式
Debian/Ubuntu系
管理工具 | 配置文件路径 | 特点 |
---|---|---|
NetworkManager | /etc/NetworkManager/NetworkManager.conf |
图形化界面优先,支持多连接独立配置 |
resolvconf |
/etc/resolvconf/resolv.conf.d/ |
传统方式,已逐步被弃用 |
RedHat/CentOS系
管理工具 | 配置文件路径 | 特点 |
---|---|---|
NetworkManager |
/etc/sysconfig/networkscripts/ifcfg* |
网络脚本集中管理 |
systemdresolved |
/etc/systemd/resolved.conf |
现代系统默认DNS解析器 |
ArchLinux系
管理工具 | 配置文件路径 | 特点 |
---|---|---|
netctl |
/etc/netctl/<profile> |
纯文本配置文件管理 |
systemdresolved |
/etc/systemd/resolved.conf |
与systemd集成度高 |
DNS管理工具操作指南
NetworkManager操作
# 查看当前DNS配置 nmcli dev show | grep DNS # 临时添加DNS服务器 nmcli con mod "Wired connection" ipv4.dns "8.8.8.8" # 永久修改DNS配置 echo e "[connection] interfacename=eth0 dns=8.8.8.8" >> /etc/NetworkManager/systemconnections/eth0.nmconnection
systemdresolved配置
# 修改配置文件 vim /etc/systemd/resolved.conf # 添加以下内容: [Resolve] DNS=8.8.8.8 DNS=8.8.4.4 Domain~.=example.com # 重新加载配置 systemctl restart systemdresolved
传统方式直接修改
# 编辑配置文件 vim /etc/resolv.conf # 添加DNS服务器 nameserver 114.114.114.114 nameserver 1.1.1.1
DNS故障排查流程
基础检查命令
命令 | 功能说明 |
---|---|
dig www.baidu.com |
测试DNS解析过程 |
nslookup |
交互式DNS查询工具 |
systemdresolve status |
查看systemdresolved服务状态(如果启用) |
journalctl u named |
查看DNS服务日志(适用于运行named服务的系统) |
常见问题解决方案
症状 | 可能原因 | 解决方案 |
---|---|---|
无法解析域名 | DNS服务器配置错误/网络中断 | 检查/etc/resolv.conf 配置测试网络连通性 ping 8.8.8.8 |
解析结果不正确 | 缓存未更新/搜索域配置错误 | 清除DNS缓存systemdresolve flushcaches 检查 search 参数配置 |
DNS服务启动失败 | 端口被占用/配置文件语法错误 | 检查named 服务状态验证配置文件语法 |
高级配置技巧
多DNS服务器策略
# 配置多个备用DNS服务器(按优先级排序) nameserver 1.1.1.1 # Cloudflare公共DNS nameserver 8.8.8.8 # Google公共DNS nameserver 114.114.114.114 # 阿里公共DNS
自定义搜索域
# 添加本地搜索域 search local.domain # 配置域名生成规则(ndots参数) options ndots:2 # 当主机名包含至少2个点时才进行完整域名查询
安全增强配置
# 启用DNSSEC验证(需要上游支持) options edns0 trustad
相关问题与解答
Q1:如何彻底清除Linux系统的DNS缓存?
A:根据系统使用的DNS解析服务选择对应命令:
- systemdresolved:
systemdresolve flushcaches
- nscd:
sudo systemctl restart nscd
- 无缓存服务: 直接删除
/var/cache/ldns/
目录下的缓存文件
Q2:修改DNS配置后不生效怎么办?
A:按以下步骤排查:
- 检查配置文件:确认
/etc/resolv.conf
或对应管理工具配置已正确修改 - 重启相关服务:
- NetworkManager:
systemctl restart NetworkManager
- systemdresolved:
systemctl restart systemdresolved
- NetworkManager:
- 验证网络连接:使用
ping
测试DNS服务器连通性 - 检查防火墙:确保UDP 53端口未被阻断(`firewallcmd list