我的情况如下,我在一台 Linux 机器(使用 apache2)上托管了一个网站,不幸的是我的路由器(unitymedia)只为 IPv6 地址提供了端口过滤,但没有为 IPv4 提供端口转发。然后我创建了一个 noip 帐户,创建了一个域名并在我的计算机上安装了一个 duc。Noip 为我的机器提供了一种虚拟 IPv4 号码,所以我认为它可以工作,不幸的是,来自 IPv6 的连接可以工作,但非本地的 IPv4 连接返回超时错误。(本地网络上的 IPv4 连接可以工作)。
我认为有两种可能性,盒子正在切断 IPv4 连接或者网站正在虚拟 IPv4 连接上使用 IPv6 回复(可能吗?)。
有什么办法可以解决这个问题?(我无法更换盒子/路由器)。
编辑:
如果我尝试使用 socat 我会收到以下错误:
sudo socat TCP4-LISTEN:22,fork,su = nobody TCP6:[2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:22
socat[10594] E bind(5, {AF=2 0.0.0.0:22}, 16): 地址已在使用中
答案1
您的主要问题是许多提供商(占欧洲所有互联网接入的 50%)仅为 IPv4 连接提供 CGNAT。
这意味着许多客户共享一个 IPv4 地址,因此您无法在这样的互联网线路上运行服务器。(如果两个或三个客户想要转发端口 80 怎么办?)
如果您的提供商没有 IPv6,那么在这种情况下您就非常不走运了。
但您有 IPv6。
你有两种选择:
另一台机器(运行 Web 浏览器的那台)也具有 IPv6。然后您可以直接连接到您的服务器。例如,您可以在仅支持 IPv4 的计算机上安装 Teredo 以访问 IPv6 网站。(不幸的是,许多 WLAN 路由器防火墙会阻止 Teredo。)
有商业“端口转发”服务,它们在固定 IP 地址上为您提供一些端口。传入(IPv4)连接被转发到互联网上的 IPv6 地址(您家中的服务器)。我不确定,但我想我读到过这些服务的起价为每年 5 欧元(实际上我认为您每年需要支付 15-20 欧元)。