Linux系统如何正确添加DNS服务器的配置步骤方法?

在Linux系统中,DNS(域名系统)配置是网络连接的基础,它负责将人类可读的域名(如www.example.com)转换为机器可识别的IP地址,正确的DNS配置能确保系统高效访问互联网、内网服务或特定资源,本文将详细介绍Linux系统中添加DNS的多种方法,涵盖不同发行版和场景,并附上注意事项和验证步骤。

linux如何添加dns

DNS配置基础:核心概念与文件

在Linux中,DNS配置的核心是告诉系统使用哪些DNS服务器进行域名解析,这些信息通常存储在特定配置文件中,常见的包括:

  • /etc/resolv.conf:传统的DNS解析配置文件,直接列出DNS服务器地址。
  • 网络管理工具的配置文件(如NetworkManager的ifcfg文件、netplan的yaml文件等):通过网络管理工具动态管理DNS,优先级高于直接修改/etc/resolv.conf
  • /etc/systemd/resolved.confsystemd-resolved服务的配置文件,用于管理本地DNS缓存和上游服务器。

需要注意的是,直接编辑/etc/resolv.conf在某些系统(如使用NetworkManager或systemd-resolved的系统)中可能被覆盖,因此推荐使用网络管理工具或系统服务进行配置。

方法一:直接编辑/etc/resolv.conf(临时/简单场景)

/etc/resolv.conf是Linux中最直接的DNS配置文件,适用于快速测试或临时修改,但需注意其可能被网络管理工具覆盖。

操作步骤:

  1. 查看当前配置
    使用catless命令查看文件内容:

    cat /etc/resolv.conf

    输出示例:

    # Generated by NetworkManager
    nameserver 8.8.8.8
    nameserver 8.8.4.4

    其中nameserver行指定DNS服务器地址,可多个,按优先级顺序排列。

  2. 编辑配置文件
    使用vimnano等文本编辑器(需root权限):

    sudo vim /etc/resolv.conf

    添加或修改nameserver行,例如使用公共DNS(如Google DNS:8.8.88.4.4,或Cloudflare DNS:1.1.10.0.1),或内网DNS服务器(如168.1.1)。

  3. 保存并退出
    vim中按Esc,输入wq保存退出。

注意事项:

  • 临时性:在Ubuntu、CentOS等使用NetworkManager或systemd-resolved的系统中,重启网络服务或系统后,/etc/resolv.conf可能被重置为默认值。
  • 权限:文件需root权限编辑,普通用户需通过sudo执行。
  • 格式规范:每行一个nameserver,注释以开头,避免语法错误(如多余空格)。

方法二:使用NetworkManager管理DNS(桌面/服务器通用)

NetworkManager是大多数Linux发行版(如Ubuntu、CentOS、Fedora)的默认网络管理工具,支持通过命令行或图形界面动态配置DNS,且会自动更新/etc/resolv.conf,避免被覆盖。

场景1:命令行配置(nmcli)

nmcli是NetworkManager的命令行工具,适用于服务器或无界面环境。

  1. 查看当前网络连接

    nmcli connection show

    记录要修改的连接名称(如eno1Wired connection 1)。

  2. 配置DNS服务器
    为指定连接添加DNS服务器(可多个,用空格分隔):

    sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 8.8.4.4 1.1.1.1"

    eno1添加Google和Cloudflare DNS:

    sudo nmcli connection modify eno1 ipv4.dns "8.8.8.8 1.1.1.1"
  3. 重启网络连接生效

    sudo nmcli connection down "连接名称" && sudo nmcli connection up "连接名称"

    或直接重启NetworkManager服务(影响所有连接):

    linux如何添加dns

    sudo systemctl restart NetworkManager
  4. 验证配置
    检查/etc/resolv.conf是否更新:

    cat /etc/resolv.conf | grep nameserver

    或使用nmcli查看连接属性:

    nmcli connection show "连接名称" | grep ipv4.dns

场景2:图形界面配置(NetworkManager-applet)

在桌面版Linux中,可通过系统托盘的网络图标配置DNS:

  1. 点击网络图标,选择“有线设置”或“Wi-Fi设置”。
  2. 点击当前连接的齿轮图标(“网络设置”),进入连接详情。
  3. 选择“IPv4”或“IPv6”标签页,在“DNS服务器”字段中输入DNS地址(如8.8.8,1.1.1.1),用逗号分隔。
  4. 点击“应用”,系统会自动保存并重启网络服务。

