在我进行研究的时候,我发现了以下相关主题:通过 ipv4 网络访问 ipv6 网站和仅 IPv4 客户端可访问 IPv6 Web 服务器。
我的情况:我家里有一个公共 ipv6 和一个本地 ipv4。我努力尝试转发端口,但看起来我进入了 NAT,在另一个 NAT 后面(?)。因此,我尝试在 LAN 之外访问我的 ipv6 地址,并成功了,因此我在 raspberry pi(也有一个 ipv6)上设置了一个简单的 apache web 服务器,并将其公开给不同的 DNS 提供商:dioniso.ddns.net、dioniso.crabdancer.com 和 dioniso.dynv6.net。
因此,我只能在具有隧道的 ipv6 或 ipv4 的 PC 上访问这些网站。
问题是,ipv4 如何访问此网站?有些主题说我需要代理来“翻译”ipv6-ipv4。这真的有必要吗?如果是,我在哪里可以找到提供商来做这件事?
有人能给我一些建议吗?我很迷茫。
答案1
是的,如果您的 Web 服务器只有 IPv6,而访问者只有 IPv4,那么他们将无法通信。您需要一个可以访问 IPv4 和 IPv6 的转换器。
大致有两种翻译方法:
- 反向代理
- 西印度理工学院
Facebook 在其服务器群中使用 SIIT-DC。他们在内部使用 IPv6,并使用 SIIT-DC 将传入的 IPv4 流量转换为 IPv6。不过,我不知道有任何提供商提供此类家庭使用服务。
您可以做的是租用一台同时具有 IPv4 和 IPv6 的虚拟专用服务器,并在其上设置反向代理。然后访问者可以通过 IPv4 联系服务器,服务器可以通过 IPv6 联系您的 Web 服务器。我过去曾使用 Apache、Nginx 和 haproxy 完成过此操作。配置并不太难,但您需要有一台可以运行它的服务器……
我写了一篇文章关于使 IPv4 内容可通过 IPv6 访问的选项。您所需要的基本上是相反的:使 IPv6 内容可通过 IPv4 访问。但概念是一样的。
一个简单的 haproxy 配置:
listen webserver1
bind 192.0.2.1:80
mode tcp
server webserver1 2001:db8:abc:123::cafe:80
答案2
非常感谢Sander,他的回答指导我找到了这个解决方案:
在 Raspberry IPV6 网站上,只需设置 apache 来监听端口:666
在我的具有公共 IPV4 的 VPS 上,安装了 socat 并运行以下命令:
socat TCP4-LISTEN:666,fork,su=nobody TCP6:[raspberrypi_ipv6_address]:666
因此,来自 IPV4 端口 666 的所有传入数据都将被重定向到我的 IPV6 端口 666。
这不是专业的做法,但对我来说很有效!