Linux系统如何正确配置DNS服务器?详细步骤和方法是什么?

在Linux系统中,DNS(域名系统)配置是网络通信的基础,它负责将人类可读的域名转换为机器可识别的IP地址,正确的DNS配置能确保系统高效访问互联网或内部网络资源,本文将详细介绍Linux下配置DNS的多种方法,涵盖临时配置、永久配置、系统服务配置及DNS服务器搭建等场景,并针对不同发行版提供具体操作步骤。

linux下如何配置dns

临时配置DNS(适用于快速测试)

直接修改/etc/resolv.conf文件是最直接的临时配置方法,但该配置在系统重启或网络服务重启后可能会被覆盖,适合临时调试或快速验证DNS解析。

操作步骤

  1. 使用文本编辑器(如vinano)打开/etc/resolv.conf文件:
    sudo vi /etc/resolv.conf
  2. 在文件中添加或修改nameserver指令,指定DNS服务器IP地址(如公共DNS:8.8.8.8或114.114.114.114,或内网DNS服务器):
    nameserver 8.8.8.8
    nameserver 114.114.114.114
  3. 保存文件后,使用nslookupdig命令测试DNS解析是否生效:
    nslookup www.baidu.com

注意事项

  • 该方法为临时配置,若网络服务重启(如systemctl restart NetworkManager)或系统重启,配置可能恢复默认。
  • 避免直接修改该文件,因部分系统会通过网络管理工具自动覆盖,建议优先使用永久配置方法。

永久配置DNS(通过网络管理工具)

不同Linux发行版使用不同的网络管理工具,以下是主流发行版的永久配置方法:

基于NetworkManager的发行版(Ubuntu、CentOS 7+、RHEL 7+等)

NetworkManager是桌面版和部分服务器版Linux的默认网络管理工具,可通过图形界面或命令行配置DNS。

命令行配置(nmcli)

  1. 查看当前网络连接名称(如eno1wlan0eth0):
    nmcli connection show
  2. 修改指定连接的DNS服务器(以eno1为例,添加8.8.8.8和114.114.114.114):
    sudo nmcli connection modify eno1 ipv4.dns "8.8.8.8 114.114.114.114"
  3. 重启网络连接使配置生效:
    sudo nmcli connection down eno1 && sudo nmcli connection up eno1

配置文件修改
编辑对应网卡的配置文件(路径为/etc/sysconfig/network-scripts/ifcfg-eno1/etc/NetworkManager/system-connections/eno1.nmconnection),添加或修改以下内容:

linux下如何配置dns

DNS1=8.8.8.8
DNS2=114.114.114.114
PEERDNS=no  # 禁用NetworkManager自动覆盖DNS配置

保存后重启网络服务:sudo systemctl restart NetworkManager

基于netplan的发行版(Ubuntu 18.04+、Debian 10+等)

netplan是Ubuntu等系统使用的网络配置工具,通过YAML文件配置。

  1. 编辑netplan配置文件(通常位于/etc/netplan/目录下,如01-netcfg.yaml):
    sudo vi /etc/netplan/01-netcfg.yaml
  2. 在配置文件中添加DNS服务器,示例(以以太网连接为例):
    network:
      version: 2
      ethernets:
        eno1:
          dhcp4: no
          addresses: [192.168.1.100/24]  # 静IP地址(若使用DHCP可省略)
          gateway4: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 114.114.114.114]
            search: [localdomain]  # 可选,添加域名后缀
  3. 应用配置并测试:
    sudo netplan apply
    nslookup www.google.com

基于systemd-networkd的发行版(Debian、Arch Linux等)

  1. 编辑网卡配置文件(如/etc/systemd/network/eno1.network):

    sudo vi /etc/systemd/network/eno1.network
  2. 添加DNS配置:

    [Match]
    Name=eno1
    [Network]
    DHCP=no
    Address=192.168.1.100/24
    Gateway=192.168.1.1
    DNS=8.8.8.8 114.114.114.114
  3. 重启systemd-networkd服务:

    sudo systemctl restart systemd-networkd

通过systemd-resolved配置DNS(现代系统)

systemd-resolved是systemd提供的本地DNS解析服务,支持缓存、LLMNR等功能,常用于Ubuntu 18.04+、CentOS 8+等系统。

  1. 启用并启动systemd-resolved服务:
    sudo systemctl enable --now systemd-resolved
  2. 修改/etc/systemd/resolved.conf文件:
    sudo vi /etc/systemd/resolved.conf

    取消注释并修改以下内容:

    linux下如何配置dns

    DNS=8.8.8.8 114.114.114.114
    FallbackDNS=1.1.1.1
    DNSStubListener=yes
  3. 创建/etc/resolv.conf的软链(指向systemd-resolved管理的本地DNS):
    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  4. 重启服务:sudo systemctl restart systemd-resolved

配置DNS服务器(以BIND9为例)