注意事项:

  • 连接优先级:NetworkManager会优先使用当前活动连接的DNS配置,多网卡环境下需为每个连接单独配置。
  • DHCP与DNS:如果通过DHCP自动获取IP,DHCP服务器可能会下发DNS配置,此时需在NetworkManager中禁用DHCP DNS(勾选“自动DNS”选项为关闭)或覆盖DHCP配置。

方法三:使用systemd-resolved管理DNS(现代系统默认)

systemd-resolved是systemd套件的一部分,提供本地DNS缓存和解析服务,广泛应用于Ubuntu 18.04+、Fedora等系统,它通过/etc/systemd/resolved.conf配置,并管理/etc/resolv.conf的符号链接(默认指向/run/systemd/resolve/stub-resolv.conf)。

操作步骤:

  1. 查看systemd-resolved状态
    确保服务已运行:

    systemctl status systemd-resolved

    若未运行,启动并启用:

    sudo systemctl enable --now systemd-resolved
  2. 编辑resolved.conf配置文件

    sudo vim /etc/systemd/resolved.conf

    取消注释并修改以下行(默认为注释):

    # DNS=    # 指定上游DNS服务器,多个用空格分隔,如 DNS=8.8.8.8 1.1.1.1
    # FallbackDNS=  # 备用DNS服务器,当主DNS不可用时使用
    # DNSStubListener=yes  # 监听本地53端口(默认开启,提供DNS缓存)

    配置Google和Cloudflare DNS:

    DNS=8.8.8.8 8.8.4.4 1.1.1.1 1.0.0.1
    FallbackDNS=114.114.114.114 223.5.5.5
  3. 重启systemd-resolved服务

    sudo systemctl restart systemd-resolved
  4. 验证DNS解析
    使用resolvectl命令(systemd-resolved的工具)查看解析状态:

    resolvectl status

    输出应包含配置的DNS服务器和缓存信息。
    测试域名解析:

    resolvectl www.example.com

注意事项:

  • /etc/resolv.conf的符号链接:默认情况下,/etc/resolv.conf指向/run/systemd/resolve/stub-resolv.conf,直接修改无效,若需手动管理,可删除符号链接并创建新文件(但不推荐,可能影响系统功能)。
  • DNS缓存systemd-resolved默认开启本地缓存(Cache= yes),可通过resolvectl query查询缓存命中情况。

方法四:针对特定发行版的配置(如netplan)

Ubuntu Server 18.04+、Debian 10+等系统使用netplan作为网络配置工具,通过yaml文件管理网络和DNS。

操作步骤:

  1. 查找netplan配置文件
    通常位于/etc/netplan/目录下,如01-network-manager-all.yaml50-cloud-init.yaml

  2. 编辑yaml文件

    sudo vim /etc/netplan/01-network-manager-all.yaml

    在网络接口配置中添加nameservers节点,指定DNS服务器:

    network:
      version: 2
      ethernets:
        eno1:  # 网络接口名称
          dhcp4: yes
          dhcp6: no
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1, 114.114.114.114]  # DNS服务器列表
            search: [example.com]  # 可选:域名后缀,如内部域名解析
  3. 应用配置

    linux如何添加dns

    sudo netplan apply

    netplan --debug apply(调试模式,查看错误)。

  4. 验证配置
    检查/etc/resolv.conf是否更新:

    cat /etc/resolv.conf

    或使用nslookup测试:

    nslookup www.example.com

注意事项:

  • yaml语法:缩进必须使用2个空格,不能使用tab键;冒号后需加空格。
  • 静态IP配置:若使用静态IP,需在ethernets下添加addressesgateway4等参数,DNS仍通过nameservers配置。

DNS配置验证与故障排查

配置完成后,需验证DNS解析是否生效,常见工具包括:

  1. nslookup

    nslookup www.example.com

    若返回IP地址,则解析成功;若超时或报错,检查DNS服务器可达性(ping 8.8.8.8)。

  2. dig

    dig www.example.com

    显示详细的DNS解析过程,包括查询的DNS服务器、响应时间等。

  3. ping

    ping www.example.com

    通过域名测试网络连通性,依赖DNS解析成功。

常见问题:

  • DNS解析超时:检查DNS服务器是否可达(ping DNS_IP),或更换公共DNS测试。
  • /etc/resolv.conf被重置:确认是否使用NetworkManager/netplan/systemd-resolved管理,避免直接修改该文件。
  • 特定域名无法解析:检查/etc/hosts文件是否有错误条目,或DNS服务器是否支持该域名(如内网域名需配置正确的DNS后缀)。

不同配置方法对比总结

为方便选择,以下表格总结常见DNS配置方法的适用场景和特点:

