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

Linux设置DNS命令有哪些?如何永久修改DNS配置?

在Linux系统中,DNS(域名系统)配置的正确性直接影响网络访问能力,无论是浏览网页、连接远程服务还是进行域名解析,都依赖于DNS服务器的正确指向,Linux系统提供了多种DNS配置方式,涵盖临时修改、永久配置以及针对不同场景的调整方法,本文将详细介绍Linux系统中设置DNS的各类命令及操作步骤,帮助用户灵活应对不同需求。

Linux设置DNS命令有哪些?如何永久修改DNS配置?

临时修改DNS配置

临时修改DNS配置适用于快速测试或临时场景,重启网络服务或系统后配置将失效,不会影响系统原有的DNS设置。

使用resolv.conf文件直接修改

/etc/resolv.conf是Linux系统中存放DNS解析配置的核心文件,通过直接编辑该文件可立即生效。

  • 查看当前配置:使用cat /etc/resolv.conf命令,文件内容通常类似以下格式:

    nameserver 8.8.8.8
    nameserver 114.114.114.114
    search localdomain

    其中nameserver行指定DNS服务器IP地址,可配置多个,按优先级顺序使用。

  • 修改DNS配置:使用echo命令或文本编辑器(如vinano)修改文件,将DNS服务器设置为Google的公共DNS(8.8.8.8)和Cloudflare DNS(1.1.1.1):

    sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf
    sudo echo "nameserver 1.1.1.1" >> /etc/resolv.conf

    或使用vi编辑器:sudo vi /etc/resolv.conf,手动修改或添加nameserver行后保存退出。

    Linux设置DNS命令有哪些?如何永久修改DNS配置?

  • 验证配置:使用nslookupdig命令测试域名解析。nslookup www.baidu.com,若返回IP地址为DNS服务器解析的结果,则配置成功。

永久修改DNS配置

临时配置在重启后失效,若需长期生效,需通过系统网络管理工具或配置文件进行设置,不同Linux发行版采用的工具略有差异,以下分别介绍常见发行版的操作方法。

基于Systemd的发行版(如Ubuntu 18.04+、CentOS 7+、Debian 9+)

此类系统使用NetworkManager管理网络配置,可通过命令行或图形界面修改DNS。

  • 使用nmcli命令(NetworkManager命令行工具):

    • 查看当前网络连接nmcli connection show,找到活动的网络连接名称(如ens33eth0)。
    • 修改DNS配置:以设置DNS为8.8.81.1.1为例:
      sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 1.1.1.1"
    • 重启网络服务使配置生效
      sudo nmcli connection down "连接名称" && sudo nmcli connection up "连接名称"
    • 验证配置cat /etc/resolv.conf会发现DNS配置已更新,且nslookup测试正常。
  • 使用netplan工具(Ubuntu 18.04及以上版本默认使用):

    • 编辑配置文件:配置文件通常位于/etc/netplan/目录下,如01-network-manager-all.yaml,使用vi打开文件:
      sudo vi /etc/netplan/01-network-manager-all.yaml
    • 修改DNS配置:在network部分添加nameservers地址,
      network:
        version: 2
        ethernets:
          ens33:
            dhcp4: yes
            nameservers:
              addresses: [8.8.8.8, 1.1.1.1]
    • 应用配置
      sudo netplan apply

基于System V的发行版(如CentOS 6、Debian 8等)

此类系统使用ifcfg配置文件管理网络,需通过修改网络接口配置文件实现DNS永久设置。

Linux设置DNS命令有哪些?如何永久修改DNS配置?

  • 编辑网络接口配置文件:文件位于/etc/sysconfig/network-scripts/下,如ifcfg-eth0,使用vi打开:
    sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
  • 添加或修改DNS配置:在文件中添加以下两行(若不存在):
    DNS1=8.8.8.8
    DNS2=1.1.1.1

    其中DNS1为主DNS服务器,DNS2为备用。

  • 重启网络服务
    sudo service network restart

针对特定场景的DNS配置

容器环境中的DNS配置

在Docker容器中,默认会继承宿主机的DNS配置,若需自定义DNS,可在运行容器时通过--dns参数指定:

docker run --dns 8.8.8.8 --dns 1.1.1.1 -it ubuntu /bin/bash

本地DNS服务器配置

若需搭建本地DNS服务器(如BIND、dnsmasq),需安装相应软件并配置服务,以dnsmasq为例:

  • 安装dnsmasqsudo apt install dnsmasq(Ubuntu/Debian)或sudo yum install dnsmasq(CentOS)。
  • 编辑配置文件sudo vi /etc/dnsmasq.conf,添加以下内容:
    server=8.8.8.8
    address=/localhost/127.0.0.1
  • 启动并启用服务
    sudo systemctl start dnsmasq
    sudo systemctl enable dnsmasq

DNS配置故障排查

若DNS解析异常,可通过以下步骤排查:

  1. 检查/etc/resolv.conf:确认nameserver配置正确。
  2. 测试网络连通性:使用ping 8.8.8.8检查是否能访问DNS服务器。
  3. 刷新DNS缓存:部分系统(如Ubuntu)需执行sudo systemd-resolve --flush-caches刷新缓存;CentOS 7+可使用sudo nmcli networking off && sudo nmcli networking on
  4. 检查防火墙规则:确保防火墙未阻止DNS端口(53/TCP和53/UDP)。

Linux系统中设置DNS的方法灵活多样,从临时修改resolv.conf到通过网络管理工具永久配置,需根据系统版本和使用场景选择合适的方式,临时配置适合快速测试,而永久配置则需结合发行版特性(如NetworkManager、netplan或ifcfg文件)进行调整,对于容器或本地服务器环境,还需考虑额外的DNS配置需求,掌握这些命令和方法,可有效解决DNS解析问题,保障网络服务的稳定运行。

赞(0)
未经允许不得转载:好主机测评网 » Linux设置DNS命令有哪些?如何永久修改DNS配置?