You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置VPC Endpoint后EC2仍使用公网DNS的问题排查与解决

问题描述

我已经为ecs.ap-northeast-1.amazonaws.com配置了VPC终端节点,在该VPC内的EC2节点执行测试:

$dig +short ecs.ap-northeast-1.amazonaws.com
52.119.220.167

结果显示仍解析为公网地址。我通过Reachable Analyzer验证实例到VPC终端节点的连通性,结果显示可达且使用私有IP:

outbound header
172.18.125.102/32 0-65535 TCP 172.18.125.133/32 0-65535

inbound header
172.18.125.102/32 0-65535 TCP 172.18.125.133/32 0-65535

问题在于VPC终端节点可正常访问,但EC2节点未使用内部DNS解析。请问该问题原因是什么?如何修复?(是否与权限相关?若相关,在哪里查看错误码?我在CloudTrail中未找到线索)

我猜测问题与DNS有关,因此执行DNS查询,返回包含ADDITIONAL SECTION的结果:

[ec2-user@ip-172-18-125-133 ~]$ dig logs.ap-northeast-1.amazonaws.com NS

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.90.amzn1 <<>> logs.ap-northeast-1.amazonaws.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7113
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 8

;; QUESTION SECTION:
;logs.ap-northeast-1.amazonaws.com. IN  NS

;; ANSWER SECTION:
logs.ap-northeast-1.amazonaws.com. 6745 IN NS   ns-727.awsdns-26.net.
logs.ap-northeast-1.amazonaws.com. 6745 IN NS   ns-2000.awsdns-58.co.uk.
logs.ap-northeast-1.amazonaws.com. 6745 IN NS   ns-261.awsdns-32.com.
logs.ap-northeast-1.amazonaws.com. 6745 IN NS   ns-1057.awsdns-04.org.

;; ADDITIONAL SECTION:
ns-727.awsdns-26.net.   72139   IN      A       205.251.194.215
ns-727.awsdns-26.net.   72139   IN      AAAA    2600:9000:5302:d700::1
ns-2000.awsdns-58.co.uk. 81896  IN      A       205.251.199.208
ns-2000.awsdns-58.co.uk. 81896  IN      AAAA    2600:9000:5307:d000::1
ns-261.awsdns-32.com.   2908    IN      A       205.251.193.5
ns-261.awsdns-32.com.   2908    IN      AAAA    2600:9000:5301:500::1
ns-1057.awsdns-04.org.  55934   IN      A       205.251.196.33
ns-1057.awsdns-04.org.  55934   IN      AAAA    2600:9000:5304:2100::1

;; Query time: 5 msec
;; SERVER: 128.1.100.205#53(128.1.100.205)
;; WHEN: Thu Aug 10 10:56:47 2023
;; MSG SIZE  rcvd: 364

我检查了VPC的DHCP option set,其中包含多个域名服务器:128.1.100.xxx,128.1.100.xxx,AmazonProvidedDNS,这是否与问题相关?


原因分析与修复方案

核心原因:DHCP选项集的DNS服务器顺序问题

你的DHCP选项集里自定义DNS服务器(128.1.100.xxx)排在AmazonProvidedDNS前面,EC2节点会优先使用列表中靠前的DNS服务器。而这些自定义DNS未配置AWS服务的私有DNS解析规则,导致ecs.ap-northeast-1.amazonaws.com被解析为公网IP。从dig结果也能验证:查询使用的DNS服务器是128.1.100.205,而非AWS内部DNS。

修复步骤

  1. 调整DHCP选项集的DNS顺序:将AmazonProvidedDNS移到自定义DNS服务器的前面,确保EC2优先使用AWS内部DNS。AWS内部DNS会自动处理VPC终端节点的私有域名解析,返回对应私有IP。
  2. 验证DNS配置生效:在EC2节点执行以下命令,确认使用的DNS服务器已切换为AWS内部DNS(格式为VPC网段的第三个IP,比如VPC网段172.18.0.0/16对应的内部DNS是172.18.0.2):
    cat /etc/resolv.conf
    
  3. 重新测试域名解析:再次执行dig命令,确认返回私有IP:
    dig +short ecs.ap-northeast-1.amazonaws.com
    

关于权限的说明

这个问题和权限无关,所以CloudTrail里不会有相关日志。VPC终端节点连通性已验证正常,问题完全出在DNS解析环节。

额外验证点

如果调整DHCP选项集后仍未生效,可以:

  • 重启EC2实例,确保新的DHCP配置被加载;
  • 检查EC2实例是否手动配置了静态DNS(查看/etc/resolv.conf是否有手动添加的nameserver),如果有,需删除并恢复为DHCP自动分配。

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:56:02