通过代理服务器使仅支持 IPv6 的服务器可供仅支持 IPv4 的客户端使用

通过代理服务器使仅支持 IPv6 的服务器可供仅支持 IPv4 的客户端使用

我处于一种特殊的情况,我的家庭服务器(运行 Home Assistant 和其他软件的自定义堆栈)位于 CGNAT 后面,并且由于某些技术原因,我的运营商无法为我的建筑物激活专用 IPv4(我住在一个新开发区,显然为整个建筑物供电的本地光纤端点/交换机有这个限制)。

但是我们确实为每个公寓分配了一个 IPv6 段,并且使用 SLAAC,我的服务器会获得静态 IPv6。好吧,有点静态 - 显然我正在运行的配置启用了 SLAAC 隐私扩展,这意味着每次路由器或服务器重新启动时我都会获得一个新的 IPv6。因此,我还运行了 IPv6 动态 DNS 更新程序。

我想要实现的是在 Azure 中拥有一个小型虚拟机(我有一个祖父级的 MSDN 订阅,每月给我 130 欧元的信用额度),它会将来自外部网络的所有端口隧道传输到我的家庭服务器,有效地创建一种反向隧道。

我还想让支持 IPv6 的设备直接连接到我的服务器,并且有以下想法:

在 IPv4 上,A 记录将指向 Azure VM。然后,对此 VM 的所有请求都将转发到域的当前 AAAA 记录(从而支持此“漫游”服务器)。在 IPv6 上,将直接使用 AAAA 记录,允许直接连接到服务器。

我一直在研究各种解决方案,我看到提到的两个选项是 或socathaproxy两者似乎都需要对我想要转发的每个端口进行特定配置 - 但是我想覆盖所有端口以完全访问我的服务器(这也将处理防火墙)。 它们似乎也不支持域名定位,并且需要静态 IPv6 来重定向。

对此我最好的选择是什么?

答案1

您需要的是 SIIT-DC 的实现。Facebook 等公司使用它来使其仅支持 IPv6 的服务器能够从 IPv4 访问。有一个很棒的 Linux 内核模块可以实现这一点:https://jool.mx

您需要为每个 IPv6 服务器地址分配一个单独的 IPv4 地址(除了服务器自己的地址之外)。如果您要转换所有数据包,则转换器不能将该 IPv4 用于自身。

相关内容