AWS Directory Services无法解析VPC内私有IP资源问题求助
解决VPC内Microsoft AD导致DNS解析异常的问题
嘿,我之前在AWS上搭Microsoft AD的时候也碰到过一模一样的DNS问题,折腾了好一阵才搞定,给你几个亲测有效的排查和解决步骤:
1. 先检查VPC的DHCP选项集配置
这是最基础的一步,得确保VPC里的资源都用AD的DNS服务器来解析:
- 登录AWS控制台,进入VPC服务,找到「DHCP选项集」,查看你的VPC关联的选项集里,
domain-name-servers是不是设置成了Microsoft AD域控制器的私有IP(别用默认的VPC Resolver地址,比如VPC网段+2)。 - 如果之前是默认的选项集,得新建一个指向AD私有IP的DHCP选项集,再关联到你的VPC上。
2. 给Microsoft AD配置DNS转发规则(重中之重)
这是解决Route53解析失败、RDS返回公网IP的核心!默认情况下AD的DNS不知道怎么处理AWS内部域名,得让它把这些请求转发给VPC Resolver:
- 远程登录到你的AD域控制器,打开「DNS管理器」。
- 右键点击你的AD域名,选「属性」→「转发器」,点击「编辑」,添加你的VPC Resolver地址(就是VPC网段的第二个IP,比如VPC是10.1.0.0/16,那就是10.1.0.2)。
- 要是你有自己的Route53托管域,还得设置条件转发器:右键DNS管理器里的「条件转发器」→「新建条件转发器」,输入你的托管域名,再添加VPC Resolver地址,勾选「存储在Active Directory中」,选好复制范围就行。
这样AD收到AWS相关域名的请求时,就会转交给VPC Resolver,就能拿到正确的私有IP或者Route53记录了。
3. 验证RDS和Route53的解析结果
改完配置后,得测试一下是不是生效了:
- 在VPC内的EC2实例上,用
nslookup your-rds-instance.rds.amazonaws.com命令测试,看看返回的是不是RDS的私有IP。 - 再测试你的Route53托管域名,比如
nslookup your-domain.example.com,看能不能拿到正确的记录。
4. 检查安全组和网络ACL的流量权限
别让安全组或者ACL挡住了DNS流量:
- 确保AD域控制器的安全组允许VPC内所有资源的UDP/TCP 53端口入站请求。
- 确保AD域控制器能访问VPC Resolver,网络ACL要允许UDP/TCP 53的出站和入站流量。
5. 刷新DNS缓存
不管是EC2实例还是AD域控制器,旧的DNS缓存可能会干扰测试,赶紧清掉:
- Windows实例:打开命令提示符,跑
ipconfig /flushdns。 - Linux实例:根据发行版来,比如
systemd-resolve --flush-caches或者service nscd restart。
补充一句:之前AWS支持应该也会提到,核心逻辑就是让AD DNS作为VPC内的主要DNS服务,同时把AWS专属域名的请求转发给VPC Resolver,这样既满足AD的域内解析需求,又能正常解析AWS的内部资源。
内容的提问来源于stack exchange,提问作者Chris Smeal
相关产品推荐
相关产品推荐

