![如何穿越限制性防火墙使用 OpenVPN?](https://linux22.com/image/1330942/%E5%A6%82%E4%BD%95%E7%A9%BF%E8%B6%8A%E9%99%90%E5%88%B6%E6%80%A7%E9%98%B2%E7%81%AB%E5%A2%99%E4%BD%BF%E7%94%A8%20OpenVPN%EF%BC%9F.png)
我目前正尝试在个人 VPS 上设置 OpenVPN,主要通过限制过多的防火墙进行连接。下面提到的所有设置在通过防火墙合理的连接时都可以正常工作。
我努力了:
- 在标准端口上运行的 OpenVPN
- OpenVPN 在端口 443 上运行(我从 VPS 上的命令行手动启动 OpenVPN,发现服务器报告连接几乎立即关闭,我认为这是防火墙上的 DPI 造成的)
- 在端口 443 上运行的 STunnel 可访问 OpenVPN 并规避 DPI。这是最成功的方法,允许通过 VPN 进行连接和互联网访问约 10-20 秒,然后强制关闭连接。
还有什么我还可以尝试吗?
答案1
一段时间后断开的连接有时表示存在每秒字节数类型的限制。尝试降低 VPN 连接速度是否有效。此外,如果您已为 UDP 配置 OpenVPN,请尝试 TCP(443 UDP 可能会被阻止,而 443 TCP 可能无法检测到)。
访问使用 SSL 的知名网站并检查证书。然后在家里做同样的事情。如果它们不匹配,则表示您所在的位置正在使用透明的 HTTPS SSL 代理,并且实际上可以看到您的 HTTPS 流量。
端口 443 以外的内容可能不会受到如此密切的监控。尝试 22。
听起来可能有点愚蠢,但尝试通过端口 80 执行此操作,看看会得到什么。您还可以尝试在您和 VPS 之间设置 HTTP 隧道,使流量看起来像 HTTP 请求。
如果你觉得自己疯了,试试碘。
答案2
我想我知道为什么 stunnel 方法会这样。这是因为您需要为 stunnel 服务器设置“静态路由”。让我解释一下。当您连接到 openvpn 服务器时,它会更改您的路由表并通过 vpn 路由所有数据包,但 openvpn 数据包除外。实际上,openvpn 将为您的服务器 IP 地址添加路由。但是当您使用 stunnel 连接到您的 openvpn 服务器时,您将 openvpn 连接到环回接口,并且没有到您 vpn 之外的服务器的路由,因此 stunnel 数据包想要转到服务器,然后它们转到您的 vpn,而您的 vpn 数据包转到 stunnel :)
因此,您需要向您的服务器 IP 添加一条通往您的 VPN(您的家庭路由器)外部的路由。
对于方法端口 443 的问题,我想说也许你的防火墙使用 SPI 或 DPI,并且可以轻松地将 openvpn 数据包与 https (ssl) 数据包区分开来。因此,最好的方法是使用 stunnel,或者如果防火墙阻止了 ssl 数据包,最好使用 obfsproxy 或 fteproxy 来绕过它。
(我知道这个帖子太旧了,但几周来我一直在寻找关于同一问题的答案,所以我想分享我对此的了解)
答案3
Reza Askari 的回复正好回答了第三个问题。我的 Linux 电脑和 Android 电脑上都出现了这种情况。
在计算机上,在通过以下方式连接到 OpenVPN 之前
sudo openvpn --config configFile.ovpn
您应该添加一条规则以从 OpenVPN 隧道中删除 stunnel 服务器。
sudo /sbin/ip route add stunnel_ip via default_gateway_ip
然后连接到您的 OpenVPN 服务器。完成后,您可以通过以下方式删除该规则:
sudo /sbin/ip route del stunnel_ip
为了让事情变得更简单,这样你就不会忘记,创建一个 shell 脚本来添加规则并运行 OpenVPN,当 OpenVPN 退出时,该规则将被删除:
sudo /sbin/ip route add stunnel_ip via default_gateway_ip
sudo openvpn --config configFile.ovpn
sudo /sbin/ip route del stunnel_ip
在 Android 上,使用“Arne Schwabe”的“OpenVPN for Android”客户端和“Balint Kovacs”的“SSLDroid”。
然后在 OpenVPN 客户端中,从通过 stunnel 的 VPN 配置文件中排除“SSLDroid”。
我本来很想对 Reza 的回答或评论投赞成票,但是这个声誉分数规则阻止了我。
答案4
除了 LawrenceC 的回答之外,我想补充一点,针对来自该网络的懒猴和其他“低速和慢速” DDoS 攻击的传出 DDoS 保护将在一定时间后强制关闭会话。
如前所述,这也可能是由流量限制引起的,但还有另一个原因导致这样的限制;使用当今(2021 年)的技术,限制每个设备的带宽很容易,并且不再使用会话超时来强制执行,但传出的 DDoS 保护也可能会踢出发送恒定数据流的会话,这些数据流使用的行为本质上是零星的协议,特别是当流量包含的数据包过于统一或过于碎片化而无法匹配合法 HTTPS 会话的行为时(许多洪水型 DDoS 攻击就是这样)。
近年来,状态防火墙取得了长足的进步,在防止数据泄露以及我刚才列出的 DDoS 保护的背景下,防止这种行为已经提上议事日程。
如今,要想通过精心构建的防火墙实现这一目标,需要的不仅仅是一些关于使用什么配置的建议。