Linux系统如何使用命令行设置DNS服务器的详细步骤?

在Linux系统中,DNS(域名系统)配置的正确性直接影响网络访问能力,通过命令行设置DNS是系统管理和运维中的基础技能,Linux系统设置DNS的方式因发行版和网络管理工具的不同而有所差异,本文将详细介绍常见配置方法,包括临时修改、永久配置及不同发行版的适配方案,并附上验证方法和注意事项。

linux如何用命令行设置dns

直接编辑/etc/resolv.conf文件(临时/永久配置)

/etc/resolv.conf是Linux系统中存放DNS配置的核心文件,记录了系统使用的DNS服务器地址,直接编辑此文件是最简单的方式,但需注意部分系统下该文件可能被网络管理工具(如NetworkManager、systemd-resolved)动态覆盖,导致修改不持久。

查看当前DNS配置

使用catless命令查看文件内容:

cat /etc/resolv.conf

输出示例:

# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8

其中nameserver行指定了DNS服务器地址,可配置多个(按优先级从上到下生效)。

修改DNS配置

使用文本编辑器(如vinano)打开文件:

sudo vi /etc/resolv.conf

在文件中添加或修改nameserver行,例如配置公共DNS(如Google DNS:8.8.8、Cloudflare DNS:1.1.1)或内网DNS:

nameserver 8.8.8.8
nameserver 1.1.1.1
nameserver 192.168.1.1  # 内网DNS,优先级低于前两者

保存退出(vi中按Esc后输入wq)。

永久生效的注意事项

  • NetworkManager管理(Ubuntu桌面版/CentOS 7+):直接编辑/etc/resolv.conf会被NetworkManager覆盖,需通过nmcli工具修改(见下文)。
  • systemd-resolved管理(Ubuntu 18.04+ Server):该工具会维护/etc/resolv.conf,建议通过修改resolved.conf配置或创建.network文件(见后文)。
  • 传统系统(如CentOS 6):直接编辑/etc/resolv.conf可永久生效,但需确保网络服务未使用动态管理工具。

使用NetworkManager的nmcli命令(Ubuntu/CentOS推荐)

NetworkManager是现代Linux发行版(如Ubuntu、CentOS 7+)默认的网络管理工具,通过nmcli命令可安全、永久地修改DNS配置,避免直接编辑文件被覆盖的问题。

查看当前网络连接

nmcli connection show

输出示例:

NAME    UUID                                  TYPE      DEVICE
ens33   12345678-1234-1234-1234-123456789012  ethernet  ens33

记录当前活动的连接名称(如ens33)。

linux如何用命令行设置dns

修改DNS配置

为指定连接添加DNS服务器,例如添加8.8.81.1.1

sudo nmcli connection modify "ens33" ipv4.dns "8.8.8.8 1.1.1.1"

若需配置IPv6 DNS,添加ipv6.dns参数:

sudo nmcli connection modify "ens33" ipv6.dns "2001:4860:4860::8888"

重启网络连接使配置生效

sudo nmcli connection down "ens33" && sudo nmcli connection up "ens33"

验证配置

检查/etc/resolv.conf是否更新,或使用nmcli查看DNS设置:

nmcli connection show "ens33" | grep dns

使用systemd-networkd配置文件(Ubuntu Server适用)

对于使用systemd-networkd作为网络管理工具的系统(如Ubuntu Server 18.04+),可通过创建或修改.network文件实现DNS永久配置。

创建网络配置文件

以网卡ens33为例,在/etc/systemd/network/目录下创建配置文件(如ens33.network):

sudo vi /etc/systemd/network/ens33.network

配置DNS和网卡信息

在文件中添加以下内容:

[Match]
Name=ens33
[Network]
DNS=8.8.8.8 1.1.1.1
Domains=example.com
DHCP=no
Address=192.168.1.100/24
Gateway=192.168.1.1

重启网络服务

sudo systemctl restart systemd-networkd

验证配置

检查/etc/resolv.conf是否包含配置的DNS服务器,或使用resolvectl status命令:

resolvctl status

传统ifcfg文件配置(CentOS/RHEL 6/7)

在较老的CentOS/RHEL系统中(如6、7版本),网络配置通过ifcfg文件管理,需在网卡配置文件中添加DNS相关参数。

编辑网卡配置文件

以网卡eth0为例,编辑/etc/sysconfig/network-scripts/ifcfg-eth0

sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

添加DNS配置

在文件中添加或修改以下参数:

linux如何用命令行设置dns

DNS1=8.8.8.8
DNS2=1.1.1.1
DOMAIN=example.com

重启网络服务

sudo systemctl restart network

验证配置

检查/etc/resolv.conf是否更新,或使用nmcli(若系统已安装NetworkManager)查看DNS设置。

不同发行版DNS配置方式对比

