Linux系统如何修改DNS服务器配置名称及地址?

在Linux系统中,DNS(域名系统)配置用于将域名解析为IP地址,正确配置DNS对于网络访问至关重要,本文将详细介绍Linux系统中修改DNS配置的多种方法,涵盖不同发行版和场景,并说明注意事项及验证方式。

linux如何修改dns名字

直接编辑/etc/resolv.conf文件

/etc/resolv.conf是Linux系统中传统的DNS配置文件,记录了系统使用的DNS服务器地址。此方法适用于临时修改或未使用网络管理工具的系统,但部分现代发行版(如Ubuntu 18.04+)可能被NetworkManager或systemd-resolved覆盖,重启后失效。

操作步骤:

  1. 使用文本编辑器(如vi、nano)打开文件,需root权限:
    sudo vi /etc/resolv.conf
  2. 添加或修改nameserver行,指定DNS服务器(如公共DNS:Google DNS 8.8.8、Cloudflare DNS 1.1.1):
    nameserver 8.8.8.8
    nameserver 1.1.1.1
  3. 保存文件(vi中按wq退出),无需重启服务,立即生效。

注意事项:

  • 若文件被系统自动管理(如Ubuntu默认由systemd-resolved管理),直接编辑可能被覆盖,需通过其他方法永久修改。
  • 可添加searchdomain行配置本地域名后缀(如search example.com),但非必需。

通过NetworkManager管理(适用于Ubuntu/Debian/CentOS/RHEL等)

NetworkManager是主流Linux发行版默认的网络管理工具,可通过命令行或配置文件永久修改DNS。

方法1:使用nmcli命令(推荐)

nmcli是NetworkManager的命令行工具,操作简洁且支持动态更新。

  1. 查看当前网络连接名称:
    nmcli connection show

    输出类似Wired connection 1eno1等,记下目标连接名(如默认连接为Wired connection 1)。

  2. 修改DNS配置(支持多个DNS,用空格分隔):
    sudo nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 1.1.1.1"
  3. 重启连接使配置生效:
    sudo nmcli connection up "Wired connection 1"

方法2:修改NetworkManager配置文件

  1. 编辑/etc/NetworkManager/NetworkManager.conf,确保[main]段包含dns=none(避免自动覆盖DNS):
    sudo vi /etc/NetworkManager/NetworkManager.conf

    添加或修改:

    [main]
    dns=none
  2. 编辑连接配置文件(路径通常为/etc/NetworkManager/system-connections/连接名.nmconnection),添加DNS配置:
    sudo vi /etc/NetworkManager/system-connections/Wired connection 1.nmconnection

    [ipv4][ipv6]段添加:

    dns=8.8.8.8;1.1.1.1;
  3. 重启NetworkManager服务:
    sudo systemctl restart NetworkManager

注意事项:

  • 修改前确保NetworkManager服务运行(systemctl status NetworkManager)。
  • 若使用DHCP获取IP,需在连接配置中禁用dhcp-dns选项(ipv4.ignore-auto-dns yes)。

通过systemd-resolved管理(Ubuntu 18.04+/CentOS 8+默认使用)

systemd-resolved是systemd提供的本地DNS解析服务,通过/etc/systemd/resolved.conf配置。

操作步骤:

  1. 编辑/etc/systemd/resolved.conf
    sudo vi /etc/systemd/resolved.conf
  2. 取消注释并修改DNS行,指定DNS服务器:
    DNS=8.8.8.8 1.1.1.1
  3. 取消注释DNSStubListener=no(若需直接使用/etc/resolv.conf):
    DNSStubListener=no
  4. 重启systemd-resolved服务:
    sudo systemctl restart systemd-resolved
  5. 创建/etc/resolv.conf的符号链接(指向systemd生成的文件):
    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

验证配置:

运行systemd-resolve --status,查看Current DNS Server是否为配置的DNS地址。

linux如何修改dns名字

网络接口配置文件(传统系统,如CentOS 7-、Debian旧版)

CentOS/RHEL系统:

编辑网络接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth0):

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

添加或修改DNS配置:

DNS1=8.8.8.8
DNS2=1.1.1.1

重启网络服务:

sudo systemctl restart network

Debian/Ubuntu旧版:

编辑/etc/network/interfaces文件,在接口配置中添加dns-nameservers

sudo vi /etc/network/interfaces

示例:

auto eth0
iface eth0 inet dhcp
    dns-nameservers 8.8.8.8 1.1.1.1

重启网络服务:

sudo systemctl restart networking

使用netplan配置(Ubuntu 18.04+ Server默认)

netplan是Ubuntu Server等系统的网络配置工具,通过YAML文件管理网络和DNS。

操作步骤:

  1. 编辑netplan配置文件(如/etc/netplan/01-netcfg.yaml):
    sudo vi /etc/netplan/01-netcfg.yaml
  2. 在配置中添加nameservers段,指定DNS地址:
    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: yes
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]
            search: [example.com]
  3. 应用配置:
    sudo netplan apply

DNS配置方法对比