配置方法 适用场景 配置文件/命令 生效方式 优点 缺点
直接编辑/etc/resolv.conf 临时测试、简单场景 /etc/resolv.conf 立即生效,但可能被覆盖 操作简单,无需额外工具 不稳定,重启后可能失效
NetworkManager(nmcli) 通用桌面/服务器,动态管理 nmcli connection modify 重启网络连接后生效 自动维护/etc/resolv.conf 需熟悉nmcli命令
systemd-resolved 现代系统(Ubuntu 18.04+等) /etc/systemd/resolved.conf 重启服务后生效 提供DNS缓存,支持多DNS策略 配置相对复杂,依赖systemd
netplan Ubuntu Server、Debian等yaml配置系统 /etc/netplan/*.yaml 执行netplan apply后生效 统一管理网络和DNS,适合服务器 需掌握yaml语法

相关问答FAQs

Q1:为什么修改了DNS配置后,域名解析仍然失败?
A:可能原因包括:

  1. DNS服务器不可达:检查网络连通性(ping DNS_IP),确认DNS服务器未屏蔽或故障。
  2. 配置文件未生效:若使用NetworkManager/netplan,需重启网络服务或应用配置;若直接修改/etc/resolv.conf,确认文件未被其他工具覆盖。
  3. 本地缓存问题:清理本地DNS缓存(如sudo systemctl flush-dns或重启systemd-resolved服务)。
  4. /etc/hosts冲突:检查/etc/hosts文件中是否有错误条目覆盖了域名解析。

Q2:如何为Linux系统的不同网络接口配置不同的DNS?
A:通过NetworkManager或netplan可实现多网卡DNS隔离:

  • NetworkManager:为每个网络连接单独配置DNS。eno1连接使用8.8.8wlan0连接使用1.1.1
    sudo nmcli connection modify eno1 ipv4.dns "8.8.8.8"
    sudo nmcli connection modify wlan0 ipv4.dns "1.1.1.1"
    sudo nmcli connection down eno1 && sudo nmcli connection up eno1
    sudo nmcli connection down wlan0 && sudo nmcli connection up wlan0
  • netplan:在yaml文件中为不同接口配置nameservers
    network:
      version: 2
      ethernets:
        eno1:
          dhcp4: yes
          nameservers:
            addresses: [8.8.8.8]
        wlan0:
          dhcp4: yes
          nameservers:
            addresses: [1.1.1.1]

    执行sudo netplan apply后,每个接口将使用配置的DNS服务器。

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

(0)
酷番叔酷番叔
上一篇 1小时前
下一篇 1小时前

相关推荐

  • 如何用cut命令选择第3和第5字段?

    核心语法cut -d '分隔符' -f 3,5 文件名-d:指定字段分隔符(默认是制表符\t),-f:指定要提取的字段位置,用逗号分隔不连续的字段(如3,5),操作步骤与示例示例1:基本用法(以空格分隔)假设文件data.txt内容如下:Alice 25 Engineer USA 5000Bob……

    2025年7月12日
    4000
  • Linux如何远程登录服务器?

    要通过Linux系统登录服务器,最常用且安全的方式是使用SSH(Secure Shell)协议,它通过加密传输保障数据安全,支持密码和密钥两种认证方式,以下是详细操作步骤及相关配置,帮助新手快速掌握服务器登录方法,登录前准备在开始操作前,需确认以下信息已准备就绪:服务器信息:服务器的公网IP地址(或域名)、SS……

    2025年9月9日
    1300
  • Linux系统下deb包安装的正确方法是什么?

    deb包是Debian及其衍生发行版(如Ubuntu、Linux Mint等)常用的软件包格式,它封装了软件的二进制文件、配置信息、依赖关系等,用户通过安装deb包可以快速完成软件的部署,本文将详细介绍在Linux系统中安装deb包的多种方法、注意事项及常见问题解决,deb包安装前的准备工作在安装deb包前,需……

    2025年9月8日
    900
  • linux如何把一个文件

    Linux 中,可使用 mv 命令将一个文件移动到指定目录,如

    2025年8月18日
    2200
  • 如何正确完整安装Linux服务器?新手必学的详细操作步骤有哪些?

    安装Linux服务器是企业IT基础设施建设的核心环节,需结合硬件环境、业务需求及安全规范逐步操作,以下是详细安装流程,涵盖从准备到配置的全过程,安装前的准备工作硬件选择与检查根据服务器用途(如Web服务、数据库、虚拟化)选择硬件:CPU需满足性能要求,内存建议至少4GB(生产环境推荐8GB以上),硬盘建议使用S……

    2025年8月28日
    1500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信