论野生技术&二次元

使用非443端口转发https流量扶墙(一)

试试看见光了多久死hhhhhh

原理

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

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

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

 

优点

局限

步骤

  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地址  打包下载

 

 

退出移动版