假设我有一个 ipv6 互联网地址。是否可以连接到 ipv4 代理服务器。我一直在 ipv4 上尝试这种方案,效果很好,但 ipv6 不行。这可能是原因吗?
答案1
有多种方法可以运行仅 IPv6 网络但仍允许访问仅通过 IPv4 提供的服务。
如果您想使用仅 IPv6 设备的 HTTP 代理访问 IPv4 设备,那么代理设备将需要 IPv4 和 IPv6 地址(双栈)。
更有效的方法是采用与大多数家庭网络类似的方法,并使用一种 NAT(网络地址转换)形式,因为这允许所有协议工作,而不仅仅是 HTTP。这称为 NAT64,它利用网络边缘的单个设备将请求从 IPv6 转换为 IPv4,并将响应重新转换回来。
为了实现这一点,您还需要重新映射 DNS 查找,因为如果主机名只有 IPv4 地址,那么 IPv6 客户端将不知道要连接到哪里。因此,这需要运行一个特殊的 DNS 服务器(称为 DNS64)。
流程如下
- 客户端查找服务的 IPv6 地址
- 如果 DNS64 服务器只能找到 IPv4 地址,则会在该地址前添加特定的 IPv6 前缀以构建完整的 IPv6 地址。默认前缀为
64:ff9b::/96
。 - 网络配置为将以此前缀开头的所有地址路由到网络边缘同样具有 IPv4 连接的特定机器。
- 该机器使用 NAT64 剥离 IPv6 前缀并将源地址转换为其 IPv4 地址(将原始源 IPv6 地址存储在查找表中)。
- 当服务回复时,NAT64 设备将目的地重新映射到原始 IPv6 源地址,并将前缀重新应用于源地址。
我有一篇博客文章包含更多详细信息这里。