aws 私有实例无法解析主机名(带有 NAT 实例的 VPC)

aws 私有实例无法解析主机名(带有 NAT 实例的 VPC)

请注意,这个问题不同于这个他们使用的是标准 AMI,而不是 NAT AMI(就我而言)。此外,就我而言,私有实例可以通过 ipaddress 访问互联网,但不能通过主机名解析访问互联网。

这是我的设置:

  • 具有 1 个公共子网和 1 个私有子网的非默认 VPC。
  • 具有弹性 IP 的公共子网上的 NAT 实例。使用的 Amazon Community NAT AMI:amzn-ami-vpc-nat-hvm-2017.09.1.20180108-x86_64-ebs ami-d4a883b1。Amazon Linux AMI 2017.09.1.20180108 x86_64 VPC NAT HVM EBS
  • 安全组按照NAT 安全组文档附加到上面的 NAT 实例
  • 私有实例(在私有子网上)只要使用 IP 地址,就可以通过 NAT 实例访问互联网。例如:curl http://74.125.135.99/有效但curl http://www.google.com无效

私有实例:

$cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search us-east-2.compute.internal

$ curl http://74.125.135.99/
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

$ curl http://www.google.com/
curl: (6) Could not resolve host: www.google.com

NAT 实例:

$ cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search us-east-2.compute.internal
options timeout:2 attempts:5
nameserver 10.0.0.2

更新:我的 VPC 上的 DNS 设置如下:

DNS resolution: yes
DNS hostnames: yes

答案1

VPC 中的 DNS 解析不依赖于 NAT 设备(无论是 NAT 实例还是 NAT 网关),并且由于其实施方式,通过网络配置错误来破坏 DNS 是非常困难的(甚至是不可能的),因为流量不需要通过安全组和网络 ACL 来允许。

如果它不工作,则表明它没有打开。

确保enableDnsSupport设置为true

https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html#vpc-dns-support

您可能希望enableDnsHostnames在那里激活。它不会将您的实例“公开”,尽管文档描述暗示它会这样做。

很少会出现不启用这两个选项的情况。

相关内容