ping 响应的奇怪行为

ping 响应的奇怪行为

因此,我们有一个 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.internalus-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 地址。

相关内容