在Linux系统中,DNS(域名系统)配置的正确性直接影响网络访问能力,无论是浏览网页、连接远程服务还是进行域名解析,都依赖于DNS服务器的正确指向,Linux系统提供了多种DNS配置方式,涵盖临时修改、永久配置以及针对不同场景的调整方法,本文将详细介绍Linux系统中设置DNS的各类命令及操作步骤,帮助用户灵活应对不同需求。

临时修改DNS配置
临时修改DNS配置适用于快速测试或临时场景,重启网络服务或系统后配置将失效,不会影响系统原有的DNS设置。
使用resolv.conf文件直接修改
/etc/resolv.conf是Linux系统中存放DNS解析配置的核心文件,通过直接编辑该文件可立即生效。
-
查看当前配置:使用
cat /etc/resolv.conf命令,文件内容通常类似以下格式:nameserver 8.8.8.8 nameserver 114.114.114.114 search localdomain其中
nameserver行指定DNS服务器IP地址,可配置多个,按优先级顺序使用。 -
修改DNS配置:使用
echo命令或文本编辑器(如vi、nano)修改文件,将DNS服务器设置为Google的公共DNS(8.8.8.8)和Cloudflare DNS(1.1.1.1):sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf sudo echo "nameserver 1.1.1.1" >> /etc/resolv.conf
或使用
vi编辑器:sudo vi /etc/resolv.conf,手动修改或添加nameserver行后保存退出。
-
验证配置:使用
nslookup或dig命令测试域名解析。nslookup www.baidu.com,若返回IP地址为DNS服务器解析的结果,则配置成功。
永久修改DNS配置
临时配置在重启后失效,若需长期生效,需通过系统网络管理工具或配置文件进行设置,不同Linux发行版采用的工具略有差异,以下分别介绍常见发行版的操作方法。
基于Systemd的发行版(如Ubuntu 18.04+、CentOS 7+、Debian 9+)
此类系统使用NetworkManager管理网络配置,可通过命令行或图形界面修改DNS。
-
使用
nmcli命令(NetworkManager命令行工具):- 查看当前网络连接:
nmcli connection show,找到活动的网络连接名称(如ens33、eth0)。 - 修改DNS配置:以设置DNS为
8.8.8和1.1.1为例:sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 1.1.1.1"
- 重启网络服务使配置生效:
sudo nmcli connection down "连接名称" && sudo nmcli connection up "连接名称"
- 验证配置:
cat /etc/resolv.conf会发现DNS配置已更新,且nslookup测试正常。
- 查看当前网络连接:
-
使用
netplan工具(Ubuntu 18.04及以上版本默认使用):- 编辑配置文件:配置文件通常位于
/etc/netplan/目录下,如01-network-manager-all.yaml,使用vi打开文件:sudo vi /etc/netplan/01-network-manager-all.yaml
- 修改DNS配置:在
network部分添加nameservers地址,network: version: 2 ethernets: ens33: dhcp4: yes nameservers: addresses: [8.8.8.8, 1.1.1.1] - 应用配置:
sudo netplan apply
- 编辑配置文件:配置文件通常位于
基于System V的发行版(如CentOS 6、Debian 8等)
此类系统使用ifcfg配置文件管理网络,需通过修改网络接口配置文件实现DNS永久设置。

- 编辑网络接口配置文件:文件位于
/etc/sysconfig/network-scripts/下,如ifcfg-eth0,使用vi打开:sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
- 添加或修改DNS配置:在文件中添加以下两行(若不存在):
DNS1=8.8.8.8 DNS2=1.1.1.1
其中
DNS1为主DNS服务器,DNS2为备用。 - 重启网络服务:
sudo service network restart
针对特定场景的DNS配置
容器环境中的DNS配置
在Docker容器中,默认会继承宿主机的DNS配置,若需自定义DNS,可在运行容器时通过--dns参数指定:
docker run --dns 8.8.8.8 --dns 1.1.1.1 -it ubuntu /bin/bash
本地DNS服务器配置
若需搭建本地DNS服务器(如BIND、dnsmasq),需安装相应软件并配置服务,以dnsmasq为例:
- 安装dnsmasq:
sudo apt install dnsmasq(Ubuntu/Debian)或sudo yum install dnsmasq(CentOS)。 - 编辑配置文件:
sudo vi /etc/dnsmasq.conf,添加以下内容:server=8.8.8.8 address=/localhost/127.0.0.1
- 启动并启用服务:
sudo systemctl start dnsmasq sudo systemctl enable dnsmasq
DNS配置故障排查
若DNS解析异常,可通过以下步骤排查:
- 检查
/etc/resolv.conf:确认nameserver配置正确。 - 测试网络连通性:使用
ping 8.8.8.8检查是否能访问DNS服务器。 - 刷新DNS缓存:部分系统(如Ubuntu)需执行
sudo systemd-resolve --flush-caches刷新缓存;CentOS 7+可使用sudo nmcli networking off && sudo nmcli networking on。 - 检查防火墙规则:确保防火墙未阻止DNS端口(53/TCP和53/UDP)。
Linux系统中设置DNS的方法灵活多样,从临时修改resolv.conf到通过网络管理工具永久配置,需根据系统版本和使用场景选择合适的方式,临时配置适合快速测试,而永久配置则需结合发行版特性(如NetworkManager、netplan或ifcfg文件)进行调整,对于容器或本地服务器环境,还需考虑额外的DNS配置需求,掌握这些命令和方法,可有效解决DNS解析问题,保障网络服务的稳定运行。


















