想要做沉迷于工作的员工,你可能需要这样
背景:
笔者所在公司内外网是隔离的,在内网中的主机通过http代理访问外网,外网如果想要访问内网需要使用VPN,但是我司的VPN使用非常费事,因此特别搞了一下用SSH开启反向代理之后访问公司内网事情,利用一些已知的工具拼凑出来,从动手查资料到最后实现,耗时约3个小时,特别记录一下。
一.网络环境
内网机:WINDOWS 7 ,需要使用公司统一的代理服务器(proxyA:8080)访问外网,中间有鉴权的过程,平时笔者办公用的。
ProxyA:公司的统一代理服务器,没有任何操作的权限。
二.需要做的准备
- 一台具有公网IP的机器,可通过SSH登录,因此最好是Linux主机,我称之为ProxyB(如果使用家里安装在路由器后面的机器,需要做一步端口映射,请自行百度或者留言);
- 内网机使用putty和fiddler
- 外网机:在公司内网之外的机器,一般是家中的电脑,沉迷于工作的另一台机器
三.重点环节
1.通过putty与ProxyB建立SSH反向链接
-
a.在内网机上打开putty,按照正常的登陆流程输入ProxyB的账号密码,这里需要注意,因为内网的所有流量出口都是ProxyA,因此需要在putty中设置代理,才能正常连接ProxyB.这里填写的就是ProxyA的地址和端口。
为ssh设置代理
-
b.先别着急登陆,还需要在SSH->Tunnels中设置本地和远程端口的Tunnel,如下图所示,在Source port中添加ProxyB监听的端口(7001),在Destination中设置为localhost:8001,在下面的选择项中一定勾选为Remote,以上填写完毕之后点击Add。
这样设置之后,在ProxyB:7001和localhost:8001之间就建立了反向链接。
(localhost是内网机器)
设置反向链接
- c.设置完成之后在session中可以保存,方便后续登陆,点击open,即可开始连接ProxyB。
小结:这一步成功之后,内网机与ProxyB的SSH连接和反向链接都建立了。在外网访问ProxyB:7001的时候就相当于在访问内网机的8001端口。
2.利用fiddler开启内网机的数据转发功能
只能访问内网的8001端口还是不够的,我们只能和内网机自己通讯,内网的其他机器还是无法访问,因此需要将内网机8001端口的流量直接转发,笔者直接使用了机器上现有的fiddler抓包工具,内置了转发的功能,设置监听8001端口即可。
![](https://img.haomeiwen.com/i258353/6cfea07649ff1e0a.png)
小结:完成这一步设置之后,8001端口就相当于一个代理的端口。
3.外网机设置代理
以上都完成后,在家中的外网机可以开始设置了。外网机上按照正常的http代理设置方法,将地址填写为ProxyB:7001即可。
4.问题及总结
1.基于现有的工具会有很多不方便,比如在本机需要开启putty和fiddler两个软件,其实可以用其他工具实现本地端口流量的转发。
2.内网机需要在公司中开机,连接好网络,不要设置睡眠和自动关机,有点浪费电了。
3.笔者使用的ProxyB是亚马逊的云主机,网速比较卡,如果更换为国内的主机应该会更快。
3.如果ProxyB主机在国外,开启SSH的正向代理,其实就是Cross Great Fire Wall的一种方式。