服务器测评网
我们一直在努力

Linux设置DNS命令有哪些?如何正确配置DNS服务器?

在Linux系统中,DNS(域名系统)配置的正确性直接影响网络访问能力,无论是浏览网页、服务通信还是系统更新,都依赖于DNS将域名解析为IP地址,掌握Linux环境下设置DNS的命令,是系统管理员和开发者的必备技能,本文将详细介绍通过不同方式配置DNS的方法,包括临时配置、永久配置以及常见问题的排查技巧,帮助读者全面理解Linux DNS设置的逻辑与实践。

Linux设置DNS命令有哪些?如何正确配置DNS服务器?

临时DNS配置:适用于快速测试或临时网络环境

临时配置的特点是不影响系统原有网络服务,重启后配置会失效,适合临时网络调试或测试场景,在Linux中,临时修改DNS主要通过resolv.conf文件实现,该文件是系统DNS解析的核心配置文件。

直接编辑resolv.conf文件

resolv.conf文件通常位于`/etc/目录下,使用文本编辑器(如vim、nano)可直接修改:

sudo vim /etc/resolv.conf

在文件中添加或修改nameserver指令,指定DNS服务器地址,

nameserver 8.8.8.8    # Google DNS
nameserver 8.8.4.4    # Google备用DNS
nameserver 114.114.114.114  # 国内DNS

保存后立即生效,但需注意,直接编辑此文件在某些Linux发行版(如Ubuntu 18.04+、CentOS 7+)中可能会被网络管理工具(如systemd-resolved、NetworkManager)覆盖,导致配置失效。

使用nslookup或dig命令验证配置

修改完成后,可通过nslookupdig命令测试DNS解析是否生效:

nslookup www.baidu.com
dig www.baidu.com

若返回正确的IP地址,说明临时配置成功。

永久DNS配置:确保系统重启后配置不丢失

临时配置仅适用于短期需求,生产环境中需通过系统网络管理工具实现永久配置,不同Linux发行版使用的网络管理工具不同,配置方法也存在差异。

基于Systemd的发行版(如CentOS 7+、RHEL 7+、Ubuntu 18.04+)

(1)使用NetworkManager管理工具

NetworkManager是现代Linux发行版默认的网络管理服务,可通过nmcli命令行工具配置DNS:

Linux设置DNS命令有哪些?如何正确配置DNS服务器?

# 查看当前网络连接名称
nmcli connection show

假设连接名称为ens33,执行以下命令添加DNS服务器:

sudo nmcli connection modify ens33 ipv4.dns "8.8.8.8 8.8.4.4"
sudo nmcli connection modify ens33 ipv4.ignore-auto-dns yes  # 忽略DHCP分配的DNS
sudo nmcli connection down ens33 && sudo nmcli connection up ens33  # 重启网络连接

(2)使用systemd-resolved服务

Ubuntu 18.04+等系统默认使用systemd-resolved服务管理DNS,其配置文件为/etc/systemd/resolved.conf

sudo vim /etc/systemd/resolved.conf

修改以下参数:

DNS=8.8.8.8 8.8.4.4
#Domains=~.

保存后重启服务:

sudo systemctl restart systemd-resolved

本地DNS解析会通过0.0.53(systemd-resolved的本地监听地址)进行,可通过resolvectl status查看配置状态。

基于Netplan的发行版(如Ubuntu 20.04+)

Ubuntu 20.04+等系统使用Netplan进行网络配置,其配置文件通常位于/etc/netplan/目录下(如01-netcfg.yaml):

sudo vim /etc/netplan/01-netcfg.yaml

编辑配置文件,添加DNS服务器:

network:
  version: 2
  ethernets:
    ens33:
      dhcp4: yes
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
        search: [localdomain]

保存后应用配置:

Linux设置DNS命令有哪些?如何正确配置DNS服务器?

sudo netplan apply

基于传统ifcfg文件的发行版(如CentOS 7之前)

对于使用ifcfg网络配置文件的系统(如CentOS 6、RHEL 6),可通过修改网卡配置文件实现:

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

添加或修改以下参数:

DNS1=8.8.8.8
DNS2=8.8.4.4
PEERDNS=no  # 禁止使用DHCP分配的DNS

保存后重启网络服务:

sudo service network restart

DNS配置高级技巧与问题排查

多DNS服务器配置策略

合理配置多个DNS服务器可提高解析可靠性,通常建议:

  • 优先使用公共DNS(如8.8.8.8、114.114.114.114)作为备用;
  • 企业环境中可结合内部DNS服务器,提升内部服务解析速度。
    注意:resolv.confnameserver的顺序决定了解析优先级,系统会依次尝试直到成功。

DNS缓存管理

Linux系统默认启用DNS缓存(如systemd-resolvednscd),若需刷新缓存:

# 对于systemd-resolved
sudo systemd-resolve --flush-caches
# 对于nscd
sudo nscd -i hosts

常见问题排查

  • 解析失败:检查/etc/resolv.conf是否正确,或使用dig @DNS_IP 域名指定DNS服务器测试;
  • 配置被覆盖:确认是否通过正确的网络管理工具配置,避免直接编辑resolv.conf
  • 网络服务重启失败:检查防火墙或SELinux设置,确保网络端口开放。

Linux DNS配置需根据系统发行版和版本选择合适的方法:临时配置可通过resolv.conf快速实现,而永久配置则依赖NetworkManager、Netplan或传统ifcfg文件,理解不同配置工具的原理,结合nslookupdig等命令进行验证,能有效解决DNS解析问题,在实际操作中,建议优先使用系统推荐的网络管理工具,确保配置的稳定性和可维护性,掌握这些技能,不仅能提升网络管理效率,还能为系统运维和故障排查奠定坚实基础。

赞(0)
未经允许不得转载:好主机测评网 » Linux设置DNS命令有哪些?如何正确配置DNS服务器?