Ubuntu 系统配置自定义DNS Server

更新时间:
复制为 MD 格式

本文档详细介绍了在阿里云 ECS 环境下(Ubuntu 18.04 / 20.04 / 22.04 及以上版本)如何正确配置自定义DNS Server。

操作步骤

准备工作:禁用Cloud-init网络自动配置

云上 ECS 实例的网络默认由cloud-init管理。如果直接修改网络配置文件,重启后可能会被cloud-init还原。为确保自定义配置永久生效,需先禁用cloud-init的网络配置功能。

  1. 修改配置文件。

    sudo vim /etc/cloud/cloud.cfg
  2. 添加以下内容,禁用Cloud-init的网络配置。

    network: {config: disabled}
  3. 保存并退出。

场景一:保留DHCP获取IP,自定义 DNS(推荐)

适用于网卡继续自动获取 IP 地址(DHCP),但希望指定特定的 DNS 服务器。

  1. 编辑Netplan 配置文件。

    sudo vim /etc/netplan/50-cloud-init.yaml
  2. 修改配置内容如下。

    network:
        version: 2
        ethernets:
            eth0:
                # 保持 DHCP 开启,用于自动获取 IP
                dhcp4: true# 【可选】如果不希望使用阿里云自动下发的内网 DNS,取消下面两行的注释# dhcp4-overrides:#     use-dns: false# 配置自定义 DNS
                nameservers:
                    addresses: [223.5.xx.xx, 8.8.xx.xx]
  3. 应用配置。

    sudo netplan apply

场景二:配置静态 IP 并完全自定义 DNS

适用于需要固定 IP 地址,或者希望彻底屏蔽阿里云内网DNS环境。

  1. 编辑Netplan配置文件:

    sudo vim /etc/netplan/50-cloud-init.yaml
  2. 修改配置内容如下(需手动填写 IP 信息):

    network:
        version: 2
        ethernets:
            eth0:
                # 关闭 DHCP
                dhcp4: false
                dhcp6: false# 配置静态 IP (格式:IP地址/子网掩码)
                addresses:
                  - 172.16.xx.xx/24
                
                # 配置网关 (请填写实际网关地址)
                routes:
                  - to: default
                    via: 172.16.0.253
                
                # 配置 MAC 地址
                match:
                    macaddress: 00:16:3e:xx:xx:xx
                
                set-name: eth0
                
                # 配置自定义 DNS
                nameservers:
                    addresses: [223.5.xx.xx, 1.1.xx.xx]
    重要

    配置静态 IP 时,请务必确认填写的IP 地址网关正确无误,错误的配置将导致无法连接服务器。

  3. 应用配置:

    sudo netplan apply

验证配置

配置应用后,请检查 DNS 是否生效。根据 Ubuntu 版本执行相应命令:

  • Ubuntu 20.04 及以下版本

    systemd-resolve --status
  • Ubuntu 22.04 及以上版本

    resolvectl status

检查方法:在输出信息中找到对应的网卡(如 eth0),确认 DNS Servers 字段显示的是您配置的 IP 地址。

常见问题

为什么使用 nslookup 看到的DNS Server127.0.0.53?

现象:执行nslookup 时,Server显示为 127.0.0.53:

Server:     127.0.0.53
Address:    127.0.0.53#53

原因:Ubuntu系统默认使用systemd-resolved服务管理 DNS。127.0.0.53是该服务在本地监听的存根解析器(Stub Resolver)地址。属于正常现象。经过本地DNS解析之后,才会经过配置的上级DNS server。可通过验证配置查看配置的DNS Servers是否正确。