授人以鱼 不如授人以渔

原理

常见封锁办法

  1. 在节点路由器对特定地址、端口进行过滤。
  2. 在节点路由器对特定协议进行过滤。
  3. 在节点路由器对特定内容进行过滤。
  4. 无差别过滤,即所有分组交换均无法通过节点路由器。

常见规避手段

  1. 旁路,即绕开被封锁的网络。比如使用卫星上网、使用手机上网。
  2. 绕墙,即通过路由手段,使得自己的数据包绕开过滤节点路由器。
  3. 穿墙,即通过隐藏手段,使得自己的数据包“看起来安全”从而不被过滤。

旁路办法一般代价较高,但总能奏效。

我这里推荐的办法是利用一个不在过滤目标本身也不被过滤的服务器,建立一个安全协议的连接,通过此连接来做跳板,达到翻墙目的。

除了少数变态的公司内网,一般不会有上述4这样的过滤方式。4这样的过滤方式也是无从绕过的。

举例说明

假如有一个公司,网络拓扑图如下,有一些内部IT过滤规则:

  1. 中国区网关上设置了防火墙,无法直连外网(Internet)。
  2. 中国区提供了特殊的代理服务器,可以通过认证方式有限地连接外网(途中以黄色连接表示)。
  3. 中国区的防火墙对http代理协议数据包进行了过滤。
  4. 欧洲区提供了无差别的代理服务器,可以不需要认证以更少的限制访问外网,但对来自中国区的访问加以屏蔽。
  5. 中国区与欧洲区内网之间连接无限制。

image

在这样一个典型的网络拓扑环境下,要从中国区绕过这个“中国区防火墙”以访问欧洲出口代理服务器是轻而易举的事情。

我们所需要做的是找到一台欧洲区的主机,以这台机器的身份经由欧洲出口代理服务器访问Internet即可。

当然,如果你压根不知道有这么一个欧洲出口代理服务器,现在你知道了?

要达到这个目的,我们需要:

  1. 欧洲区一台长时间开机的主机做跳板主机。
  2. 该跳板主机完成对外访问的端口数据转发。
  3. 隐藏本地主机到跳板主机的数据包内容,避免被HTTP代理协议过滤。

Very tough, 幸好,我们有ssh。

SSH工具

ssh, secure shell,在两台主机之间提供安全(多项式数量级计算能力前提下)的访问。使用ssh可以保证数据传输的安全性。

同时,ssh还提供了一系列端口转发功能:

usage: ssh [-1246AaCfghkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D port] [-e escape_char] [-F configfile] [-i identity_file]
[-L port:host:hostport] [-l login_name] [-m mac_spec] [-o option]
[-p port] [-R port:host:hostport] [-S ctl] [user@]hostname [command]

其中

-L 将连接至本地某指定端口的数据透明重定向至目标主机,并从目标主机为源连接指定的主机和端口。这是我们主要要用到的。

还有 –R 参数,实现与-L类似但方向相反的功能。

-D 参数,无需指定端口,但需要以Socks代理的方式使用,不能透明转发。

-g 参数,可以接受子网中其他主机到发起ssh连接的主机的网络连接。也就是说,可以架设给别人使用。

 

至此,你应该了解如何在一台可以使用ssh命令行版的主机上设置端口转发以访问欧洲出口代理服务器了。

你只需要:

  1. 一台欧洲区的主机和它的用户名密码。
  2. 欧洲出口代理服务器。

这当然要找在欧洲的人问啦!

风险

  1. 跳板主机访问欧洲出口的流量会增加,如果增加幅度过大引发异常,可能会被发现。因此,你所使用的源主机最好不要过多泄漏自己的个人信息。
  2. 跳板主机本身流量可能有限,访问量过大会down掉……。因此请注意分散跳板主机,使用你自己的跳板主机。
  3. 跳板主机的重启、当机等各种导致ssh连接断掉的情况,都会使得代理中断。
  4. 如果欧洲区代理不再匿名,则此法不再可用。
  5. 如果欧洲区代理屏蔽了跳板主机,则此法不再可用。

实施

必须的服务器资源

跳板主机,比如说user:passwd@TLO_OMC

代理,比如说EUROPROXY:3128

SSH设置

ssh –L 8080:EUROPROXY:3128 user@TLO_OMC

登录之后,就可以用 localhost:8080 这个http proxy了,等效于在欧洲区直接使用EUROPROXY:3128。

如果同时使用了-g,那么别人也可以使用[IP]:8080 这个http proxy了,IP就是你执行这条命令的机器IP地址。

SecureCRT举例

上面使用了-g的方法不太安全,因为在跳板主机看来,[IP]这个地址来了大量的数据包,很容易发现异常。

所以这里推荐在自己的机器上搭建localhost跳板代理。自己的机器如果是windows,那么很难有命令行的ssh(当然也可以装cygwin),这里我们提供一种用secureCRT设置的办法。

image

image

image  image

其他

以上内容是随机敲键盘所得,本人不识字,对以上内容不负责任。


Comments

9 responses to “授人以鱼 不如授人以渔”

  1. 第一个图不错~用啥画的?

  2. phoebezh :
    第一个图不错~用啥画的?

    VISIO 呦 抱抱

  3. yingyingxu Avatar
    yingyingxu

    一个字:牛!

  4. figo :
    i love u

    老王你不要捣乱……被我mm看见可怎搞!

  5. 尼玛,不识字?你骗谁啊!!!

  6. lango,从今天微薄上面的平泽文搜到这里,看到这个帖子,曾寺葱白啊葱白!

  7. 膜拜一记~

  8. […] 对”跳板主机”的一个改进 #leftcontainerBox { float:left; position: fixed; top: 60%; left: 70px; } #leftcontainerBox .buttons { float:left; clear:both; margin:4px 4px 4px 4px; padding-bottom:2px; } #bottomcontainerBox { width: 50%; padding-top: 1px; } #bottomcontainerBox .buttons { float: left; margin: 4px 4px 4px 4px; } #bottomcontainerBox.manual { display: inline-block; padding-top: 1px; vertical-align: middle; width: auto; } 详情和背景参见 http://bloglango.sinaapp.com/archives/11226 […]

Leave a Reply