现在有如下情形:
有机器A,B,防火墙C,A在防火墙C内,B在防火墙C外,防火墙C控制防火墙外能够与A进行连接的只有B,而且A与B的连接中禁止出现一些特定的关键词。
问现在该如何配置,使得A能够与防火墙外除了B以外的机器进行连接,而且可以传输前述的关键词而不被防火墙C发现。
一、原理分析
根据《Socks协议》,可以在A上安装运行Socks Client,在B上安装运行Socks Server,接下来可以通过Socks Client和Socks Server之间的连接将A的对外连接通过B进行,这样A就能够与防火墙外除了B以外的机器进行连接了;另外由于Socks Client和Socks Server之间的连接可以采用加密算法加密,因而传输的内容不能被防火墙C识别出来,那么可以传输任意内容,自然也可以包含被防火墙C禁止的那些关键词。
二、具体步骤
根据《Socks协议实现》,Socks Client的实现和Socks Server的实现可以选择OpenSSH软件套装,也可以选择ShadowSocks软件套装。
这里以ShadowSocks软件套装为例:
- 在A上安装运行ShadowSocks Client,在B上安装运行ShadowSocks Server
- 在A上安装运行ShadowSocks Client之后,对于A上的应用软件来说,ShadowSocks Client相当于一个“本地代理服务器”
- 在A上配置代理转发。根据《代理转发》,可以配置局部代理转发和全局代理转发,以SwitchyOmega这个局部代理转发插件为例,此时可以配置SwitchyOmega的代理服务器为本机上的ShadowSocks Client,此时浏览器的对外连接请求由ShadowSocks Client代理进行
- 在完成以上配置后,此时如果A上的浏览器想与防火墙C外的机器D进行连接,整体流程的示意图如图1所示:
图1