在Linux系统中,DNS(域名系统)配置是确保网络连接正常的关键环节,它负责将人类可读的域名转换为机器可识别的IP地址,正确配置DNS不仅能加快域名解析速度,还能提升网络访问的安全性和稳定性,本文将详细介绍Linux系统中配置DNS的常用命令、配置文件及操作步骤,帮助用户全面掌握DNS配置方法。

临时DNS配置命令
临时配置DNS适用于快速测试或临时网络环境,重启网络服务或系统后配置将失效,主要使用resolv.conf文件进行修改,该文件是系统解析域名时优先查询的配置文件。
直接编辑resolv.conf文件
resolv.conf文件通常位于/etc/目录下,使用文本编辑器(如vim、nano)可直接修改:
sudo vim /etc/resolv.conf
在文件中添加或修改以下内容:
nameserver 8.8.8.8 # Google DNS
nameserver 8.8.4.4 # Google备用DNS
nameserver 114.114.114.114 # 国内DNS
其中nameserver关键字后跟DNS服务器IP地址,可配置多个,按优先级顺序查询。
使用nmcli命令(NetworkManager管理)
若系统使用NetworkManager管理网络(如CentOS 7+、Ubuntu 18.04+),可通过nmcli命令临时修改DNS:
sudo nmcli con mod "连接名称" ipv4.dns "8.8.8.8 8.8.4.4" sudo nmcli con down "连接名称" && sudo nmcli con up "连接名称"
连接名称可通过nmcli con show命令查看。
使用systemd-resolve命令(systemd系统)
对于使用systemd-resolved的系统(如Ubuntu 20.04+),可通过以下命令临时设置:
sudo systemd-resolve --set-dns=8.8.8.8 --interface=eth0
eth0为网卡名称,可通过ip addr命令查看。

永久DNS配置方法
永久配置DNS需要修改系统的网络配置文件或使用网络管理工具,确保重启后配置依然生效。
基于Netplan的配置(Ubuntu 18.04+)
Netplan是Ubuntu 18.04及以后版本默认的网络配置工具,配置文件通常位于/etc/netplan/目录下(如01-network-manager-all.yaml):
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
search: [localdomain]
配置完成后执行以下命令生效:
sudo netplan apply
基于NetworkScripts的配置(CentOS 7及以下)
CentOS 7及以下版本使用NetworkScripts,配置文件为/etc/sysconfig/network-scripts/ifcfg-eth0:
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
ONBOOT=yes
重启网络服务生效:
sudo systemctl restart network
基于systemd-networkd的配置
对于使用systemd-networkd的系统(如Debian 10+),配置文件位于/etc/systemd/network/目录下:
[Match] Name=eth0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8 114.114.114.114
启用并重启服务:
sudo systemctl enable systemd-networkd sudo systemctl restart systemd-networkd
DNS配置验证与故障排查
配置完成后,需验证DNS是否生效,排查常见问题。

常用验证命令
- nslookup命令:查询域名对应的IP地址
nslookup www.baidu.com
- dig命令:提供更详细的DNS解析信息
dig www.baidu.com
- host命令:简单的DNS查询工具
host www.baidu.com
- ping命令:测试域名解析后的连通性
ping www.baidu.com
常见问题排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 域名无法解析 | DNS配置错误 | 检查/etc/resolv.conf或网络配置文件 |
| 解析速度慢 | DNS服务器响应慢 | 更换为公共DNS或本地DNS服务器 |
| 某些域名无法解析 | 域名服务器故障或防火墙拦截 | 尝试不同DNS服务器,检查防火墙规则 |
| 配置后仍不生效 | 网络服务未重启或配置文件语法错误 | 重启网络服务,检查配置文件语法 |
高级DNS配置选项
除基础配置外,Linux系统还支持更高级的DNS功能,如自定义DNS搜索域、设置DNS超时时间等。
配置DNS搜索域
在resolv.conf中添加search关键字,可简化域名解析:
search example.com localdomain
nameserver 8.8.8.8
此时查询www会自动尝试www.example.com和www.localdomain。
修改DNS解析超时时间
通过/etc/resolv.conf的options选项调整:
options timeout:2 attempts:3 rotate
timeout:2:设置超时时间为2秒attempts:3:设置重试次数为3次rotate:轮询使用多个DNS服务器
使用本地DNS缓存
安装dnsmasq服务可启用本地DNS缓存,提高解析效率:
sudo apt install dnsmasq # Debian/Ubuntu sudo yum install dnsmasq # CentOS
配置文件/etc/dnsmasq.conf中可自定义DNS服务器和缓存规则,启动服务后系统将优先使用本地缓存。
Linux系统中的DNS配置是网络管理的基础技能,通过临时配置命令可快速调整解析设置,而永久配置则需要根据系统版本选择合适的工具(如Netplan、NetworkScripts等),配置完成后,需使用nslookup、dig等命令验证效果,并结合高级选项优化解析性能,掌握DNS配置方法不仅能解决日常网络问题,还能为搭建服务器、优化网络环境奠定基础,在实际操作中,建议根据系统特性和需求选择合适的配置方式,确保网络连接的稳定与高效。















