因此,我们有一个 AWS 账户,其中运行着我们的 DNS 服务器,可以解析我们的本地实例。
当我 ping 本地服务器时,这是我收到的响应:
ping myServer.example.com
PING myServer.example.com (xx.xx.xx.xx) 56(84) bytes of data.
64 bytes from ip-xx.xx.xx.xx.ec2.internal (xx.xx.xx.xx): icmp_seq=1 ttl=123 time=10.4 ms
64 bytes from ip-xx.xx.xx.xx.ec2.internal (xx.xx.xx.xx): icmp_seq=2 ttl=123 time=10.3 ms
64 bytes from ip-xx.xx.xx.xx.ec2.internal (xx.xx.xx.xx): icmp_seq=3 ttl=123 time=10.5 ms
该服务器位于我们的数据中心内,但由于某种原因,响应返回的是ec2.internal (AWS DNS Name)
这是我期望它返回的内容:
ping myServer.example.com
PING myServer.example.com (xx.xx.xx.xx) 56(84) bytes of data.
64 bytes from xx.xx.xx.xx (xx.xx.xx.xx): icmp_seq=1 ttl=123 time=10.4 ms
64 bytes from xx.xx.xx.xx (xx.xx.xx.xx): icmp_seq=2 ttl=123 time=10.3 ms
64 bytes from xx.xx.xx.xx (xx.xx.xx.xx): icmp_seq=3 ttl=123 time=10.5 ms
我是否错过了 DNS 服务器上的某种设置,从而导致了这种行为,或者这是正常现象?
答案1
虽然不太清楚你的意思“我们的 DNS 服务器在其中运行”(它们可能正在“运行”,但我们不知道它们实际上提供什么服务)——但根据观察到的行为,我怀疑您没有将它们用作 DNS 解析器,因此它们在这里不是一个因素……或者如果您是,他们正在将上游查询交给 VPC 解析器。
如果在 VPC 中启用了enableDnsHostnames
和,AWS 提供的 DNS 解析器将自动将任何 RFC-1918 地址解析为以下格式:enableDnsSupport
私有(内部)DNS 主机名解析为实例的私有IPv4地址,并采用
ip-private-ipv4-address.ec2.internal
us-east-1区域的形式,以及ip-private-ipv4-address.region.compute.internal
其他区域(其中private.ipv4.address
是反向查找IP地址)的形式。http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html
文档中提到了“实例的私有 IPv4 地址”,但实际上任何私有 IP 地址的解析方式类似 - 它不需要与 EC2 实例相关。私有 IP 地址在哪里,或者它是否“在”任何地方都无关紧要,只要 DNS 查询源自 VPC 内部、使用 AWS 解析器并且针对私有 (RFC-1918) IP 地址即可。
$ dig -x 192.168.1.1 # -x tells dig we want a reverse-DNS lookup
;; ANSWER SECTION:
1.1.168.192.in-addr.arpa. 40 IN PTR ip-192-168-1-1.ec2.internal.
$ dig ip-192-168-1-1.ec2.internal
;; ANSWER SECTION:
ip-192-168-1-1.ec2.internal. 19 IN A 192.168.1.1
请注意,我运行这些的 VPC 实际上位于 10.xxx 空间中。我的路由表或网络中没有 192.168.xx,但这是一个 RFC-1918 地址,因此它可以工作。
但是为什么你看不到“真实”的主机名?
从设计上来说,反向 DNS(“地址的名称”)与正向 DNS(“名称的地址”)并不相关。
如果database.example.com
解析为A
记录10.1.2.3
,则不一定10.1.1.10 also
解析为PTR
记录database.example.com
。这需要在两个不同的 DNS 区域中输入两个不同的条目(或为您执行此操作的 DNS 服务器)。
当然,前向入口是database.example.com.
。
由八位字节反转的 IPv4 地址形成的反向条目,3.2.1.10.in-addr.arpa.
其中in-addr.arpa.
是为此目的全局保留的特殊域。上面-x
的选项dig
会为您完成此重写,因此您不必说dig 1.1.168.192.in-addr.arpa PTR
。
除非实例如果您的 VPC 中的 DNS 解析器使用的是您自己的 DNS 解析器(而不是 VPC 提供的解析器),这是标准的、预期的行为。虽然可以“纠正”它(通过部署您自己的 DNS 解析器,并在部分时间使用权威数据,in-addr.arpa
然后对DHCP 选项集的 VPC,以便实例使用它们而不是内部机制),这是不明智的,因为它会不必要地引入新的故障点(具体来说,您的 DNS 解析器),使您的所有 EC2 实例都依赖于这些机器进行所有 DNS 查找。当然,如果您已经拥有它,那么可能只是您需要一个x.x.in-addr-arpa
区域来处理 VPC 地址空间的反向解析。
但是正向和反向 DNS 之间的这种区别解释了你所看到的情况 ping
。不是显示它用来查找正在 ping 的地址的名称。它显示它在查找响应 IP 地址的指针记录时收到的名称,以便识别该 IP 地址。