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

Linux命令如何设置DNS?详解操作步骤与常见问题

Linux 作为一款开源的操作系统,凭借其稳定性和灵活性在服务器、开发环境及个人用户中广泛应用,DNS(域名系统)配置是网络管理的基础操作,正确的 DNS 设置能够确保系统高效、稳定地访问互联网资源,本文将详细介绍在 Linux 系统中通过命令行设置 DNS 的多种方法,涵盖临时配置、永久配置以及不同发行版的差异,帮助用户根据实际需求选择合适的方案。

Linux命令如何设置DNS?详解操作步骤与常见问题

临时 DNS 配置:立即生效,重启失效

临时 DNS 配适用于快速测试或临时网络环境,其特点是配置即时生效,但系统重启或网络服务重启后将恢复默认设置,主要方法包括修改 /etc/resolv.conf 文件和使用 nmcli(NetworkManager)、netplan 等网络管理工具命令。

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

/etc/resolv.conf 是 Linux 系统中存储 DNS 服务器地址的核心文件,直接编辑该文件可快速修改 DNS 配置。

操作步骤:

  • 使用 vimnano 等文本编辑器打开文件,
    sudo vim /etc/resolv.conf
  • 在文件中添加或修改 nameserver 行,指定 DNS 服务器地址(如公共 DNS 服务器:8.8.8114.114.114),示例如下:
    nameserver 8.8.8.8
    nameserver 114.114.114.114
  • 保存文件后,配置立即生效。

注意事项:
在基于 systemd-resolved 的系统中(如 Ubuntu 18.04+、CentOS 8+),/etc/resolv.conf 可能是符号链接,直接编辑会被系统覆盖,此时需通过其他工具(如 netplanNetworkManager)永久修改配置。

使用 nmcli 命令(NetworkManager 环境)

对于使用 NetworkManager 管理网络的系统(如 Ubuntu、Fedora、CentOS 7+),可通过 nmcli 命令临时修改 DNS。

操作步骤:

  • 查看当前网络连接名称:
    nmcli connection show
  • 临时为指定连接(如 ens33)添加 DNS 服务器:
    sudo nmcli connection modify ens33 ipv4.dns "8.8.8.8 114.114.114.114"
  • 重启网络连接使配置生效:
    sudo nmcli connection down ens33 && sudo nmcli connection up ens33
  • 验证 DNS 配置:
    nmcli connection show ens33 | grep ipv4.dns

特点:
此方法配置不会立即写入 /etc/resolv.conf,但通过 NetworkManager 生效,重启后仍会保留,属于“半永久”配置。

永久 DNS 配置:重启后保持生效

永久 DNS 配置需通过修改网络配置文件或使用系统管理工具实现,确保设置在系统重启后依然有效,不同 Linux 发行版采用的配置工具不同,需根据系统类型选择合适的方法。

基于 NetworkManager 的系统(Ubuntu、Fedora、CentOS 7+)

对于使用 NetworkManager 的系统,可通过 nmcli 或图形界面工具实现永久配置。

使用 nmcli 命令

  • 永久修改 DNS 并保存到配置文件:
    sudo nmcli connection modify ens33 ipv4.dns "8.8.8.8 114.114.114.114" ipv4.ignore-auto-dns yes

    ipv4.ignore-auto-dns yes 表示忽略 DHCP 服务器分配的 DNS。

    Linux命令如何设置DNS?详解操作步骤与常见问题

  • 重启网络连接或系统使配置生效:
    sudo systemctl restart NetworkManager

使用 nmtui(文本界面工具)

  • 运行 nmtui 命令进入文本界面:
    sudo nmtui
  • 选择“Edit a connection” -> 选中对应网络连接 -> “Edit” -> 在“IPv4 CONFIGURATION”中手动设置 DNS 服务器 -> 保存并退出。

基于 netplan 的系统(Ubuntu 18.04+、Debian 10+)

netplan 是 Ubuntu 18.04 及后续版本默认的网络配置工具,通过 YAML 文件管理网络设置。

操作步骤:

  • 找到网络配置文件(通常位于 /etc/netplan/ 目录下,如 01-network-manager-all.yaml):
    ls /etc/netplan/
  • 编辑配置文件,添加 DNS 服务器地址,示例如下:
    network:
      version: 2
      ethernets:
        ens33:
          dhcp4: yes
          dhcp6: no
          nameservers:
            addresses: [8.8.8.8, 114.114.114.114]
            search: [example.com]  # 可选,添加域名后缀
  • 应用配置并重启网络服务:
    sudo netplan apply
    sudo systemctl restart systemd-networkd
  • 验证配置:
    cat /etc/resolv.conf  # 查看是否包含设置的 DNS 服务器

基于 ifcfg 的系统(CentOS 6/7、RHEL 6/7)

在较旧的 CentOS 或 RHEL 系统中,网络配置通过 ifcfg 文件(如 /etc/sysconfig/network-scripts/ifcfg-ens33)管理。

操作步骤:

  • 编辑 ifcfg 文件,添加或修改以下参数:
    sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

    在文件中添加:

    DNS1=8.8.8.8
    DNS2=114.114.114.114
    PEERDNS=no  # 禁用 DHCP 分配的 DNS
  • 重启网络服务:
    sudo systemctl restart network

基于 systemd-resolvedsystemd-networkd 的系统

现代 Linux 发行版(如 Ubuntu 20.04+、Debian 11+)默认使用 systemd-resolved 管理 DNS 解析。

操作步骤:

  • 创建或编辑网络配置文件(如 /etc/systemd/network/ens33.network):

    [Match]
    Name=ens33
    [Network]
    DNS=8.8.8.8 114.114.114.114
  • 重启 systemd-networkdsystemd-resolved 服务:

    sudo systemctl restart systemd-networkd systemd-resolved
  • 验证 DNS 配置:

    Linux命令如何设置DNS?详解操作步骤与常见问题

    resolvectl status  # 查看 DNS 服务器状态

验证 DNS 配置的有效性

完成 DNS 设置后,需通过命令验证配置是否生效,确保域名解析正常。

使用 nslookup 命令

nslookup www.baidu.com

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

使用 dig 命令

dig www.baidu.com

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

使用 ping 命令

ping www.baidu.com

通过域名能否成功通信判断 DNS 解析是否正常。

常见问题与解决方案

  1. /etc/resolv.conf 被自动覆盖

    • 原因:系统启用了 systemd-resolvedNetworkManager 自动管理 DNS。
    • 解决:通过对应工具(如 netplannmcli)永久修改配置,而非直接编辑文件。
  2. 域名解析失败

    • 检查 DNS 服务器地址是否正确,尝试更换公共 DNS(如 8.8.81.1.1)。
    • 确认网络接口配置正常,使用 ip addr 查看网络状态。
  3. 多 DNS 服务器优先级

    • 系统按 /etc/resolv.confnameserver 的顺序依次尝试,建议配置 2-3 个备用 DNS 服务器。

Linux 系统中 DNS 配置的方法灵活多样,用户可根据发行版特性和需求选择临时或永久方案,临时配置适合快速测试,而永久配置需结合网络管理工具(如 NetworkManager、netplan)实现,掌握这些命令和技巧,不仅能提升网络管理效率,还能为后续的服务器部署、开发环境搭建奠定基础,在实际操作中,建议优先使用发行版推荐的网络管理工具,避免因手动修改核心文件导致系统异常。

赞(0)
未经允许不得转载:好主机测评网 » Linux命令如何设置DNS?详解操作步骤与常见问题