自己优化过的在公司(防火墙非常变态)上网的方案

2014-07-01 05:06:31 +08:00
 geeti
前提:网络知识,公网的VPS

拿我们公司来说,intranet和外边基本是防火墙隔离,上外网只能通过一系列的HTTP/
HTTPS代理(这些代理屏蔽了所有涉及到网络存储,隧道等相关网站),除了53,80,443
其他端口一律封闭 。原因很简单,目标太大,几百个B级的IP子网,不统一隔离很难说
会出现啥灾难。公司对每一个员工的上网做流量监控和统计是肯定的,因为上一点规模
的Service Router就带有DPI功能,只是有没有人看而已。

比较简单的方案就是SSH over HTTP,然后通过ssh tunnel做动态端口映射,在自己浏
览器上用openssh的socks5代理。这样所有被屏蔽的网站全都可以上了,并且被封的端
口和软件也都可以用(比如迅雷,qq,imessage等),但是缺点也有:这个ssh隧道基
本是一个不断的长连接,在性能上比较差。另外就是公司监控数据可以看出这是一个
SSH,如果是长期且大数据量的链接那很显然就是隧道。

所以我的方案是既不能让公司监控看出是SSH,又不能是长时间大数据量的单一链接:
1. 在VPS上搭建一个Socks5代理。(Dante就可以)
2. 用stunnel,把所有数据做TLS加密封装,并且把连接到socks5代理的数据在通过
http tunnel来连接到vps。(推荐stunnel 5,因为支持SNI)
这样基本就可以了,每一个http请求都生成一个单独的TLS session,从监控上来看就
是普通的上网数据。

进一步优化:虽然已经差不多了,但如果仔细观察DPI数据,会发现每天都有大量数据
用TLS连接到一个固定的IP地址(最好不要用自己的域名),有点可疑。我的方案是把
这些TLS数据流伪装成Google或者Apple等正常每天都有的数据。

介绍一下DPI对Google或者Apple的判别方法:能对TLS数据流进行判别的方法只有几个
:SNI(类似于http的http host),证书的common name以及organization name, 与证
书的issuer无关。所以通过openssl很容易可以做一个带有Apple Inc或者Google Inc的
证书,然后放到VPS上,用stunnel进行连接时交换。新版本的stunnel已经支持SNI功能
,可以直接在客户端/服务端的配置文件上手动加入SNI ,比如 itunes.apple.com。 这
样,所有通过自己代理上网的数据,公司的监控就会显示为Apple iTunes或者Google,
并且都是正常的符合Web Browsing模型的数据流。
5446 次点击
所在节点    程序员
15 条回复
mortal
2014-07-01 07:45:12 +08:00
和你们公司一样。懒得和他们勾心斗角,上网时用自己的 Air 和 3g-赞一个楼主的方案。
geeti
2014-07-01 07:46:55 +08:00
@mortal 要是上网听歌无损啥的,一天就上G,有时候还要用个迅雷下点东西,手机数据耗不起啊
mortal
2014-07-01 07:51:36 +08:00
@geeti 是这样的。不过我们总出口带宽才 100Mbps,1000 多号人用,慢得要死还诸多限制的网不如不用了汗……
Twinkle
2014-07-01 08:36:48 +08:00
我们这边只有改到特定的局域网ip才能上,请问这是什么方式的屏蔽呢?
geeti
2014-07-01 09:08:54 +08:00
@Twinkle 这不就是很普通的subnet么
zhchyu999
2014-07-01 09:12:26 +08:00
zhilain吗
Twinkle
2014-07-01 09:15:03 +08:00
@geeti 如果不知道哪些ip能上网,有什么办法破解吗=w=
valianliu
2014-07-01 09:21:28 +08:00
跟楼主的情况类似,不过我公司IT更BT每月是审计流量的,作为TOP10还被点名过。没楼主研究得这么透彻,尤其是VPS自己搭建那块玩不转啊,现在的方案是在通过Goagent,不知道是否对监控有效?另外有联系方式能交流吗,愿意分担VPS费用求全套妥帖的解决方案。
Tonni
2014-07-01 10:05:14 +08:00
Screw You Guys I'm Going Home~
est
2014-07-01 10:09:58 +08:00
@Tonni 神头像。
cst4you
2014-07-01 10:46:53 +08:00
@Tonni 神头像神回复
pfitseng
2014-07-01 11:09:32 +08:00
楼主能详细说说最后一个吗?是不是自己弄个CA颁发itunes.apple.com这种证书下去?
geeti
2014-07-01 11:13:11 +08:00
@pfitseng openssl req -new -key stunnel.key -x509 -days 1000
datou552211
2014-07-01 11:18:01 +08:00
肉鸡之类的?
lazyphp
2014-07-02 09:05:14 +08:00
@mortal 我也非常认同。懒得和那些网管去斗了,自己搞个 网络上更好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/120342

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX