ubuntu命令dns如何查看与配置DNS服务器?

在Ubuntu系统中,DNS(域名系统)配置是网络管理的重要环节,它决定了域名如何解析为IP地址,本文将详细介绍Ubuntu系统中与DNS相关的命令、配置方法及常见问题解决,帮助用户高效管理DNS设置。

ubuntu命令dns如何查看与配置DNS服务器?

查看当前DNS配置

在Ubuntu中,首先需要确认当前的DNS配置状态,常用的命令包括resolvectlcat /etc/resolv.confresolvectl是systemd-resolved服务提供的工具,能显示更详细的DNS信息,执行resolvectl status会显示当前使用的DNS服务器、域名搜索列表等信息,而cat /etc/resolv.conf则直接显示解析器配置文件的内容,但需注意该文件可能由网络管理工具(如NetworkManager或systemd-networkd)动态管理,直接修改可能不会生效。

临时修改DNS配置

如果需要临时更改DNS服务器(如测试特定DNS服务),可以使用resolvectl命令,将DNS服务器设置为8.8.8.8和8.8.4.4,可执行:

sudo resolvectl dns eth0 8.8.8.8 8.8.4.4

其中eth0是网卡名称,可通过ip a命令查看,此方法仅在当前会话有效,重启系统或网络服务后配置会恢复。

永久修改DNS配置

使用Netplan(Ubuntu 18.04及以后版本默认)

Netplan是Ubuntu的网络配置工具,通过YAML文件管理网络设置,编辑/etc/netplan/01-netcfg.yaml文件:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
        search: [example.com]

保存后执行sudo netplan apply使配置生效。

使用NetworkManager(桌面版Ubuntu默认)

通过图形界面或nmcli命令行工具修改,使用nmcli

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

手动修改/etc/resolv.conf(不推荐)

直接编辑/etc/resolv.conf并添加:

nameserver 8.8.8.8
nameserver 8.8.4.4

但需确保文件不被网络管理工具覆盖,可通过sudo chattr +i /etc/resolv.conf锁定文件。

ubuntu命令dns如何查看与配置DNS服务器?

DNS缓存管理

Ubuntu默认使用systemd-resolved服务管理DNS缓存,查看缓存信息:

resolvctl statistics

清空缓存:

sudo systemd-resolve --flush-caches

常见DNS问题排查

域名解析失败

使用nslookupdig命令测试域名解析:

nslookup example.com
dig example.com

若无法解析,检查DNS服务器配置或防火墙规则。

DNS缓存问题

若解析结果不正确,尝试清空DNS缓存并重启网络服务:

sudo systemctl restart systemd-resolved

多网卡DNS冲突

当系统有多个网卡时,可能导致DNS配置冲突,可通过resolvectl指定特定网卡的DNS服务器,或确保网络管理工具优先级设置正确。

DNS配置工具对比

以下为常用DNS配置工具的对比:

工具名称 适用场景 优点 缺点
Netplan 服务器版Ubuntu(18.04+) 配置灵活,支持YAML 桌面版不默认使用
NetworkManager 桌面版Ubuntu 图形界面友好,动态更新 服务器端功能较少
systemd-resolved 系统级DNS缓存管理 高效缓存,支持本地域名 配置相对复杂

高级DNS配置

使用自定义DNS服务器

如需使用私有DNS服务器(如BIND),可安装bind9服务并配置正向/反向解析区域,安装命令:

ubuntu命令dns如何查看与配置DNS服务器?

sudo apt install bind9

配置文件位于/etc/bind/目录下,需根据实际需求修改named.conf.local文件。

启用DNS over HTTPS(DoH)

为提高安全性,可通过dnscrypt-proxy启用DoH,安装步骤:

sudo apt install dnscrypt-proxy
sudo systemctl enable --now dnscrypt-proxy

编辑/etc/dnscrypt-proxy/dnscrypt-proxy.toml,选择服务器列表后重启服务。


相关问答FAQs

Q1: 为什么修改了/etc/resolv.conf后DNS配置仍然无效?
A: 在Ubuntu 18.04及以后版本中,/etc/resolv.conf文件通常由systemd-resolved或NetworkManager动态管理,直接修改可能被覆盖,建议使用Netplan或NetworkManager工具进行永久配置,或通过sudo chattr +i锁定文件(需谨慎操作)。

Q2: 如何在Ubuntu中测试DNS解析速度?
A: 可使用dig命令结合时间戳测试解析速度,执行dig +time=1 example.com会显示查询耗时,或使用dnsperf工具进行批量测试(需先安装dnsperf)。resolvectl statistics也能提供缓存命中率等性能数据。

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/248870.html

Like (0)
小编小编
Previous 2025年9月29日 16:34
Next 2025年9月29日 16:36

相关推荐

发表回复

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