IPv6 与 IPv4 在地理定位方面的比较

IPv6 与 IPv4 在地理定位方面的比较

首先声明:这个问题来自 IPv6 主题的新手。

我们的网络服务器最初启用了 IPv6,但 Nginx 配置不正确,因此使用 IPv6 的用户会遇到错误,网站无法加载。

配置 Nginx 以监听 IPv6 后,网站可以正常加载,但对于使用 IPv6 的用户,地理定位失败(我们使用 Maxmind 免费数据库),因此他们都被定位在美国。

然后我禁用 IPv6 支持,现在它似乎运行良好,即使客户端使用 IPv6,我的网站也可以看到 IPv4,然后在正确的国家/地区对其进行地理定位。

问题是:

  • 当 IPv6 客户端查询我的网站时,究竟会发生什么?如果他也有 IPv4,那么 IPv6 就失去了意义(因为我们的 IPv4 快用完了)?
  • 基于 IPv4 的地理定位可靠吗?
  • 不支持 IPv6 有什么缺点吗?

答案1

配置 Nginx 以监听 IPv6 后,网站可以正常加载,但对于使用 IPv6 的用户,地理定位失败(我们使用 Maxmind 免费数据库),因此他们都被定位在美国。

确保您使用的是正确的数据库。一些 geoip 产品有针对 IPv4 和 IPv6 的单独数据库(AIUI 和 maxmind 旧产品分为单独的 v4 和 v6,而 geoip2 产品在一个数据库中涵盖两者)。

当 IPv6 客户端查询我的网站时,究竟会发生什么?如果他也有 IPv4,那么 IPv6 就失去了意义。

有不同类型的客户需要考虑。

  1. 仅限 IPv4 的客户端,只能使用 IPv4,如果仅限 v6,则将无法访问您的站点。
  2. 真正的仅 IPv6 客户端。如果您的网站仅支持 IPv4,则这些客户端将无法访问您的网站。目前此类客户端极为罕见。
  3. 传统的双栈客户端同时具有 IPv4 和 IPv6。IPv4 很可能在前提边界进行网络地址转换,并且越来越有可能由 ISP 进行网络地址转换。
  4. 仅使用基于 ISP 的 DS-Lite 网关的 IPv6 客户端访问 IPv4 Internet。
  5. 仅使用基于 ISP 的 NAT64/DNS64 网关的 IPv6 客户端访问 IPv4 Internet。

情况 1 和 2 非常明显。

对于情况 3 和 4,客户端可能会尝试 IPv4 和 IPv6。一般来说,如果发现两者都有,它会首先尝试 IPv6。

对于案例 5,如果存在记录,客户端将使用您的 IPv6 地址。如果您不提供 IPv6 地址,它将使用由 NAT64/DNS64 网关合成的 IPv6 地址。然后,NAT64 会将来自客户端的 IPv6 流量转换为 IPv4 流量以发送给您。

(这是因为我们的 IPv4 用完了)?

最初的想法是,我们将从仅使用 v4 转向双栈。然后,一旦每个人都使用双栈,我们就可以开始关闭 IPv4。希望这能在 IPv4 地址用完之前实现。

这并没有发生,原因有很多,包括象牙塔标准忽视了互联网的现实,以及当没有其他人这样做时很难为 IPv6 建立商业案例这一简单事实。

因此,现在我们处于一个令人悲伤的境地:IPv4 地址基本上已经用完了,但互联网的大部分仍然仅限于 IPv4。

因此,互联网服务提供商被迫采取行动,在 IPv4 耗尽后继续发展,许多服务仅支持 IPv4。他们基本上有三个选择。

  1. ISP 级别的传统 NAT(通常称为“运营商级 NAT”)。这可能会或可能不会伴随推出 IPv6 双栈。
  2. DS-Lite。在此系统中,IPv4 数据包被封装(通常由 CPE 封装)并通过隧道传输到 ISP 上的特殊 NAT。此 NAT 具有扩展的映射表,不仅可以识别内部 IP 和端口,还可以识别隧道传输流量来自哪个 IPv6 地址。
  3. NAT64/DNS64。在此系统中,ISP 的 DNS64 服务器会合成没有任何指向 NAT64 框的主机名的 AAAA 记录。然后,NAT64 服务器将客户端 IPv6 流量转换为 IPv4 流量。

所有这些选项最终都归结为实施允许多个客户共享 IPv4 地址的机制。

基于 IPv4 的地理定位可靠吗?

地理定位始终依赖于地理定位数据的准确性。随着 IPv4 地址越来越稀缺,它们可能会被不断移动,从而降低地理定位的准确性。

此外,由于 IP 共享机制,不同位置的用户可能使用同一个 IP。地理位置数据库对此无能为力。

不支持 IPv6 有什么缺点吗?

除了地理位置问题之外,还有三个主要考虑因素。

  1. 性能和可靠性。ISP 可用于在多个用户之间共享 IPv4 地址的所有机制都可能降低性能和可靠性。它们降低的程度取决于 ISP 部署它们的能力。
  2. 滥用控制。如果您拥有的只是共享的 IPv4 地址,那么追踪滥用者(禁止他们或向其 ISP 举报)将变得更加困难。
  3. 长期未来。目前仍有足够多的 v4 专属内容,ISP 被迫为其用户提供访问 v4 专属内容的机制。但最终可能会出现 v4 专属内容数量下降到一定程度,ISP 不再认为有必要继续维持这些机制。

答案2

如果国家级粒度对您来说已经足够,那么您可以简单地依赖 whois。不要对您看到的每个客户端 IP 地址都查询 whois。当您看到新 IP 并查询 whois 时,请缓存该范围,以便将来对该范围内的 IP 地址的请求不会触及 whois。如果您没有收到 whois 的回复,那么在接下来的 24 小时内不要尝试对同一个 /32 使用 whois。

如果您需要更细粒度的数据,或者如果 whois 数据的缓存比您想要实现的更复杂,那么您需要找到一个可以为您提供 IPv6 数据访问权限的提供商。您不必为 IPv4 和 IPv6 使用同一个提供商。

对于同时使用 IPv4 和 IPv6 的客户端,您可以自行构建有关地址对应关系的数据。如何做到这一点之前回答过

如果客户端和服务器都支持双栈,则由客户端决定使用 IPv4 还是 IPv6。自 2010 年以来,客户端尝试使用两者中速度最快或最可靠的协议被认为是最佳实践。

有些客户端的 IPv6 连接比 IPv4 连接更可靠。如果您的网站仅支持 IPv4,这些客户端会觉得您的网站不可靠。这种情况的用户比例将不断增长。

相关内容