我想通过 IPv6 地址访问此地址:http:
//downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/
在我们的 Freifunk 路由器中,没有可用的 DNS,因此downloads.openwrt.org
无法解析名称。互联网上的所有服务器只能通过 ipv6 地址访问。现在我们无法从路由器内部访问这个包镜像,通过opkg install
.
这将是一个解决方案,如果我们可以将其添加到我们的配置中,例如:
http://[2001:db8::1]/attitude_adjustment/12.09/ar71xx/generic/packages/
我们的路由器正在运行 OpenWRT 并且仅支持 IPv6,我想添加一个条目/etc/hosts
,以便域名downloads.openwrt.org
解析为适当的 IPv6 地址
是否可以将 IPv6 重定向到域?
您不能简单地“添加”一个 IPv6 地址来访问只能通过 IPv4 访问的主机。这是两个完全不同且不兼容的协议。
为了让您的纯IPv6网络能够访问 IPv4 地址,需要一个可以访问 IPv4 的网关。这通常使用 NAT64/DNS64 网关完成,它将 IPv4 地址转换为“假” IPv6 地址,并接受与这些“假” IPv6 地址的连接并将连接转换为 IPv4 网络。这些 IPv6 地址将在该
64:ff9b::/96
范围内。在 OpenWrt 中,NAT64 使用 Tayga 完成,DNS64 使用 bind。OpenWrt wiki中提供了有关如何设置它们的更多信息。你需要调整态度或打破障碍;以前的 OpenWrt 版本没有对 IPv6 和其他技术提供足够完整的支持。
您可以将公共 DNS64/NAT64 解析器添加到您的 /etc/resolv.conf:
您还可以使用464xlat在客户端“还原”翻译。464xlat 使用相同的工具。(上面提到过,但只是以不同的方式)。使用 464xlat,您还可以使用文字 IP 访问 url。
该域
downloads.openwrt.org
有一个 IPv4 地址,但没有 IPv6 地址。因此,除非您使用转换机制,否则您无法通过 IPv6 访问它。您可以使用 NAT64 来创建从仅 IPv6 客户端到该仅 IPv4 服务器的 TCP 连接。但是为什么要使用仅 IPv6 的客户端呢?采用双栈是一个好主意,但目前仅 IPv6 仅用于测试那些知道在拥有太多仅 IPv4 主机的世界中引入的限制的人。
如果您设法打开到服务器的 TCP 连接,您将面临另一个挑战。HTTP 1.1 版要求客户端通过 HTTP 连接发送它正在联系的服务器的名称。许多网站,包括
downloads.openwrt.org
要求发送此标头。如果 HTTP 客户端知道要发送的域名,则它只能发送该标头。因此,您最好让客户端知道原始 URL 并以某种方式授予其访问权限以将该名称解析为 IP 地址。如果它必须是 IPv6,那仍然意味着您需要 NAT64。但是可以输入从域名到 NAT64 IP 地址的映射
/etc/hosts
,并且应该可以正常工作。这可能适用于单个域名。但是,如果您希望仅 IPv6 的主机能够访问多个域,而不必将每个域都放入
/etc/hosts
NAT64 地址,则需要动态转换地址。这就是 DNS64 的用途。现在,如果客户端确实具有 IPv4 访问权限并且仅缺少 DNS,则答案会变得简单得多。
/etc/hosts
只需像 davidgo 建议的那样输入 IPv4 地址即可。当然,每次服务器的 IP 地址更改时,您都需要更新该文件,希望不会太频繁。我认为您可能问错了问题 - 您不能将 IPv6 地址重定向到域,因为该过程以相反的方式工作,即域解析为 [或许多] 主机。
我无法在您的路由器上找到任何信息,但如果它正在运行 OpenWRT,您应该能够在 /etc/hosts 中添加一个条目,以便域名解析为适当的 IP 地址。