阿里云 ECS 实例如何修改内网 DNS 服务器地址?

文章导读
修改阿里云 ECS 实例内网 DNS 需谨慎,直接修改操作系统网络配置文件适用于单台临时调整,批量统一管理建议通过 VPC 控制台配置 DHCP 选项集。
📋 目录
  1. 高风险操作警告
  2. 命令速用版
  3. 为什么会这样
  4. 分步处理
  5. 怎么验证是否生效
  6. 配置错误回滚步骤
  7. 常见坑
  8. 参考来源
A A

修改阿里云 ECS 实例内网 DNS 需谨慎,直接修改操作系统网络配置文件适用于单台临时调整,批量统一管理建议通过 VPC 控制台配置 DHCP 选项集。

先说结论:修改 ECS 内网 DNS 需谨慎,优先保留阿里云默认 VPC DNS(100.100.2.136/138)以确保内网产品解析正常,变更建议通过 VPC DHCP 选项集下发。

  • 适合:需要指定特定 DNS 解析策略或合规要求的场景
  • 先准备:备份原有 DNS 配置,确认业务是否依赖内网域名
  • 验收:使用 nslookup 测试内网和外网域名解析是否均正常

高风险操作警告

直接覆盖 /etc/resolv.conf 会导致内网 DNS 丢失,影响 OSS、RDS 等内网服务访问。请勿直接使用 > 覆盖文件,建议使用追加 >> 或修改网络管理器配置。

命令速用版

# 查看当前 DNS 配置
cat /etc/resolv.conf

# 临时追加 DNS(警告:重启可能失效,务必保留内网 DNS)
echo "nameserver 8.8.8.8" >> /etc/resolv.conf

# Windows 查看 DNS
ipconfig /all

# Windows 刷新 DNS 缓存
ipconfig /flushdns

为什么会这样

阿里云 ECS 实例默认会自动配置 VPC 内部的 DNS 服务器地址(通常是 100.100.2.136 和 100.100.2.138)。这些 DNS 服务器不仅负责公网域名解析,还负责解析阿里云内网服务域名(如 OSS、RDS 的内网 endpoint)以及私有宿主机名。如果直接覆盖为公共 DNS,可能导致实例无法解析内网地址,进而影响内网访问速度或导致服务连接失败。

分步处理

1. 备份原有配置

在修改前,务必备份当前的网络配置文件。对于 Linux 系统,主要是 /etc/resolv.conf;对于 Windows,记录网卡 IPv4 设置中的 DNS 地址。

cp /etc/resolv.conf /etc/resolv.conf.bak

2. Linux 实例修改方法

阿里云 ECS 实例如何修改内网 DNS 服务器地址?

直接修改 /etc/resolv.conf 可能会被 cloud-init 或 NetworkManager 重置。建议根据系统版本修改持久化配置:

CentOS 8 / Alibaba Cloud Linux 3 (主流版本)

使用 nmcli 修改 NetworkManager 配置,重启网络后生效:

# 查看连接名称
nmcli connection show

# 修改 DNS (保留内网 DNS 100.100.2.136)
nmcli con mod <连接名> ipv4.dns "8.8.8.8 100.100.2.136"

# 重启连接
nmcli con up <连接名>

CentOS 6 / 7 (Legacy)

编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,添加 DNS1=DNS2=

DNS1=8.8.8.8
DNS2=100.100.2.136

修改后重启网络服务:

systemctl restart network

Ubuntu 18.04+ (Netplan)

编辑 Netplan 配置文件(通常在 /etc/netplan/ 目录下),在 nameservers 字段添加地址:

network:
  version: 2
  ethernets:
    eth0:
      nameservers:
        addresses: [8.8.8.8, 100.100.2.136]

应用配置:

netplan apply

3. Windows 实例修改方法

阿里云 ECS 实例如何修改内网 DNS 服务器地址?

进入控制面板 - 网络和共享中心 - 更改适配器设置,右键网卡属性,选择 Internet 协议版本 4 (TCP/IPv4),手动填写首选和备用 DNS 服务器地址。

4. 推荐方式:VPC DHCP 选项集

如果需要批量修改,登录 VPC 控制台,创建 DHCP 选项集,配置域名称和 DNS 服务器 IP,然后关联到对应的 VPC 或交换机。新实例会自动获取该配置,已有实例可能需要重启网络或实例生效。

怎么验证是否生效

修改完成后,通过以下命令确认配置已更新且解析正常:

# 查看配置文件是否已变更
cat /etc/resolv.conf

# 测试外网域名解析
nslookup www.aliyun.com

# 测试内网域名解析(关键)
nslookup oss-cn-hangzhou-internal.aliyuncs.com

如果内网域名无法解析,说明默认 VPC DNS 被完全覆盖,建议将阿里云 VPC DNS 添加为备用 DNS 服务器。

配置错误回滚步骤

若修改后无法联网,请立即恢复备份:

# Linux 恢复 resolv.conf
cp /etc/resolv.conf.bak /etc/resolv.conf

# Linux 恢复 NetworkManager (清空自定义 DNS 还原 DHCP)
nmcli con mod <连接名> ipv4.dns ""
nmcli con up <连接名>

常见坑

  • 配置被重置:Linux 实例重启后 /etc/resolv.conf 恢复原状,这是因为 cloud-init 或 DHCP 客户端重新获取了配置,需修改持久化配置文件。
  • 内网服务不可用:完全移除 100.100.2.136/138 会导致无法解析阿里云内网产品域名,建议保留为备用 DNS。
  • Windows 缓存问题:修改 DNS 后 Windows 可能仍使用旧缓存,需执行 ipconfig /flushdns
  • 安全组无关:DNS 修改是实例内部配置,与安全组规则无关,但需确保实例能访问新 DNS 服务器的 UDP 53 端口。

参考来源

  • 阿里云帮助中心 - 专有网络 VPC DNS 介绍
  • 阿里云帮助中心 - ECS 实例网络配置指南
  • 阿里云帮助中心 - 配置 DHCP 选项集