再说OpenVPN反封杀的方法
近半个月来GFW对VPN的干扰是史无前例的,其干扰技术也得到了极大提升,以前GFW封杀VPN都是直接污染VPN服务器域名或直接封锁VPN服务器连接IP,这次的GFW封锁更加精确,多是封锁特定IP上的特定端口,这样更加智能化,减少了误杀(比如说某IP上既部署了VPN服务也架设了网站服务,这种新方式封锁可以不影响网站的访问只封锁VPN),有利于其扩大封锁范围,进行大面积的VPN封锁。
由于PPTP VPN、IPSec VPN( L2TP、Cisco、IKEv2)都需要依赖一些特殊端口封锁起来比较简单,虽然SSTP VPN可以比较简单的修改端口不过国内用来翻墙尚不流行GFW尚不在意,于是另一个得到广泛使用而且极易修改端口的OpenVPN就成了GFW本次重点打击的对象。
本文从GFW的检查和封锁两方面讲述反封杀的方法:
1、反GFW检查
GFW要发现OpenVPN服务器是通过特征检测和流量检查来进行的。
1.1反特征检测
一种观点认为,GFW掌握了OpenVPN认证或连接过程中的某些特征,通过检查网络流量里有没有此类特征来确定是否是OpenVPN服务器。
1.1.1使用tls-auth+TPKT协议重叠的端口反特征检查
启用tls-auth后在本机和服务器间静态协商,避免了向服务器请求时的特征泄漏,特殊端口比如3389是Windows远程桌面端口,GFW可能不检查一些特殊端口(正如以前说过的53端口http代理不受检查),另外启用tls-auth的OpenVPN在数据特征方面也与真正的远程连接相近,易于混淆(参考)。
1.1.2使用static keys反特征检查
预先共享的静态密钥(Static Key)方式(参考)的部署因尚不普遍或没有基于使用SSL/TLS的RSA证书和密钥的方式某些特征尚不会被GFW特征检查到。
1.2反流量检查
一种观点认为,GFW是基于IP+端口上的流量检查确定VPN服务器的。
1.2.1使用obfsproxy反流量检查
obfsproxy是tor为其网桥被干扰而特意开发的代理工具,目的是用来混淆流量,使检测者更不容易区分,进而避免被封杀。如果OpenVPN结合obfsproxy预计可防止GFW的流量检查(参考)。
1.2.2使用个人私用IP反流量检查
比如你个人VPS搭建OpenVPN用来流量网页(不开视频或下载文件),同一IP上应该流量不大,或者不会被GFW流量监测到(参考)。
笔者认为GFW应该是集合特征和流量这两种手段进行的检查,常用端口(udp 1194和tcp 443)上直接特征检查,其他端口流量检查,发现异常后结合特征检查。
2、反GFW封锁
OpenVPN服务器被GFW发现后会被封锁端口、重置连接。
2.1反端口封锁
一些人意识到OpenVPN服务器被GFW发现后会被封锁端口。
2.1.1使用随机端口反端口封锁
网友发现OpenVPN不能连接后换个端口立即就能连接了,不过来回换端口麻烦,于是就出现了随机端口的升级版,用户在连接服务器前通过软件随机选择端口然后连接(参考)。
2.1.2使用代理/ssh隧道反端口封锁
以前公司封杀OpenVPN时使用ssh隧道将OpenVPN端口映射到本机127.0.0.1:1194然后本机OpenVPN连接remote 127.0.0.1 1194来穿越的方法甚至可以OpenVPN服务器上不向外开放其端口(参考),用来反GFW端口封锁自然不在话下,当然使用前置代理或其他隧道映射也是可以的(参考)。
2.2反重置封锁
一些人意识到OpenVPN服务器被GFW发现后会被连接重置,好比是网址的连接重置,与服务器连接过程中被GFW拦截欺诈。
2.2.1使用TCP忽略rst包或UDP忽略drop包的方法反重置封锁
@plarouter “最近GFW对 OPENVPN协议监控,流量过多的IP和端口,就会reset,包括TCP和UDP端口OPENVPN协议。 解决办法有两个,简单的话,就是用TCP然后忽略rst包,另外就是UDP忽略OPENVPN drop包。 ”这好比忽略GFW拦截后的欺诈信息从而建立VPN连接(或可用于PPTP VPN、IPSec VPN的反封锁)。
2.2.2使用对OpenVPN数据流进行了XOR运算的方法反重置封锁
@ayanamist “对OpenVPN的数据流进行了XOR运算,UDP连接是正常了,但是ping照样不通,也什么都打不开。换成TCP就正常了。我是不是该感叹GFW非常智能了? ”修改OpenVPN的patch https://gist.github.com/4134646 Debian下rebuild的时候注意quilt的使, 不止做XOR,而是真正的应用AES加密。好比给网站加了ssl证书支持了https访问可以反GFW连接重置了。
笔者认为GFW的封锁应该是在检查到OpenVPN服务器IP和端口后在此IP的该端口上部署了连接重置,以欺诈的方式让服务器认为用户已经断开连接而不去响应用户真实的连接请求,导致用户出现连接超时。
提示:本人旨在结合网络流言和胡思乱想为读者勾勒出GFW对OpenVPN检查和封锁手段及相应的反封杀方法,没有经过试验验证,仅供扩展思路。
最近我用2.4.4版本连接vpngate,没用任何外挂程式,马上就连上了。可能是新版本的路由技术强大吧。
最稳定的方法就是用glype之类的搭个网页代理,用个不常用端口(五位数的最好),用StartSSL的免费证书加密,再设定访问密码(禁止匿名访问)。18大都可用
让服务商去捣鼓,呀都不低调点。看来得再买个有sstp的。开源草国界精神的东东是假国家民族尊严不斜路主义不可接受滴,pptp,l2tp现在是还没搞死哈,看来享有网络服务高级特供的不够多
用obfsprox完全可以。
IP被封3天了, 没见释放。。
随机端口已经失效。GFW侦测到了,就会在1天内就把服务器IP封了,2-3天后自动释放。
给出一种具有可操作性的啊
呵呵,我也不会啊
谁知道如何忽略openvpn的drop包??
不知道啊,你上那人推特问问吧
实际测试,XOR的办法只能扛得住TCP封杀,扛不住UDP封杀,有人遇到同样的问题么
谢谢
而且,许多人自建的 OpenVPN 是使用默认的 Blowfish 128 bit 加密算法。这个不行,建议换成 AES 256 bit。
最后提一句,我看到网上有人贴出他的服务器端配置文件,其中有一行:
client-to-client
个人认为,真是太不安全了。一定要删除掉。
总之,想使用不被干扰的安全OpenVPN,一定要敢于阅读、多阅读其官方网站的 HOWTO 文档,并关注其更新。
有余力的,也可参看《Beginning OpenVPN 2.0.9》。
嗯,
感谢您的建议和支持。
文中结论太多错误了。比如说TLS auth key,已经被证明无效了。另@ayanamist的结论是因为测试过程的问题导致的错误结论。
嗯,
文中是结合网络流言和胡思乱想为读者勾勒出GFW对OpenVPN检查和封锁手段及相应的反封杀方法,
没有经过试验验证,仅供扩展思路。
还希望更多人能去关注和研究,找出真正的发现和封锁原因及解决方法。
使用static keys 不仅可以反特征检查,最重要的是防止“中间人”攻击。
另外,用TCP忽略rst包,或UDP忽略drop包的方法有潜力,呵……