我有一个仅IPv6的客户端和一个IPv6 / IPv4双栈服务器。 客户端可以通过IPv6连接到服务器。 我想在服务器上build立一个隧道,以便客户端可以通过服务器访问IPv4资源。 客户端运行OS X,服务器运行Ubuntu。 我怎么从这里开始?
需要注意的是,IPv6和IPv4是两个完全独立的名称空间和协议。 IPv6客户端必须以某种方式将该IPv4资源parsing为IPv6地址。 这很棘手。
但是,您可能能够利用称为NAT64的某种IPv6过渡技术。 虽然名称parsing仍然是一个问题,但v6 < – > v4翻译完成。 尽pipe有一些项目( 一个这样的 ),但是在Linux空间中还没有很多。
在Ubuntu服务器上启用或使用现有的IPv6堆栈可能会更简单。
如果您的服务器为客户端提供DNS服务,则可以使用dnsmasq将该服务器的IPv6地址提供给客户端。 这可能就像将服务器的IPv6地址添加到/etc/hosts文件一样简单。
shorewall6软件包可以用来构buildIPv6防火墙。
avahi-daemon软件包可以用来提供服务器上的可用服务列表给OS X客户端。 对于本地访问服务,这可能是最简单的解决scheme。 如果你在服务器上有一个IPv6地址,这个效果很好。 (最有可能的是你)
要确定您是否已经拥有IPv6地址,请运行ifconfig命令并查找从inet6 addr:开始的行。
编辑:如果你想启用客户端来启用通过服务器的网页访问,像squid3 (版本3.1)的IPv6networking代理将工作。 (最后一次编辑是通过使用IPv6上的squid3来完成的。)这可以通过avahi发现您的服务器也可以为外发电子邮件提供中继服务。
对于其他服务,可能有代理服务器可用,或者您将需要使用IPv6到IPv4 NAT。 从我所看到的这些提供者的发展来看并不重要。
Google和其他一些提供商可以使用IPv6,因此您可以使用IPv6获得有限的Internet连接。 由于大多数ISP不支持IPv6,您可能需要使用隧道才能连接到Internet。 我从6to4隧道开始,搬到6in4隧道。 虽然我在OpenWrt上实现了我的隧道,但对于Ubuntu来说,这个过程是相同的。 在直接连接到ISP调制解调器的服务器上实现更容易。
你应该在这里使用DNS64 / NAT64。 在尝试连接到仅支持IPv4的主机时,这将为您的仅支持IPv6的主机提供有效的DNS和IP信息,并将IPv6数据包转换为IPv4数据包。
至于软件包,BIND9有DNS64。 和tayga NAT64。 它被确认在Ubuntu 14.04 LTS(可靠)下工作。