若需搭建本地DNS服务器,可使用BIND9(Berkeley Internet Name Domain)。

  1. 安装BIND9:
    sudo apt install bind9  # Debian/Ubuntu
    sudo yum install bind bind-utils  # CentOS/RHEL
  2. 修改主配置文件/etc/bind/named.conf.options
    sudo vi /etc/bind/named.conf.options

    添加 forwarders(转发外部DNS查询)和区域配置:

    options {
        directory "/var/cache/bind";
        forwarders { 8.8.8.8; 114.114.114.114; };
        allow-query { any; };
    };
  3. 创建正向区域文件(如example.com):
    sudo vi /etc/bind/db.example.com
    ```  示例:  
    ```plaintext
    $TTL    86400
    @       IN      SOA     ns1.example.com. admin.example.com. (
                                2023100101      ; Serial
                                3600            ; Refresh
                                1800            ; Retry
                                604800          ; Expire
                                86400 )         ; Minimum TTL
                IN      NS      ns1.example.com.
                IN      A       192.168.1.10
                IN      MX      10 mail.example.com.
    ns1      IN      A       192.168.1.10
    www      IN      A       192.168.1.20
  4. 创建反向区域文件(解析IP到域名):
    sudo vi /etc/bind/db.192.168.1
    ```  示例:  
    ```plaintext
    $TTL    86400
    @       IN      SOA     ns1.example.com. admin.example.com. (
                                2023100101      ; Serial
                                3600            ; Refresh
                                1800            ; Retry
                                604800          ; Expire
                                86400 )         ; Minimum TTL
                IN      NS      ns1.example.com.
                IN      PTR     example.com.
    10      IN      PTR     ns1.example.com.
    20      IN      PTR     www.example.com.
  5. 重启BIND9服务:sudo systemctl restart bind9,并使用dig测试解析:
    dig @localhost www.example.com

不同配置方法对比

方法 适用场景 永久性 重启要求 示例发行版
修改/etc/resolv.conf 临时测试、快速调试 网络服务重启 所有发行版
NetworkManager 桌面版、服务器版(CentOS 7+) 重启网络连接 Ubuntu、CentOS、RHEL
netplan Ubuntu 18.04+、Debian 10+ 执行netplan apply Ubuntu、Debian
systemd-resolved 现代系统(支持systemd) 重启systemd-resolved Ubuntu 18.04+、CentOS 8+
BIND9 搭建本地DNS服务器 重启bind9 所有发行版

相关问答FAQs

Q1:为什么修改/etc/resolv.conf后重启系统,DNS配置又恢复默认?
A:/etc/resolv.conf文件通常由网络管理工具(如NetworkManager、systemd-networkd)自动管理,若直接修改该文件,工具下次运行时会覆盖配置,解决方法:通过对应网络管理工具永久配置DNS(如NetworkManager中设置PEERDNS=no,或使用netplan修改配置文件),避免直接编辑/etc/resolv.conf

Q2:如何验证DNS配置是否生效?
A:可通过以下命令测试:

  1. nslookup 域名:查询域名对应的IP地址,若返回指定DNS服务器的解析结果,则配置生效。
  2. dig 域名 @DNS服务器IP:指定DNS服务器进行查询,可确认是否使用目标DNS(如dig www.baidu.com @8.8.8.8)。
  3. ping 域名:通过域名测试网络连通性,若能解析IP并通包,说明DNS配置正常。

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

(0)
酷番叔酷番叔
上一篇 2025年8月30日 09:26
下一篇 2025年8月30日 09:40

相关推荐

  • Linux下如何开发PHP扩展?步骤与工具详解

    在Linux环境下开发PHP扩展是提升PHP应用性能、实现底层功能或调用外部库的重要手段,本文将详细介绍从环境准备到扩展开发、测试、安装的完整流程,帮助开发者掌握PHP扩展开发的核心技能,环境准备与依赖安装开发PHP扩展需要Linux系统、PHP开发环境及相关构建工具,以Ubuntu/Debian系统为例,首先……

    2025年9月18日
    13600
  • Linux终端如何打开程序?

    Linux终端作为Linux系统的核心交互工具,不仅能高效执行命令,还能灵活启动和管理各类程序,无论是图形界面应用还是命令行工具,掌握终端启动方法能显著提升操作效率,本文将从基础命令到高级技巧,详细说明Linux终端打开程序的多种方式,帮助用户应对不同场景需求,基础打开命令:通用与桌面环境特定工具xdg-ope……

    2025年8月26日
    12600
  • Linux系统如何实现电脑节能的实用操作方法有哪些?

    在Linux系统中实现电脑节能,需要从硬件配置、系统服务、软件工具及用户习惯等多方面入手,通过合理设置可显著降低功耗,尤其对笔记本用户而言能延长续航时间,以下从不同维度详细说明具体方法,硬件节能基础设置硬件层面的节能是基础,需优先启用硬件支持的电源管理功能,对于CPU,现代处理器支持动态频率调节(如Intel的……

    2025年9月13日
    11800
  • Linux访问网站的常用命令和详细操作步骤有哪些?

    在Linux系统中,访问网站是日常操作和服务器管理中的基础需求,主要通过图形界面浏览器和命令行工具实现,本文将详细介绍不同场景下的访问方法、常用工具及网络问题排查技巧,帮助用户全面掌握Linux环境下的网站访问能力,图形界面浏览器访问Linux图形界面(GUI)环境下,访问网站最常用的方式是使用网页浏览器,主流……

    2025年9月8日
    12900
  • Linux系统中如何正确删除软连接?

    在Linux系统中,软连接(也称为符号链接)是一种特殊的文件类型,它指向另一个文件或目录的路径,类似于Windows系统中的快捷方式,当软连接失效、需要重建或需要清理系统空间时,删除软连接是常见操作,删除软连接的方法看似简单,但若操作不当(尤其是处理指向目录的软连接时),可能会导致误删原文件或目录,因此需掌握正……

    2025年10月2日
    10900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信