5154

Good Luck To You!

Ubuntu系统DNS配置异常该如何排查解决?

在Linux操作系统中,Ubuntu以其易用性和强大的社区支持成为众多用户和开发者的首选,而DNS(Domain Name System,域名系统)作为互联网的核心服务之一,负责将人类可读的域名(如www.example.com)转换为机器可读的IP地址(如93.184.216.34),在Ubuntu系统中,正确配置和管理DNS对于网络连接、服务访问以及系统管理至关重要,本文将详细介绍Ubuntu系统中DNS的配置方法、常见问题及解决方案,帮助用户更好地理解和应用这一技术。

Ubuntu系统DNS配置异常该如何排查解决?

Ubuntu DNS配置基础

Ubuntu系统中的DNS配置主要通过以下几个文件和工具实现:/etc/resolv.conf/etc/netplan/目录下的配置文件(如01-network-manager-all.yaml)、以及NetworkManager和systemd-resolved服务。/etc/resolv.conf是传统的DNS解析配置文件,它列出了系统使用的DNS服务器地址,在较新的Ubuntu版本中,直接修改此文件可能无法持久化,因为NetworkManager或systemd-resolved会覆盖该文件,推荐使用netplan或NetworkManager进行配置。

对于使用netplan的系统,用户可以在/etc/netplan/目录下的YAML文件中定义DNS服务器,以下配置将系统的DNS服务器设置为8.8.8.8和8.8.4.4(Google Public DNS):

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

配置完成后,运行sudo netplan apply使更改生效,对于使用NetworkManager的系统,用户可以通过nm-connection-editor图形工具或命令行工具nmcli进行配置,使用nmcli命令将DNS服务器设置为1.1.1.1和1.0.0.1(Cloudflare DNS):

sudo nmcli connection modify "连接名称" ipv4.dns "1.1.1.1,1.0.0.1"
sudo nmcli connection up "连接名称"

systemd-resolved服务的作用

在Ubuntu 18.04及更高版本中,systemd-resolved服务默认启用,它提供了一个本地DNS缓存解析器,并负责管理/etc/resolv.conf文件,该服务通过本地回环地址0.0.53提供DNS解析,从而提高解析速度并减少对外部DNS服务器的依赖,用户可以通过systemd-resolve --status命令查看当前DNS解析状态,如果需要禁用systemd-resolved服务,可以运行以下命令:

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo rm /etc/resolv.conf
sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf

但请注意,禁用该服务可能会影响某些网络功能,建议仅在特殊情况下操作。

Ubuntu系统DNS配置异常该如何排查解决?

测试和验证DNS配置

配置完成后,用户需要验证DNS是否正常工作,常用的命令包括nslookupdigping,使用nslookup查询域名的IP地址:

nslookup www.ubuntu.com

如果返回正确的IP地址,则说明DNS配置成功,使用systemd-resolve --statistics可以查看systemd-resolved服务的缓存统计信息,帮助诊断DNS解析问题,如果遇到解析失败的情况,可以检查/var/log/syslog/var/log/daemon.log中的相关日志,排查网络连接或DNS服务器配置问题。

高级DNS配置:自定义DNS服务器和转发

在某些场景下,用户可能需要配置自定义DNS服务器或设置DNS转发,在局域网中,用户可以搭建本地DNS服务器(如BIND9),并将Ubuntu系统的DNS指向该服务器,安装BIND9的命令为:

sudo apt install bind9

配置文件位于/etc/bind/named.conf.local,用户可以在此定义域名区域和转发规则,对于需要转发特定域名的场景,可以在/etc/netplan/配置文件中添加dns-searchdns-options选项,或使用systemd-resolved的DNS转发功能。

常见问题及解决方案

  1. 问题:/etc/resolv.conf文件被自动覆盖,无法持久化修改。 解决方案:这是因为NetworkManager或systemd-resolved服务管理该文件,推荐使用netplan或NetworkManager进行DNS配置,如前文所述,如果确实需要手动修改/etc/resolv.conf,可以禁用相关服务(但可能影响系统功能)。

    Ubuntu系统DNS配置异常该如何排查解决?

  2. 问题:DNS解析缓慢或失败,但网络连接正常。 解决方案:首先检查DNS服务器地址是否正确,尝试更换公共DNS(如8.8.8.8或1.1.1.1),清除systemd-resolved的缓存:sudo systemd-resolve --flush-caches,如果问题依旧,检查防火墙或代理设置是否阻止了DNS查询。

FAQs

Q1:如何在Ubuntu中永久修改DNS服务器?
A1:对于使用netplan的系统,编辑/etc/netplan/下的YAML文件,添加nameservers地址并运行sudo netplan apply,对于使用NetworkManager的系统,使用nmcli命令修改连接配置,如sudo nmcli connection modify "连接名称" ipv4.dns "DNS地址"

Q2:如何查看当前Ubuntu系统使用的DNS服务器?
A2:运行cat /etc/resolv.conf查看,或使用systemd-resolve --status查看systemd-resolved的详细状态,对于NetworkManager管理的连接,可使用nmcli connection show "连接名称" | grep ipv4.dns

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.