我有一个可解析为 E 类 IP 的 DNS 名称,并且它能正常工作。这是怎么可能的?

我有一个可解析为 E 类 IP 的 DNS 名称,并且它能正常工作。这是怎么可能的?

我是一家云软件公司的软件工程师。通常情况下,我们有一个内部“开发”环境,我们将所有微服务的最新未发布版本部署到 AWS。

用户用来访问我们的开发环境的 Web URL 类似于app.dev.company-dev.com.company-dev.com只能在我们的企业 VPN 内解析。

在进行一些网络路由以允许流量从另一个 AWS VPC 到达此主机的过程中,我查找了app.dev.company-dev.com的 IP 地址。当时我已连接到 VPN。nslookup报告 IP 为240.x.y.z,其中有少量不同的值随x.y.z连续请求返回。我确信只是一点负载平衡;不用担心。

无论如何,我没有意识到240.*这是我们管理的子网之一,所以我去了其中一个可以查找 IP 信息的网站。我的理论是,这个名字受 CloudFlare 保护,而且这个 IP 是他们的。所以我粘贴了 IP,网站返回错误,说这是一个无效的 IP。什么?试了一下我自己的公共 IP,它工作正常。

因此我去了另一个 IP 测试网站,它返回了一条更有帮助但同样让我感到惊讶的消息:

Addresses starting with 240 or a higher number have not been allocated and should not be used, apart from 255.255.255.255, which is used for "limited broadcast" on a local network.

此时,我了解到 E 类地址的“保留用于实验”性质。我预感到 IPv4 地址空间的紧缩在某些时候会导致一些变化,而这些变化并没有反映在我迄今为止尝试过的工具中,于是我继续尝试了几个 IP 信息网站,但没有。据我所知,E 类地址仍是保留的,大多数路由器只是丢弃任何以此为目的地的数据包,这解释了为什么尝试pingtraceroute该 IP 会超时。

但是,尽管如此:如果我在浏览器中加载该 IP(连接到 VPN 时),我会得到一个损坏但显然是我们的 Web 应用程序版本(我不希望它通过 IP 完全正常工作)。如果我加载主机名?它运行正常,一如既往。

这是怎么回事?这怎么可能?

答案1

大多数路由器只是丢弃任何以此为目的地的数据包,这也解释了为什么尝试 ping 或跟踪该 IP 会超时。

有些路由器会这样做1,但有些路由器会将其视为常规单播 IP 地址范围,并将其路由只要他们有路线

尤其是 Linux,对于使用这些地址(例如,对于内部网络)没有硬编码限制。您可能无法 ping 该地址,因为它被分配给了不响应 ping 的主机;或者它被用作某些 NAT 方案的一部分(我怀疑是 NAT46)。

1(IPv6 吸取了教训,明确规定尚未分配的地址范围必须作为一般单播范围处理,而不能被隔离,以防止出现另一个“E 类”问题。)

相关内容