仅 IPv6 客户端到 IPv6/IPv4 双栈服务器隧道?

仅 IPv6 客户端到 IPv6/IPv4 双栈服务器隧道?

我有一个仅支持 IPv6 的客户端和一个 IPv6/IPv4 双栈服务器。客户端可以通过 IPv6 连接到服务器。我想在服务器上设置隧道,以便客户端可以通过服务器访问 IPv4 资源。客户端运行的是 OS X,服务器运行的是 Ubuntu。我该如何继续?

答案1

需要记住的是,IPv6 和 IPv4 是两个完全独立的命名空间,也是两个完全独立的协议。IPv6 客户端必须以某种方式将该 IPv4 资源解析为 IPv6 地址。这很棘手。

但是,您可能能够利用称为 NAT64 的某种 IPv6 转换技术。这可以完成 v6 <-> v4 转换,尽管名称解析仍然是一个问题。Linux 领域目前还没有很多可以做到这一点的项目,尽管有一些项目(一个这样的)。

答案2

在 Ubuntu 服务器上启用或使用现有的 IPv6 堆栈可能会更简单。

如果您的服务器为客户端提供 DNS 服务,您可能能够使用dnsmasq向客户端提供服务器的 IPv6 地址。这可能就像将服务器的 IPv6 地址添加到文件一样简单/etc/hosts

shorewall6软件包可用于构建 IPv6 防火墙。

avahi-daemon软件包可用于向 OS X 客户端提供服务器上可用的服务列表。对于本地访问服务,这可能是最简单的解决方案。如果您的服务器上有 IPv6 地址,则此方法非常有效。(您很可能有。)

要确定您是否已经有 IPv6 地址,请运行命令ifconfig并查找以 开头的行inet6 addr:

编辑:如果您想让客户端能够通过服务器访问网页,squid3可以使用 IPv6 Web 代理(例如 3.1 版)。(最后一次编辑是使用 IPv6 上的 squid3 完成的。)这可以通过avahi您的服务器发现,还可以为外发电子邮件提供中继服务。

对于其他服务,可能会有代理可用,或者您需要使用 IPv6 到 IPv4 NAT。据我所知,这些提供商的发展并不显著。

Google 和其他一些提供商都支持 IPv6,因此您可以使用 IPv6 获得有限的互联网连接。由于大多数 ISP 尚不支持 IPv6,您可能需要使用隧道来连接到互联网。我一开始使用6to4隧道并移至6合4隧道。虽然我在 OpenWrt 上实现了隧道,但 Ubuntu 的过程大致相同。在直接连接到 ISP 调制解调器的服务器上实现更容易。

答案3

您应该在此处使用 DNS64/NAT64。这将在尝试连接到仅 IPv4 主机时为您的仅 IPv6 主机提供有效的 DNS 和 IP 信息,并将 IPv6 数据包转换为 IPv4 数据包。

从软件包来看,BIND9有 DNS64。并且tayga执行 NAT64。已确认可在 Ubuntu 14.04 LTS(可信赖)下运行。

相关内容