在 HTTPS 内部建立 wireguard 隧道(或任何 UDP 流量)

在 HTTPS 内部建立 wireguard 隧道(或任何 UDP 流量)

Wireguard 最近很火,当之无愧。我也迫不及待地想用 Wireguard 替换 OpenVPN。

但是,与 OpenVPN 不同,Wireguard 仅支持 UDP。我喜欢使用 TCP 端口 443,因为此端口很可能不会被防火墙阻止。OpenVPN 甚至有一个使用 HTTP 代理的选项。这非常酷,因为它使我能够在没有互联网路由并要求用户使用 Web 代理的网络中获得完全、不受限制的互联网访问。

我如何使用 wireguard 实现相同的功能?适用于 UDP 的 HTTPS 隧道?

让我们假设两个端点都运行 Linux,我对两者都有完全的根访问权限,当然我也有所有相关人员的许可来执行此操作。

答案1

似乎完全符合我的要求,尽管cntlm如果代理需要 NTLM 身份验证,您仍然需要一个附加代理。

答案2

官方文档解释了为什么他们不支持 TCP 和 DPI [1]

WireGuard 明确不支持通过 TCP 建立隧道,因为通过 TCP 建立隧道的网络性能非常糟糕。相反,将 WireGuard 的 UDP 数据包转换为 TCP 是上层混淆的工作

对于 TCP 隧道,他们建议使用 udp2raw[2] 或 udptunnel[3]。

请注意,这仅涵盖 TCP 隧道,它不会通过 HTTP(S) 屏蔽它,因此如果您的防火墙执行深度数据包检查或标头分析等,它将不受保护。您需要更高级的设置。

  1. https://www.wireguard.com/known-limitations/
  2. https://github.com/wangyu-/udp2raw
  3. https://github.com/rfc1036/udptunnel

答案3

HTTPS 不是用来传输隧道流量的东西,但是 websockets 适合这样做。

我认为你正在寻找隧道。它也能够通过 TLS 进行隧道传输。

答案4

可以运行SSH VPN(在端口 443 上使用 ssh)并在创建的接口上运行 Wireguard。

可能还可以在您现有的 OpenVPN 上运行 Wireguard。

Wireguard 的前提在设计上似乎是无连接的,所以我怀疑 TCP 或 HTTP 功能是否很快就会推出(抱歉)。

相关内容