我如何从仅限IPv6的networking到达IPv4地址?

我想通过IPv6地址到达这个地址:
http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/

在我们的Freifunk路由器中没有可用的DNS,因此名称downloads.openwrt.org无法parsing。 互联网上的所有服务器只能通过ipv6地址重新连接。 现在我们无法从路由器内部通过opkg install安装软件包。

这将是一个解决scheme,如果我们可以添加到我们的configuration例如:

 http://[2001:db8::1]/attitude_adjustment/12.09/ar71xx/generic/packages/ 

我们的路由器正在运行OpenWRT,并且仅支持IPv6,我想在/etc/hosts添加一个条目,以便域名downloads.openwrt.org将parsing为适当的IPv6地址

是否有可能将IPv6redirect到域?

您不能简单地“添加”IPv6地址到达只能通过IPv4访问的主机。 这是两个完全不同且不兼容的协议。

为了使您的IPv6 专用networking能够到达IPv4地址,需要一个可访问IPv4的网关。 这通常是通过NAT64 / DNS64网关完成的,该网关将IPv4地址转换为“假”IPv6地址,并接受与这些“假”IPv6地址的连接并将连接转换为IPv4networking。 这些IPv6地址将位于64:ff9b::/96范围内。

在OpenWrt中,NAT64是用Tayga完成的,而DNS64是用bind完成的。 有关如何设置的更多信息, 请参阅OpenWrt wiki 。 你需要态度调整或障碍断路器; 以前版本的OpenWrt没有足够完整的支持IPv6和其他技术。

您可以将公共的DNS64 / NAT64parsing器添加到您的/etc/resolv.conf中:

 nameserver 2001:67c:2b0::4 nameserver 2001:67c:2b0::6 nameserver 2001:778::37 nameserver 2001:8b0:6464::1 nameserver 2001:8b0:6464::2 

您也可以使用464xlat “还原”客户站点上的翻译。 464xlat使用相同的工具。 (上面提到,但只是以不同的方式)。 随着464xlat你也可以达到与字面IP的url。

域名downloads.openwrt.org有一个IPv4地址,但没有IPv6地址。 因此,除非使用翻译机制,否则无法通过IPv6访问它。 您可以使用NAT64来从仅IPv6客户端创build到该IPv4纯服务器的TCP连接。

但是,为什么你会使用IPv6的客户端? 进行双协议栈是一个好主意,但是目前仅用于testing那些知道在仅有IPv4主机太多的世界中引入的限制的人。

如果你设法打开TCP连接到服务器,你将面临另一个挑战。 HTTP版本1.1要求客户端通过HTTP连接发送正在联系的服务器的名称。 许多网站,包括downloads.openwrt.org需要这个头被发送。

如果您的HTTP客户端知道要发送的域名,则只能发送该标头。 所以你最好让客户知道原始的URL,并以某种方式给它的访问权限来parsing这个名字到一个IP地址。 如果它必须是IPv6,那还意味着你将需要NAT64。 但是,从域名到NAT64 IP地址的映射可以放在/etc/hosts ,并且应该可以正常工作。

这可能适用于个人域名。 但是,如果您希望只有IPv6的主机能够到达多个域,而不必将每个域都放在/etc/hosts ,并且需要NAT64地址,则需要dynamic地转换地址。 这就是DNS64的用途。

现在,如果客户端具有IPv4访问权限,并且只是缺lessDNS,答案就变得简单了。 只要将IPv4地址放在/etc/hosts就像davidgobuild议的那样。 每当服务器的IP地址发生变化时,您当然需要更新该文件,希望不会太频繁。

我想你可能会问错误的问题 – 你不能将IPv6地址redirect到一个域,因为这个过程是相反的,也就是说一个域parsing成一个或多个主机。

我在路由器上找不到任何信息,但是如果运行的是OpenWRT,你应该可以在/ etc / hosts中添加一个条目,这样域名就可以parsing到相应的IP地址。