发行版/系统 推荐配置方式 配置文件/命令 重启服务 持久性说明
Ubuntu桌面版 nmcli命令 nmcli connection modify nmcli connection up/down 永久生效,不会被NetworkManager覆盖
CentOS 7+/RHEL 7+ nmcli命令 nmcli connection modify nmcli connection up/down 永久生效
Ubuntu Server 18.04+ systemd-networkd配置文件 /etc/systemd/network/*.network systemctl restart systemd-networkd 永久生效
CentOS 6/RHEL 6 ifcfg文件 /etc/sysconfig/network-scripts/ifcfg-* service network restart 永久生效

验证DNS配置是否生效

配置完成后,可通过以下命令验证DNS解析是否正常:

  1. 使用nslookup命令
    nslookup www.baidu.com

    若返回正确的IP地址(如181.38.148),则DNS配置生效。

  2. 使用dig命令
    dig www.baidu.com

    查看ANSWER SECTION中的IP地址是否正确。

  3. 检查resolv.conf文件
    cat /etc/resolv.conf

    确认nameserver行包含配置的DNS服务器。

注意事项

  1. 多DNS服务器优先级/etc/resolv.conf或网络配置文件中,nameserver按从上到下的顺序使用,若第一个DNS不可用,会自动尝试下一个。
  2. 避免直接修改关键文件:在NetworkManager或systemd-resolved管理的系统中,直接修改/etc/resolv.conf可能被覆盖,建议使用对应工具的命令或配置文件。
  3. 内网DNS与公共DNS结合:企业环境中通常建议同时配置内网DNS(如168.1.1)和公共DNS(如8.8.8),确保内网服务解析优先,同时提供外部域名解析兜底。

相关问答FAQs

Q1:修改DNS后不生效,如何排查?
A:可按以下步骤排查:

  1. 检查/etc/resolv.conf是否包含配置的DNS服务器,若内容被清空或还原,说明被网络管理工具覆盖,需改用对应工具的配置方式(如nmclisystemd-networkd)。
  2. 使用systemctl status network(或NetworkManagersystemd-networkd)检查网络服务状态,确保服务正常运行。
  3. 使用nslookupdig命令测试DNS解析,若仍失败,可能是防火墙(如iptablesfirewalld)阻止了DNS查询端口(53),需放行相关规则。
  4. 检查网卡配置是否正确(如IP地址、网关),确保网络连通性。

Q2:如何设置多个DNS服务器并指定优先级?
A:在Linux中,DNS服务器的优先级由配置文件中的顺序决定,越靠前的优先级越高,不同配置方式下设置方法如下:

  • 直接编辑/etc/resolv.conf:按优先级从上到下添加nameserver行,
    nameserver 192.168.1.1  # 内网DNS,优先级最高
    nameserver 8.8.8.8      # 公共DNS,次优先
    nameserver 1.1.1.1      # 备用DNS
  • 使用nmcli命令:通过空格分隔多个DNS地址,系统会按顺序使用:
    sudo nmcli connection modify "ens33" ipv4.dns "192.168.1.1 8.8.8.8 1.1.1.1"
  • systemd-networkd配置文件:在DNS参数中按空格分隔多个地址:
    DNS=192.168.1.1 8.8.8.8 1.1.1.1

    配置完成后重启网络服务,系统会按顺序依次尝试DNS服务器,确保解析的高可用性。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/32603.html

(0)
酷番叔酷番叔
上一篇 2025年9月29日 18:41
下一篇 2025年9月29日 18:50

相关推荐

  • NUMA的秘密是什么?

    在Linux系统中,NUMA(Non-Uniform Memory Access,非统一内存访问)是一种针对多处理器服务器的内存架构设计,旨在提升大型系统的性能,某些场景下(如特定应用程序优化或解决兼容性问题)可能需要关闭NUMA,以下是详细的操作方法和注意事项:作用:NUMA将CPU和内存划分为多个”节点……

    2025年6月25日
    16700
  • Linux系统下如何运行程序、命令及应用软件?

    在Linux系统中,“运行”是一个涵盖范围较广的概念,可能包括执行命令、运行脚本、启动程序、管理服务等,本文将从基础命令操作到程序运行、服务管理等多个维度,详细说明Linux下的运行方法,帮助用户全面掌握不同场景下的操作逻辑,基础命令的运行Linux的核心是命令行终端,几乎所有操作都可通过命令完成,运行基础命令……

    2025年9月29日
    12400
  • Linux系统安装配置DHCP服务器的具体步骤是什么?

    在Linux系统中安装和配置DHCP(动态主机配置协议)服务器,能够为局域网中的自动分配IP地址、子网掩码、网关等网络参数,简化网络管理,以下是详细的安装配置步骤,涵盖不同发行版、核心配置及常见问题处理,安装DHCP服务器软件不同Linux发行版的包管理器不同,需使用对应的命令安装:Ubuntu/Debian系……

    2025年9月9日
    11300
  • Linux系统如何监控TPS?

    在Linux系统中,TPS(Transactions Per Second,每秒事务数)是衡量系统事务处理能力的关键指标,尤其适用于数据库、文件系统、消息队列等场景的事务处理性能监控,事务可以理解为系统中完成的原子操作(如磁盘I/O、数据库提交、网络请求等),TPS越高说明系统在单位时间内能处理的事务越多,性能……

    2025年10月1日
    9100
  • 两个Linux系统之间如何传输文件?

    在Linux系统管理中,跨系统传输文件是常见需求,如服务器数据迁移、日志备份、文件共享等,本文将详细介绍几种主流的传输方法,涵盖其原理、操作步骤及适用场景,帮助用户根据实际需求选择最优方案,常用传输方法详解scp(Secure Copy)基于SSH协议,通过加密通道传输文件,简单易用,命令格式为scp [选项……

    2025年9月8日
    9000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信