0%

使用Socks协议穿越防火墙

现在有如下情形:
有机器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软件套装为例。

  1. 在A上安装运行ShadowSocks Client,在B上安装运行ShadowSocks Server
  2. 在A上安装运行ShadowSocks Client之后,对于A上的应用软件来说,ShadowSocks Client相当于一个本地代理服务器
  3. 在A上配置代理转发。根据《代理转发》,可以配置局部代理转发和全局代理转发,以SwitchyOmega这个局部代理转发插件为例,此时可以配置SwitchyOmega的代理服务器为本机上的ShadowSocks Client,此时浏览器的对外连接请求由ShadowSocks Client代理进行
  4. 在完成以上配置后,此时如果A上的浏览器想与防火墙C外的机器D进行连接,整体流程的示意图如图1所示:

图1

您的支持将鼓励我继续分享!