试试看见光了多久死hhhhhh

原理

实验表明,我国自主研发的科技火墙型络设备(以下简称GFW)具有以下特征:

  1. 对所有目标端口上的流量存在字符串过滤,如HTTP和明文的邮件消息
  2. 对443端口存在主动探测或举报机制(具体情况不明),表现为具有包括Google、Twitter等的CN在内的证书的ip会在半个月后被墙
  3. 目前,GFW对非443端口上流经的HTTPS流量不存在第2条所述的措施

436919cbgw1etosshjvw6j209s01pweg

 注:也可以是用SNI Proxy来隐藏证书,主动探测一般情况下不会使用SNI扩展来探测443端口的证书。可以使用这篇博客中提到的项目lua_resty_sniproxy。

 

优点

  • 省电,和正常上网耗电一致,且移动设备可保持长连接在线
  • 不用怕hosts文件被上传,因为本来里面的ip都是被墙的
  • 可以与socks代理同时使用,无需切换hosts
  • 适用于重度Google用户

局限

  • 运行Windows并且直接连接互联网的设备将无法使用本方法
  • 运行未root的Android设备及未越狱的iOS设备在使用移动网络时无法使用本方法
  • 必须能控制路由器或设备的上级网关的iptables设置(如刷了openwrt之类的路由器);如果路由器无法刷第三方ROM,但局域网中存在任意一台*nix设备,请参见使用非443端口转发https流量扶墙(二)
  • 只对HTTPS流量起作用,本文主要介绍Google全线服务以及Twitter的操作实例
  • 覆盖面窄,如果要覆盖更多网站,需要更复杂的配置

步骤

  1. 将目标IP根据证书类型合并,即证书具有相同的DNS名称的服务归为一类。归类的作用是接来下可以少写很多iptables规则。对Google来说,只要具有泛域名为*.google.com, *.googleusercontent.com, *.googleapis.com的证书的三类IP就可以了。此处的IP不需要能够直连。甚至可以填一个无法路由的地址,只要在接下来的iptables中对应即可;但是这样的话,使用代理时如果使用本地解析的(无法路由的)IP,将会无法连接。
  2. 将以上列表填入hosts。文末给出了实例配置。如果未越狱或未root,不具有修改hosts文件的权限,可以在路由器中写死DNS解析;但是在移动网络下就没有办法了。我们假设hosts中有这样一些项
  3. 在VPS上设置端口转发,可以使用iptables。我使用nginx(编译stream_module)作转发,文末有示例配置。Ubuntu/Debian可以这样安装:
  4. 在路由器上设置转发规则:

    其中66.66.66.66是你VPS的IP,并且将44300的入站流量转发到74.125.224.55:443。如果是直接连接互联网的设备(如linux的pc或移动网络下的Android,将PREROUTING链改为OUTPUT):

    注意如果在Android上使用Shadowsocks的NAT模式,关闭ss后需要重新设置iptables规则。

附件

Gists地址  打包下载

  • 示例hosts配置(见压缩包或Gists)(本地)
  • 示例nginx配置(VPS上)
  • 对应的iptables配置示例(路由器上)