![从 IPv6 地址连接到 IPv4 服务器](https://linux22.com/image/700669/%E4%BB%8E%20IPv6%20%E5%9C%B0%E5%9D%80%E8%BF%9E%E6%8E%A5%E5%88%B0%20IPv4%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我有一台同时具有 IPv6 和 IPv4 地址的服务器。是否可以通过 HTTP 连接到另一台 Web 服务器(我只知道它的 IPv4 地址)IPv6接口,以便该服务器只能看到我的 IPv6 IP 作为源地址?
答案1
简短回答:否
详细回答:IPv4 和 IPv6 是不同的协议。理论上,您可以从 IPv6 地址连接到 IPv4 服务,但您需要 NAT64,而这主要针对 IPv6 网络而设计。
答案2
更新反映评论:
我的以下回答是不正确的,但我怀疑(即希望)我不是唯一一个有类似误解的人,并且这个答案(更重要的是,它的评论)将有助于澄清一些事情。
主要问题是我误解了 6to4 的作用 - 6to4 并不(正如我最初的理解)为 IPv6 节点提供与 IPv4 节点通信的方法。它允许 IPv6 节点通过 IPv4 网络与另一个 IPv6 节点通信。
因此(正如已经指出的那样)这是一个错误的答案,并且没有特别涵盖提问者感兴趣的情况。
至于弃用 6to4,目前确实只是一项建议,仅适用于 6to4 的特定子集。似乎不再建议在新部署中使用 6to4。
NAT64(至少如此处所述:https://en.wikipedia.org/wiki/NAT64)可能更适合:
当在仅支持 IPv4 的服务器前面使用 NAT64 转换器以允许远程仅支持 IPv6 的客户端访问这些服务器时,无状态转换是合适的。有状态转换适合部署在客户端或服务提供商处,允许仅支持 IPv6 的客户端主机访问远程仅支持 IPv4 的节点。
原来的:
从技术上来说,这并非不可能:https://en.wikipedia.org/wiki/6to4。
假设您找到要使用的中继,该中继将代表您处理 IPv4 连接,并使其 IP(v4)地址成为目的地将看到的源。
然而,看看是否可以避免所有这些问题可能是有意义的,要么通过找到服务的 IPv6 地址(如果有的话),要么使用 IPv4 - 因为您的服务器同时具有这两种地址,所以只使用 IPv4 似乎比给您的服务带来额外的跳数和复杂性要容易得多。
听起来您正在使用远程端作为某种上游,因此延迟/响应能力大概也是一个考虑因素。
更新反射桑德·斯蒂芬的评论:6to4 自 2015 年起已弃用(https://datatracker.ietf.org/doc/html/draft-ietf-v6ops-6to4-to-historic-11),并且该文件建议使用 NAT64 作为替代方案(https://www.rfc-editor.org/rfc/rfc6146)。
因此,虽然仍然可以实现提问者想要的功能,但 6to4不是正确的做法。