IPv6 客户端通过 CloudFlare(带 mod_cloudflare)访问不支持 IPv6 的应用程序的 IPv4 服务器

IPv6 客户端通过 CloudFlare(带 mod_cloudflare)访问不支持 IPv6 的应用程序的 IPv4 服务器

我们的服务器当前仅限 IPv4

然而我们正在使用云Flare在它前面,我们想利用IPv6 兼容性它提供。

同时,我们服务器上有一些不支持 IPv6 的应用程序(例如 vBulletin),我们不想在那里引入任何意外行为。

我们也在使用mod_cloudflare获取客户端的实际 IP。

问题/ 尚未尝试以下内容,想先确认一下:

通过阅读 CloudFlare 文档,我了解到它的工作原理如下启用 IPv6 兼容性后

  • 带有 IPv4 的客户端 > CF > 带有 IPv4 的 CF > 带有 IPv4 的服务器 > mod_cf > 获取客户端 IPv4
  • 使用 IPv6 的客户端 > CF > 使用 IPv4 的 CF > 使用 IPv4 的服务器 > mod_cf > 获取客户端 IPv6

这里的问题是,我们获得了一个 IPv6 地址,它可能会给不支持 IPv6 的应用程序引入错误。

进一步阅读 CloudFlare 时,我发现他们有带覆盖标头的伪 IPv4

  • 使用 IPv6 的客户端 > CF > 使用 IPv4 的 CF > 使用 IPv4 的服务器 > mod_cf > 获取客户端伪 IPv4

这是在不破坏服务器上任何现有应用程序的情况下引入 IPv6 兼容性的正确方法吗?这种方法有什么缺点吗?

参考

答案1

代理服务通常会提供 IPv6 到 IPv4 的转换。有一些可选标头可以包含 IP 地址。如果您不使用它们,那么应该不会有问题。如果您的软件支持 IPv6,而您没有公共 IPv6 地址,那么出现问题的可能性就较小。

最有可能包含 IPv6 地址的标头是 X-Forwarded-For。Cloudflare 还会注入一个标头,指示其服务器看到的客户端地址。他们的选项会清理两个标头,因此无法处理 IPv6 地址的应用程序将看到 IPv4 地址。使用此选项应该不会有问题。

我建议您升级到 IPv6 功能,即使您不会立即为您的服务器获取 IPv6 地址。

相关内容