本文档详细介绍了在阿里云 ECS 环境下(Ubuntu 18.04 / 20.04 / 22.04 及以上版本)如何正确配置自定义DNS Server。
操作步骤
准备工作:禁用Cloud-init网络自动配置
云上 ECS 实例的网络默认由cloud-init管理。如果直接修改网络配置文件,重启后可能会被cloud-init还原。为确保自定义配置永久生效,需先禁用cloud-init的网络配置功能。
修改配置文件。
sudo vim /etc/cloud/cloud.cfg添加以下内容,禁用Cloud-init的网络配置。
network: {config: disabled}保存并退出。
场景一:保留DHCP获取IP,自定义 DNS(推荐)
适用于网卡继续自动获取 IP 地址(DHCP),但希望指定特定的 DNS 服务器。
编辑Netplan 配置文件。
sudo vim /etc/netplan/50-cloud-init.yaml修改配置内容如下。
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]应用配置。
sudo netplan apply
场景二:配置静态 IP 并完全自定义 DNS
适用于需要固定 IP 地址,或者希望彻底屏蔽阿里云内网DNS环境。
编辑Netplan配置文件:
sudo vim /etc/netplan/50-cloud-init.yaml修改配置内容如下(需手动填写 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 地址和网关正确无误,错误的配置将导致无法连接服务器。
应用配置:
sudo netplan apply
验证配置
配置应用后,请检查 DNS 是否生效。根据 Ubuntu 版本执行相应命令:
Ubuntu 20.04 及以下版本:
systemd-resolve --statusUbuntu 22.04 及以上版本:
resolvectl status
检查方法:在输出信息中找到对应的网卡(如 eth0),确认 DNS Servers 字段显示的是您配置的 IP 地址。
常见问题
为什么使用 nslookup 看到的DNS Server是127.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是否正确。
该文章对您有帮助吗?