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

linux修改dns命令具体怎么操作?详细步骤是什么?

在Linux系统中,修改DNS配置是网络管理中的常见操作,无论是为了访问特定内网资源、提高解析速度,还是进行网络安全测试,都需要掌握正确的命令和方法,本文将详细介绍在不同Linux发行版中修改DNS配置的多种方式,包括临时修改、永久修改以及针对不同服务工具的配置方法,同时提供常见问题的解决方案和最佳实践建议。

linux修改dns命令具体怎么操作?详细步骤是什么?

临时修改DNS配置

临时修改DNS配置适用于测试场景或短期需求,系统重启后配置将恢复默认,这种方法无需修改系统文件,操作简单快捷。

  1. 使用resolv.conf文件
    resolv.conf是Linux系统中传统的DNS解析配置文件,通过直接编辑该文件可实现临时DNS修改。

    sudo vim /etc/resolv.conf

    在文件中添加或修改以下内容:

    nameserver 8.8.8.8
    nameserver 8.8.4.4

    其中nameserver指定DNS服务器IP地址,可配置多个(按优先级从上到下)。
    注意:在 systemd-resolved 系统中,直接修改resolv.conf可能被覆盖,需结合chattr命令锁定文件:

    sudo chattr +i /etc/resolv.conf
  2. 使用nmcli命令(NetworkManager适用)
    对于使用NetworkManager的服务(如Ubuntu、CentOS 7+),可通过命令行工具nmcli临时修改DNS:

    sudo nmcli connection show "连接名称" | grep ipv4.dns
    sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 8.8.4.4"
    sudo nmcli connection down "连接名称" && sudo nmcli connection up "连接名称"

    若需为所有连接设置全局DNS:

    sudo nmcli connection modify "System eth0" ipv4.ignore-dns-auto yes
    sudo nmcli connection modify "System eth0" ipv4.dns "8.8.8.8"

永久修改DNS配置

永久修改需要根据系统使用的网络服务工具进行调整,确保配置在重启后依然生效。

基于systemd-resolved的系统(Ubuntu 18.04+、Debian 10+)

systemd-resolved是现代Linux发行版默认的DNS解析服务,配置文件位于/etc/systemd/resolved.conf

sudo vim /etc/systemd/resolved.conf

修改以下参数:

linux修改dns命令具体怎么操作?详细步骤是什么?

[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1
Domains=~.

保存后重启服务:

sudo systemctl restart systemd-resolved

验证DNS配置:

resolvectl status

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

通过nmcli命令永久修改DNS:

sudo nmcli connection modify "ens33" ipv4.dns "8.8.8.8"
sudo nmcli connection modify "ens33" ipv4.ignore-auto-dns yes
sudo nmcli connection up "ens33"

若需配置DNS搜索域:

sudo nmcli connection modify "ens33" ipv4.dns-search "example.com"

基于systemd-networkd的系统(Arch Linux、Debian)

编辑网络配置文件/etc/systemd/network/ens33.network

[Match]
Name=ens33
[Network]
DNS=8.8.8.8
DNS=8.8.4.4
Domains=example.com

重启网络服务:

sudo systemctl restart systemd-networkd

传统发行版(CentOS 6/7、Ubuntu 16.04)

直接编辑/etc/resolv.conf并锁定文件:

sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf
sudo chattr +i /etc/resolv.conf

若需修改网卡配置(如/etc/sysconfig/network-scripts/ifcfg-ens33):

DNS1=8.8.8.8
DNS2=8.8.4.4
PEERDNS=no

重启网络服务:

linux修改dns命令具体怎么操作?详细步骤是什么?

sudo systemctl restart network

容器环境中的DNS修改

在Docker容器中,默认会继承宿主机的DNS配置,但可通过以下方式自定义:

  1. 运行容器时指定DNS

    docker run -it --dns 8.8.8.8 ubuntu:20.04
  2. 修改Docker守护进程配置
    编辑/etc/docker/daemon.json

    {
      "dns": ["8.8.8.8", "8.8.4.4"]
    }

    重启Docker服务:

    sudo systemctl restart docker

常见问题与解决方案

  1. DNS修改后不生效

    • 检查网络服务状态:systemctl status systemd-resolved
    • 清除DNS缓存:sudo systemd-resolve --flush-caches
    • 确认网卡配置无冲突(如PEERDNS=yes会覆盖手动设置)
  2. 无法访问特定域名
    检查/etc/hosts文件是否有错误条目:

    sudo vim /etc/hosts
  3. 多DNS服务器配置顺序问题
    DNS服务器按resolv.conf或配置文件中的顺序依次尝试,建议将可靠的DNS(如内网DNS)放在首位。

DNS服务器推荐

类型 推荐服务器 特点
公共DNS Google DNS (8.8.8.8) 全球覆盖,速度快,适合测试
Cloudflare DNS (1.1.1.1) 隐私保护,无日志
阿里云DNS (223.5.5.5) 国内访问速度快,适合国内用户
内网DNS 企业内网DNS服务器 支持内部域名解析,安全性高

最佳实践建议

  1. 优先使用系统级工具:如nmclisystemd-resolved,避免直接修改resolv.conf导致配置丢失。
  2. 配置备份:修改前备份原配置文件,例如sudo cp /etc/resolv.conf /etc/resolv.conf.bak
  3. 测试验证:修改后使用nslookupdig命令测试解析是否生效:
    nslookup example.com
    dig @8.8.8.8 example.com
  4. 安全性考虑:避免使用不可信的公共DNS,内网环境建议配置防火墙规则限制DNS访问端口(53/TCP/UDP)。

通过以上方法,您可以根据实际需求灵活选择适合的DNS修改方式,无论是临时测试还是长期配置,掌握这些命令都能有效提升Linux系统的网络管理效率。

赞(0)
未经允许不得转载:好主机测评网 » linux修改dns命令具体怎么操作?详细步骤是什么?