方法 适用场景 配置方式 是否永久生效 优点 缺点
直接编辑resolv.conf 临时修改、无网络管理工具的系统 文件编辑 简单快速 易被系统服务覆盖
nmcli命令 NetworkManager管理的系统 命令行 动态更新、管理方便 需熟悉nmcli语法
systemd-resolved Ubuntu 18.04+/CentOS 8+默认 配置文件 系统级管理、支持本地缓存 配置稍复杂
网络接口配置文件 传统系统(CentOS 7-、Debian旧版) 接口文件编辑 直接控制网络接口 不同发行版文件路径差异
netplan Ubuntu 18.04+ Server等 YAML配置文件 声明式配置、易管理 需了解YAML语法

验证DNS配置是否生效

  1. 使用nslookup命令

    linux如何修改dns名字

    nslookup www.baidu.com

    若返回的DNS服务器为配置的地址(如8.8.8),则配置生效。

  2. 使用dig命令

    dig @8.8.8.8 www.baidu.com

    查看;; ANSWER SECTION是否返回正确的IP地址。

  3. 查看resolv.conf内容

    cat /etc/resolv.conf

    确认nameserver行为配置的DNS地址(注意:可能为符号链接,指向系统管理工具生成的文件)。

注意事项

  1. 备份配置文件:修改前建议备份原配置(如sudo cp /etc/resolv.conf /etc/resolv.conf.bak),避免配置错误导致网络问题。
  2. 避免配置冲突:若同时使用多种方法(如直接编辑resolv.conf和nmcli),可能导致配置覆盖,建议选择一种主要方式。
  3. DNS服务器可达性:确保配置的DNS服务器可访问(如ping 8.8.8.8测试网络连通性)。
  4. 重启服务的影响:修改网络或DNS配置后,重启相关服务(如NetworkManager、network)可能影响当前网络连接,建议在非高峰期操作。

相关问答FAQs

问题1:为什么我修改了/etc/resolv.conf中的DNS,重启后还是恢复了?
解答:现代Linux系统(如Ubuntu 18.04+、CentOS 8+)通常使用NetworkManager或systemd-resolved管理DNS配置,直接编辑/etc/resolv.conf会被这些服务自动覆盖,需通过对应的管理工具(如nmcli、编辑systemd-resolved.conf或netplan配置)进行永久修改,在Ubuntu系统中,可通过nmcli connection modify "连接名" ipv4.dns "DNS地址"设置,并重启连接使配置持久生效。

问题2:如何确认Linux系统当前使用的DNS服务器配置是否生效?
解答:可通过以下三种方式确认:(1)使用nslookupdig命令测试域名解析,如nslookup www.example.com,查看返回的DNS服务器是否为配置的地址;(2)直接查看/etc/resolv.conf(注意可能为符号链接,指向系统生成的文件,如/run/systemd/resolve/stub-resolv.conf);(3)若使用systemd-resolved,运行systemd-resolve --status,查看Current DNS Server字段是否显示配置的DNS地址,同时可检查DNS缓存状态。

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

(0)
酷番叔酷番叔
上一篇 2025年10月2日 15:44
下一篇 2025年10月2日 16:01

相关推荐

  • Linux如何查看当前连接用户?

    who 命令:查看当前登录用户命令:who输出示例:user1 pts/0 2023-10-05 14:30 (192.168.1.10)user2 tty1 2023-10-05 09:15 (:0)参数解析:用户名:登录用户的账户名,终端类型:pts/*:远程终端(如SSH连接),tty*:本地物理终端,登……

    2025年7月23日
    12600
  • Linux是如何检测U盘存储容量的原理?

    Linux检测U盘大小的过程是一个涉及硬件识别、内核驱动、设备管理和用户空间工具协同工作的复杂流程,从U盘插入物理接口到用户通过命令查看大小,整个流程可划分为硬件接入、内核处理、设备注册、信息暴露和用户空间读取五个阶段,每个阶段都有明确的技术机制和交互逻辑,硬件接入与USB子系统识别当U盘插入Linux系统的U……

    2025年8月27日
    11300
  • Linux下如何创建与配置镜像卷?

    在Linux系统中,创建镜像卷(通常指RAID 1)是提升数据可靠性的常用方法,通过将数据同时复制到多个磁盘实现冗余,即使单块磁盘故障也不会丢失数据,以下以主流工具mdadm为例,详细介绍Linux环境下镜像卷的完整搭建流程,准备工作在创建镜像卷前,需确保系统已安装mdadm工具(Debian/Ubuntu系统……

    2025年10月8日
    11700
  • 如何查看Linux系统CPU、内存、磁盘等资源使用情况?

    在Linux系统中,监控和管理系统资源是运维和开发工作的核心任务之一,通过合理使用命令行工具,可以实时掌握CPU、内存、磁盘、网络及进程等资源的使用情况,及时发现性能瓶颈或异常问题,以下是查看Linux各类资源的详细方法和常用命令,CPU资源查看CPU是系统的核心资源,查看CPU使用情况需关注整体负载、各核心利……

    2025年9月18日
    12700
  • 动态调试如何助力逆向工程?

    在Linux系统中,开启调试打印(通常称为dbgprint)是开发者诊断内核或驱动问题的关键手段,本文提供三种主流方法,涵盖动态调试、日志级别调整和内核参数配置,所有操作需root权限,并假设内核已启用动态调试支持(CONFIG_DYNAMIC_DEBUG=y),适用场景:精准控制特定内核模块、文件或函数的调试……

    2025年7月15日
    14700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信