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

Linux如何通过命令行永久修改DNS服务器地址?

在Linux操作系统中,域名系统(DNS)负责将人类可读的网址(如www.google.com)转换为机器可识别的IP地址,修改DNS设置是常见的网络管理任务,旨在提升访问速度、增强网络安全或绕过网络限制,本文将系统地介绍在不同Linux发行版中修改DNS的多种方法,从临时配置到永久生效,确保您能根据自身环境选择最合适的方案。

理解核心文件:/etc/resolv.conf

在所有Linux系统中,/etc/resolv.conf是DNS客户端的核心配置文件,它包含了DNS服务器的IP地址,一个典型的文件内容如下:

# This file is managed by man:systemd-resolved(8). Do not edit.
nameserver 127.0.0.53
options edns0 trust-ad
search localdomain

这里的nameserver行指定了DNS服务器,在现代Linux发行版中,直接手动编辑此文件通常不是最佳实践,因为该文件往往由网络管理服务(如NetworkManagersystemd-resolved)动态生成,任何直接修改都可能在系统重启或网络服务重启后被覆盖。

使用 NetworkManager 修改DNS(适用于 RHEL/CentOS/Fedora 等)

NetworkManager是许多主流发行版,特别是Red Hat系列,默认使用的网络管理工具,它提供了命令行和图形界面两种方式来管理网络设置,包括DNS。

使用 nmcli 命令行工具

nmcli功能强大,适合脚本化和远程管理。

  1. 查看网络连接名称:

    nmcli connection show

    这会列出所有网络连接,如“Wired connection 1”或“ens33”。

  2. 修改指定连接的DNS服务器:

    sudo nmcli connection modify "Wired connection 1" ipv4.dns "8.8.8.8 1.1.1.1"

    这里将Google的8.8.8和Cloudflare的1.1.1设置为DNS服务器,请将连接名称替换为您自己的。

  3. 应用更改并重启连接:

    Linux如何通过命令行永久修改DNS服务器地址?

    sudo nmcli connection up "Wired connection 1"

    此操作会保存配置并立即生效,且在系统重启后依然保留。

使用 systemd-resolved 修改DNS(适用于 Ubuntu 18.04+、Debian、Arch 等)

systemd-resolved是现代Ubuntu、Debian和Arch Linux等发行版中广泛使用的本地DNS解析服务,它通过/etc/systemd/resolved.conf文件进行配置。

  1. 编辑配置文件:
    使用您喜欢的文本编辑器(如nano或vim)打开文件:

    sudo nano /etc/systemd/resolved.conf
  2. 配置DNS服务器:
    [Resolve]部分,找到并修改(或取消注释并添加)以下行:

    [Resolve]
    DNS=8.8.8.8 1.1.1.1
    FallbackDNS=9.9.9.9
    #Domains=
    #LLMNR=no
    #MulticastDNS=no
    #DNSSEC=no
    #DNSOverTLS=no
    #Cache=yes

    DNS=指定了首选的DNS服务器,FallbackDNS=则在主DNS不可用时使用。

  3. 重启服务并更新符号链接:
    保存文件后,重启systemd-resolved服务以应用更改:

    sudo systemctl restart systemd-resolved

    为了确保/etc/resolv.conf指向正确的存根文件,可以执行:

    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

    此方法同样能实现永久生效。

    Linux如何通过命令行永久修改DNS服务器地址?

使用 Netplan 修改DNS(适用于 Ubuntu 18.04+ 服务器版)

Ubuntu Server 18.04及更高版本使用Netplan作为网络配置工具,其配置文件位于/etc/netplan/目录下,通常为.yaml格式。

  1. 找到并编辑YAML配置文件:

    sudo nano /etc/netplan/01-netcfg.yaml
  2. 在配置中添加DNS:
    在对应的网络接口配置下,添加nameservers部分:

    network:
      version: 2
      ethernets:
        ens33:
          dhcp4: yes
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]
  3. 应用配置:
    保存文件后,运行以下命令使配置生效:

    sudo netplan apply

    netplan会自动处理后台服务的配置,使其永久生效。

验证DNS设置

无论采用哪种方法,验证配置是否成功都至关重要,可以使用以下命令:

  • 查看当前生效的DNS:

    cat /etc/resolv.conf

    或对于systemd-resolved

    Linux如何通过命令行永久修改DNS服务器地址?

    resolvectl status
  • 使用查询工具测试:

    nslookup example.com

    或使用更强大的dig命令:

    dig example.com

    查看命令输出,确认解析请求是由您新设置的DNS服务器处理的。

方法总结与对比

下表总结了不同修改DNS方法的特点:

方法 命令/文件 适用场景 持久性
NetworkManager nmcli RHEL/CentOS/Fedora、桌面版Ubuntu 永久
systemd-resolved /etc/systemd/resolved.conf Ubuntu/Debian/Arch (现代系统) 永久
Netplan /etc/netplan/*.yaml Ubuntu Server (18.04+) 永久
临时修改 echo "nameserver ..." > /etc/resolv.conf 临时测试或救援模式 重启失效

选择正确的DNS修改方法,不仅能解决当前的网络问题,还能确保系统配置的稳定性和可维护性,理解您所用Linux发行版的网络管理架构是成功配置的关键。

赞(0)
未经允许不得转载:好主机测评网 » Linux如何通过命令行永久修改DNS服务器地址?