![仅 IPv6 客户端到 IPv6/IPv4 双栈服务器隧道?](https://linux22.com/image/565939/%E4%BB%85%20IPv6%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%88%B0%20IPv6%2FIPv4%20%E5%8F%8C%E6%A0%88%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%9A%A7%E9%81%93%EF%BC%9F.png)
我有一个仅支持 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(可信赖)下运行。