从具有 IPv4 的客户端连接到具有 IPv6 地址的 VPN 服务器

从具有 IPv4 的客户端连接到具有 IPv6 地址的 VPN 服务器

我是一只在三个地方的候鸟。每个地方都有一个 OpenVPN 服务器,可用于多种用途:连接到 LAN 上的设备以更新配置或排除故障、购买时显示“家乡”IP(与送货/帐单地址一致)、绕过 IP 地理限制(例如,homedepot.com 无法从没有商店的国家/地区访问)、流式传输视频。

一切都很顺利(一切都是 IPv4),直到我巴黎的 ISP SFR 从提供公共 IPv4 地址切换到 CGNAT。IPv6 工作正常,所以我更换了服务器来使用它,以为一切都恢复正常了。但我到了曼谷,发现我这里的 ISP True 根本不支持 IPv6。

首先,我尝试了基于https://techcommunity.microsoft.com/t5/windows-insider-program/teredo-problem-on-windows-11/mp/2614126。它似乎连接正常(状态显示合格),Wireshark 捕获似乎显示 IPv6 数据包的正确封装,但另一端什么也没有到达。我知道路由器或 True 没有阻止 Teredo,因为控制数据包得到了正确的响应。我不知道如何进一步排除故障。

接下来,尝试https://tunnelbroker.net/。我无法完成设置——HE的指令在Win 10停止,Win 11中的netsh接口命令具有新的语法和语义,我在网上找不到解决方案。

然后尝试SOCAT IPv4 到 IPv6 路由我在洛杉矶的双栈 VPS 上。它功能齐全,但性能很差,主要是因为路由跨越了 18 个时区而不是 6 个时区。我可以使用新加坡等地的 VPS 来解决这个问题,但如果可能的话,我想避免费用、管理麻烦和额外的故障点。

最后,尝试了https://1.1.1.1/。例如,对于 SSH 访问,这很好用,我甚至可以启动 VPN,但 Cloudflare 会弄乱路由表,因此流量不会通过 VPN。当我尝试手动修复此问题时,他们很快就会覆盖我的更改。

答案1

感谢您建议我专注于Tunnel Broker;我能够找到解决方案。

问题是我误解了 HE 的这条注释:“当防火墙设备通过协议 41 时,请使用从设备的 DHCP 服务获取的 IPv4 地址,而不是您向我们的代理提供的 IPv4 端点。”我错误地认为 ISP 提供的消费者路由器不太可能处理协议 41,并且系统将回退到 UDP,因此该注释不适用。

如果还有其他障碍(路由器或 ISP),我不想浪费时间与 Windows 作斗争,因此我使用 Linux 测试了隧道。设置时没有错误,但在尝试传递流量时收到地址无法访问的 ICMP。仍然不明白发生了什么,我尝试了 MacOS。虽然 Apple 通常不以提供信息错误消息而闻名,但在这种情况下,它们正好显示“无法绑定到”。我替换了 MAC 的 LAN 地址,隧道开始工作。

我在 Linux 上做了同样的事情,也成功了,但在 Windows 上仍然不行。最终发现,在一个错误的 v6v4tunnel 命令之后给出一个正确的命令,不会更新坏隧道,而是创建一个新的。因此,在手动删除所有不正确的对象后,HE 推荐的 Win10 设置在 Win11 上运行良好!

再次感谢你的帮助。

相关内容