我们的服务器当前仅限 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 地址。