我最近搬家了,我的新 ISP 提供了 DS-lite/carrier-NAT 连接,因此我没有“自己的”IPv4 地址,但我与许多其他人一起使用单个 IPv4 地址。结果,我无法获得传入的 IPv4 连接;调制解调器/路由器中甚至没有端口转发选项(我没有单独的路由器)。当然,由于我确实有自己的 IPv6 地址,因此问题较少,尽管我的印象是端口转发不适用于 IPv6 地址,因为 IPv6 没有 NAT。如果我错了,请纠正我。
现在问题来了:我有一些服务(特别是 PLEX 服务器)不能仅在 IPv6 上完全运行。服务器或多或少能够接收传入的 IPv6 请求,但一些(远程)客户端只能发出 IPv4 请求(4G 上的移动设备;chromecast 等),因此这些设备无法访问服务器。此外,PLEX 服务器可以将内容传送到 IPv6 地址,但通常所有客户端都尝试在无法访问的 IPv4 地址上进行身份验证。
我试图列出可能的规避措施:
- 使用端口映射服务,如feste-ip,将(远程)IPv4 地址上的所有请求映射到 IPv6 地址。我可以在 PLEX 服务器中定义“自定义服务器 URL”,我相信这将允许任何客户端通过此远程 IPv4 地址访问/验证。可能出现的问题:受限于端口映射服务的网速,端口映射服务为付费订阅;仅在 IPv4 网络上的客户端可能仍然没有实际访问权限?
- 我可以访问另一个(远程)网络,该网络确实有自己的 IPv4 地址。我可以尝试在此位置设置端口映射服务。可能的问题:我不确定如何进行此设置,远程网络在邻国,我不会经常有现场访问权限进行管理等,以及以上所有考虑因素减去付费订阅费
- 我可以在远程网络的树莓派上设置一个 VPN 服务器,它具有 IPv4 访问权限,在我的本地服务器上创建一个 VPN 客户端 docker 容器,并将 PLEX 容器附加到所述 VPN 客户端容器。想法/希望是,在本地网络上,我仍然可以通过 docker 主机访问 PLEX,并且对于外界来说,它看起来好像 PLEX 服务器位于远程位置。这里需要注意的是,PLEX 服务器的所有外部网络都必须通过远程位置进行路由。
- 咬紧牙关,寻找一个更好的 ISP,给我一个 IPv4 地址(不幸的是,这些在我目前的居住国非常罕见)。注意事项:互联网订阅费可能更高。
期待第三个选项,我已经在远程位置的树莓派 docker 主机上的 docker 容器中设置了一个wireguard 服务器(我目前实际上在那里)。如果第三个选项确实是要走的路,我应该使用 Wireguard,我应该使用 openVPN 还是应该在单独的问题中提出这个问题?
提前谢谢了。
是的,但更准确地说, IPv6不需要NAT。
IPv6 的 NAT 实现确实存在,用于处理一些不幸的情况(例如,托管服务提供商陷入了 IPv4 按单个地址收费的心态)。
但是,当您的主机拥有自己的全局地址时,NAT 和端口转发就变得多余了。
如果您只需要 HTTP 和/或 HTTPS,那么您可以使用“反向代理”,它通过 IPv4 接受请求(就像 Web 服务器一样),然后通过 IPv6 将它们中继到您的 PLEX 服务器。这要求代理同时具有 IPv4 和 IPv6。
响应也将通过同一个中继返回——这是不可避免的。
这不是 VPN 的要求。您可以让“默认”路由指向本地 ISP,同时仍然能够通过 VPN 连接接收连接和发送回复。如果您的服务器运行 Linux,请搜索“policy routing”和“ip rule add”。
没关系;与大多数其他 VPN 一样,两者都可以轻松提供所需的功能。
但是,如果您使用的是 Wireguard,您可能需要避免使用wg-quick,因为它可能会干扰“策略路由”设置(或者至少要说服它停止自动添加不需要的路由,我认为选项是
RouteTable = 0
.)。