如何通过限制性防火墙使用OpenVPN?


13

我目前处于尝试在个人VPS上设置OpenVPN的情况,主要是通过过于严格的防火墙进行连接。通过合理的防火墙连接使用时,下面提到的所有设置均可以使用。

我试过了:

  1. 在标准端口上运行的OpenVPN
  2. 在端口443上运行的OpenVPN(我从VPS上的命令行手动启动OpenVPN,然后看到服务器报告连接几乎立即关闭,我认为这是防火墙上DPI的结果)
  3. 运行在端口443上的STunnel访问OpenVPN并逃避DPI。这是最成功的方法,在强制关闭连接之前,允许通过VPN进行连接和Internet访问约10-20秒。

还有什么我可以尝试的吗?


1
亲爱的上帝,您有什么“个人VPS”提供商会竭尽全力阻止您运行VPN?另外,还不清楚您是否尝试将VPS用作OpenVPN服务器,或者是否要使其成为客户端?
allquixotic 2012年

哇!我应该更清楚了。VPS提供商是Linode,他们绝对不会阻止任何事情。;)问题是我正在从客户端(我的笔记本电脑)连接到VPN,该客户端的Internet访问受到严格的防火墙保护。
RL Stine 2012年

1
正如您所暗示的,一般情况下,进行状态数据包检查的任何事物都将很容易检测到VPN解决方案。强制断开连接可能是由于流量分析方法查看了stunnel的https连接并“等待一会儿,标准的HTTP请求/响应连接几乎没有那么热闹!” -本质上,您被困住了。您可以尝试使用HTTPS代理。可能是您将请求作为HTTP正文(通过SSL)传递给servlet并转发您的请求的地方... o_O
allquixotic 2012年

3
您可能要记住,绕过公司防火墙实施的限制可能会违反公司策略。建议您与防火墙管理员讨论此问题。
Ansgar Wiechers 2012年

Answers:


11

一段时间后断开的连接有时表示每秒字节数的限制类型。尝试查看是否会减慢您的VPN连接的速度。另外,如果您已为UDP配置了OpenVPN,请尝试使用TCP(可能会阻止443 UDP,而可能无法检测到443 TCP)。

访问使用SSL的知名站点并检查证书。然后在家里做同样的事情。如果它们不匹配,则您的位置正在使用透明的HTTPS SSL代理,并且可以实际看到您的HTTPS流量。

可能不是由于端口443未被密切监视。尝试22。

听起来可能很愚蠢,但是请尝试通过端口80进行操作,看看会得到什么。您也可以尝试在您和VPS之间建立HTTP隧道,以使流量看起来像HTTP请求。

如果您精神错乱,请尝试


2
+1,尤其是碘!
0xC0000022L13年

5

我想我知道为什么stunnel methode表现得像那样。这是因为您可以为隧道服务器设置“静态路由”。让我解释一下。当您连接到openvpn服务器时,它将更改您的路由表并通过vpn路由所有数据包,但openvpn数据包除外。实际上,openvpn会为您的服务器IP地址添加一条路由。但是,当您使用stunnel连接到openvpn服务器时,会将openvpn连接到环回接口,并且在vpn之外没有通往服务器的路由,因此stunnel数据包想要进入服务器,它们将转到您的vpn,而vpn数据包将进入:)

因此,您需要添加一条到您的服务器ip的路由,该路由要在vpn(您的家庭路由器)之外。

对于方法端口443的问题,我想说一下,也许您的防火墙使用SPI或DPI,并且可以轻松地从https(ssl)数据包中生成不同的openvpn数据包。因此,最好的方法是使用Stunnel,或者如果防火墙阻止ssl数据包,则最好使用obfsproxy或fteproxy绕过它。

(我知道该帖子已经过时了,但数周以来我一直在寻找有关同一问题的答案,所以我想分享我从中学到的知识)


这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦您拥有足够的声誉,就可以在任何帖子中发表评论
Ramhound

3

Reza Askari的答复正是第三个问题的答案。我的Linux计算机和Android上都在发生这种情况。

在计算机上,通过以下方式连接到OpenVPN之前

sudo openvpn --config configFile.ovpn

您应该添加一条规则,以从OpenVPN隧道中删除隧道服务器。

sudo /sbin/ip route add stunnel_ip via default_gateway_ip

然后连接到您的OpenVPN服务器。完成后,您可以通过以下方式删除该规则:

sudo /sbin/ip route del stunnel_ip

为了使事情变得简单,您不会忘记,创建一个将添加规则并运行OpenVPN的Shell脚本,当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”的“ Android OpenVPN for Android”客户端和“ Balint Kovacs”的“ SSLDroid”客户端。

然后在OpenVPN客户端中,从通过通道的VPN配置文件中排除“ SSLDroid”。

我本来希望在Reza的上面回答或发表评论,但是这种信誉评分规则使我无法参加。


1

我从未尝试过它(让我知道它是否有效!),但是在443上使用ssh隧道进行测试并通过隧道运行OpenVPN。如果您没有443,则可能需要一个额外的远程主机来侦听443,但此处有一个使用其代理服务的示例http://www.anonyproz.com/openvpnsshtunnel.pdf [编者注:此Wayback Machine链接可能更安全],但这也是Googlable的:

https://www.google.com/search?q=ssh%20tunnel%20openvpn

我也知道人们将这种方法用作代理,因为当他们的雇主受欢迎时,他们的雇主就阻止了他们访问诸如dice.com之类的工作网站。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.