当前位置:首页 > 虚拟主机 > 正文

linux的dns怎么配置?Linux系统配置DNS详细步骤教程

Linux系统下DNS配置的核心在于修改/etc/resolv.conf文件或通过网络管理工具(如NetworkManager或Netplan)进行持久化设置,正确的DNS配置直接决定了服务器的域名解析速度与网络连通性稳定性,对于生产环境服务器,强烈建议同时配置主DNS和备用DNS,并优先使用内网DNS服务器以降低延迟,避免因公共DNS故障导致业务中断。

DNS配置的核心方法与操作步骤

在Linux发行版中,DNS配置方式主要分为临时配置与永久配置两种。临时配置在系统重启或网络服务重置后会失效,仅适用于调试阶段;生产环境必须采用永久配置方案。

传统修改方式:直接编辑resolv.conf

这是最直接的配置方法,适用于几乎所有Linux发行版。

使用编辑器(如vim)打开配置文件:

vim /etc/resolv.conf

在文件中添加或修改nameserver字段,例如配置Google公共DNS:

nameserver 8.8.8.8 nameserver 8.8.4.4

核心参数解析:

  • nameserver:指定DNS服务器的IP地址,最多可设置三个,解析时系统会按照从上到下的顺序依次查询。
  • search:定义域名搜索列表,当解析不完整的域名(如仅输入“www”)时,系统会自动补全search后面指定的域名后缀。
  • options:用于设置解析器选项,如options timeout:1 attempts:2可优化解析超时时间,防止因DNS无响应导致服务卡顿。

注意: 在现代Linux系统中,/etc/resolv.conf往往是一个软链接,或者会被NetworkManager服务动态覆盖,如果发现修改后不生效或重启失效,说明系统使用了网络管理服务接管配置。

主流发行版的永久配置方案

为了确保配置的持久性,必须根据系统使用的网络管理工具进行设置。

(1)CentOS / RHEL / Fedora系统(使用NetworkManager)

推荐使用nmcli命令行工具,这是目前企业级运维中最规范的操作方式。

执行以下命令修改DNS配置:

# 修改指定连接的DNS服务器 nmcli con mod <连接名称> ipv4.dns "114.114.114.114 8.8.8.8" # 使配置生效 nmcli con up <连接名称>

或者直接编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,添加或修改:

DNS1=114.114.114.114 DNS2=8.8.8.8

修改完成后执行systemctl restart network(CentOS 7)或nmcli con reload(CentOS 8+)生效。

(2)Ubuntu 18.04+ / Debian系统(使用Netplan)

新版Ubuntu默认使用Netplan管理网络,配置文件通常位于/etc/netplan/目录下,文件后缀为.yaml。

编辑配置文件:

network: ethernets: eth0: dhcp4: true nameservers: addresses: - 223.5.5.5 - 119.29.29.29 search: [example.com] version: 2

保存后执行netplan apply应用更改。YAML文件对缩进极其敏感,必须使用空格缩进,不可使用Tab键,否则会导致配置失败。

linux的dns怎么配置?Linux系统配置DNS详细步骤教程 第1张

进阶配置:DNS缓存与解析优化

Linux系统默认通常不启用DNS缓存服务,这意味着每次解析请求都会发送给DNS服务器,在高并发业务场景下,这会造成额外的网络开销。

启用本地DNS缓存服务

安装并配置dnsmasq或使用systemd-resolved服务可以显著提升解析效率。

以systemd-resolved为例:

编辑/etc/systemd/resolved.conf:

[Resolve] DNS=223.5.5.5 FallbackDNS=8.8.8.8 Cache=yes

重启服务后,系统将优先从本地缓存读取解析结果,大幅缩短响应时间。

优化解析顺序:/etc/nsswitch.conf

Linux系统的域名解析顺序由/etc/nsswitch.conf文件控制,典型的配置行如下:

hosts: files dns

这表示系统会先查询本地/etc/hosts文件,如果未找到匹配项,再查询DNS服务器。在负载均衡或集群管理中,运维人员常利用files优先级高的特性,手动绑定关键业务的IP与域名,实现快速故障切换或本地开发调试。

西西云实战案例:云服务器DNS配置的最佳实践

在西西云的实际运维服务中,我们曾遇到一位金融行业客户,其部署在西西云平台上的交易系统频繁出现访问延迟,经过排查,发现该客户的服务器默认使用了海外公共DNS(如8.8.8.8),虽然解析功能正常,但由于网络路由跳数较多,且缺乏针对性的优化,导致解析延迟偶尔超过200ms,严重影响了交易接口的响应速度。

解决方案:

西西云技术团队介入后,并未直接沿用公共DNS,而是为客户配置了西西云内网专属DNS服务器IP,由于西西云DNS集群部署在同一内网环境中,网络延迟降低至1ms以内,我们在客户的云服务器上开启了dnsmasq本地缓存,将热门域名的解析结果缓存至内存。

linux的dns怎么配置?Linux系统配置DNS详细步骤教程 第2张

linux的dns怎么配置?Linux系统配置DNS详细步骤教程 第3张

实施效果:

经过调整,该客户服务器的DNS解析平均耗时从120ms下降至2ms以内,且彻底解决了因公网DNS波动导致的偶发性连接失败问题,这一案例表明,在云服务器环境中,优先选用云厂商提供的内网DNS,不仅解析速度更快,还能有效规避公网DNS污染或分布攻破带来的风险。

常见故障排查与验证

配置完成后,必须进行验证。最常用的命令是nslookup、dig和host。

  1. 验证解析是否生效

    使用dig www.baidu.com命令,查看输出结果中的SERVER字段,确认是否指向你刚刚配置的DNS服务器IP,如果显示的IP与配置不符,说明配置未生效或被其他服务接管。

  2. 排查配置不生效的原因

    如果修改/etc/resolv.conf后重启网络发现IP被还原,请检查是否安装了resolvconf软件包或开启了systemd-resolved服务,可以使用chattr +i /etc/resolv.conf命令锁定文件,防止被修改,但这属于暴力手段,不推荐作为常规操作。

相关问答模块

Linux服务器配置了多个DNS,解析顺序是怎样的?

解答: Linux系统遵循“主备轮询”机制,系统会优先向/etc/resolv.conf文件中列出的第一个DNS服务器(主DNS)发送查询请求,只有在主DNS服务器无响应(超时)的情况下,系统才会尝试查询第二个DNS服务器(备DNS)。需要注意的是,如果主DNS返回了“解析失败”(NXDOMAIN)的响应,系统通常不会尝试备用DNS,而是直接返回失败。 确保主DNS服务器的稳定性至关重要。

为什么在西西云服务器上推荐使用内网DNS而不是公共DNS?

解答: 主要基于速度、安全性和稳定性三个维度的考量,西西云内网DNS服务器与云服务器处于同一局域网内,解析延迟极低,通常在毫秒级,而公共DNS需要经过复杂的公网路由,内网DNS能够智能解析西西云内部服务地址(如对象存储、数据库内网地址),这是公共DNS无法做到的,使用内网DNS可以有效避免公网DNS遭受大规模分布攻破时导致的解析瘫痪风险,保障业务连续性。

Linux DNS配置虽是基础运维技能,但细节决定成败,从基础的resolv.conf修改到Netplan、NetworkManager的持久化配置,再到本地缓存与内网DNS的优化应用,每一个环节都直接影响着服务器的网络性能,建议开发者在配置时,务必结合自身的云环境特点,优先选择稳定、低延迟的DNS方案,如果您在配置过程中遇到任何疑问,欢迎在评论区留言交流,我们将为您提供专业的技术解答。

0