科学上网

作者:左耳朵 http://coolshell.cn 更新时间:2018-11-29

来源:https://haoel.github.io/

这篇文章可以写的更好,欢迎到 https://github.com/haoel/haoel.github.io 更新


0. 序

首先,我们先明确一下,我科学上网的目的主要是为了学习、工作、交友、查资料、和丰富自己的眼界,不是为了看黄片,或是干一些非法、政治或是见不得人的事。

对我来说,科学上网很重要,下面罗列一下需要科学上网,我才能真正学习工作和生活的网站:

  • Youtube 和 Vimeo 上的各种大会和教学视频,除了我自己要学,我的孩子也要学。
  • Wikipedia 维基百科是我目前唯一信得过的百科全书,我在上面可以比较系统地翻阅各种词条。
  • Slideshare 上有很多的技术文档和资料的PPT,是我的知识学习的地方。
  • Quora 问答网站,在上面有很多有趣的问答。
  • 博客和论文,很多博客和论文站点都被墙了,比如:Blogspot 和 Medium。
  • Google 的各种服务,比如:Gmail, Map, Docs,Driver,照片,图片搜索,Voices,论文搜索……包括Google官方的各种技术文档……
  • 一些云服务,比如:Dropbox,IFTTT,Imgur,archive.org……
  • Twitter 上 Follow 一些牛人和一些官方账号,比如:AWS、Docker……
  • 社交 Facebook, Telegram, Whatsapp,Slack…… 有一些我在国外的亲戚和朋友……
  • Reddit 是一个聚合网站,一个新闻和文章的集散地,你可以认为是各种频道的今日头条……
  • Pintrest 和 Instagram 上面有很多不错的图片和视频新闻,是我减压力的地方……
  • 新闻,如BBC。 BBC是全球比较出众的媒体,有太多的有价值资源和内容了,比如纪录片、学英文……
  • 编程,有很多编程的场景需要翻墙,比如,Go语言编程时的 go get 中的很多库是放在 Google的服务器上, 然而Google是全部被墙,包括 Android 和其它一些文档和资源也是一样。包括 SourceForge 的某些项目也需要科学上网,Docker Registry也有部分被墙,还有偶尔抽疯的Github,以及不能访问的gist……
  • ……等等

是的,我的互联网不是——全是骗子的百度、充满广告的微信朋友圈、质量低下的公众号、娱乐至死的新浪微博、只有抖机灵和"怎么看XX"的知乎、毫无营养的今日头条…… 在这样的网络空间里,我真的无法生存…… 这根本不是互联网,不是为我服务的互联网,而是在消费我的互联网,是让我变傻变笨的互联网…… 我不能忍,因为它影响到了我的生存……

1. 英文能力

首先,你应该对英文读写没什么问题!

为什么这么说?逻辑是这样的,如果你上了Google还是在用中文关键词,那么你科学上网有什么意义呢?换言之,科学上网的目的是为了进入广阔的世界范围与全世界的人交流,所以,英文是必备的,如果你英文有问题,VPN过去的用处也不大。

所以,我把这个前提条件放在第一的位置,就是说—— 真正的墙不是GFW,而是人的大脑!

2. 购买VPS

然后,你需要一个VPS。

(注:当然,你也可以直接购买一些科学上网的服务,但我这里不推荐了,一方面是广告,另一方面可能会害了对方

现在你买一台VPS也不贵了,也就是一个月10美金左右(70元),我个人一个月你花70元钱不算奢侈的事,而且会让你的生活质量得得改善

2.1 常规VPS

对于VPS,下面是一些常规选项。

  • AWS日本或韩国申请个免费试用一年的EC2 VPS (需要国际信用卡)
  • Google Cloud Platform提供免费试用,赠送300刀赠金(需要国际信用卡)
  • Linode买个一月USD10刀的VPS
  • Vultr上买一个日本的VPS,一个月5刀 (可以支付宝)
  • Conoha上买一个日本的VPS,一个月900日元 (可以支付宝)

注意

  • 日本区的网络质量并不是很好,有时候会有很大的丢包率(不同的网络不一样),有时候会很慢。上述的这几个VPS服务商中,AWS韩国和日本会好点,然后是Linode,最后是Conoha和Vultr(如果你有更好的,请推荐)

  • Google Cloud Platform - GCP 的香港和台湾结点也是很快的。但是你要能买GCP的主机,你还得先翻墙,所以,感觉有点死锁了。所以,你可能先用Vultr(按时付费)翻墙,然后再到GCP上购买。

2.2 CN2 线路

如果你需要更好更高速的网络服务(比如你要看Youtube的1080P),那么,你需要下面的这些服务器资源了(价格也会高一些)

CN2 和 GIA 是两个关键词。CN2 GIA 全称 China telecom Next Carrier Network- Global Internet Access 电信国际精品网络,特征是路由线路上骨干节点均为59.43开头的IP。如果想要寻找接入CN2线路的国外VPS提供商,建议使用 Next Carrier Network 或者 CN2 这个关键词搜索即可。

多说一句, CN2本身又分为两种类型:

  • CN2 GT: CN2 里属于Global Transit的产品(又名GIS-Global Internet Service),在CN2里等级低,省级/出国节点为 202.97 开头,国际骨干节点有2~4个 59.43 开头的CN2节点。在出国线路上拥堵程度一般,相对于163骨干网的稍强,相比CN2 GIA,性价比也较高。

  • CN2 GIA: CN2 里属于Global Internet Access的产品,等级最高,省级/出国/国际骨干节点都以59.43开头,全程没有202.97开头的节点。在出国线路上表现最好,很少拥堵,理论上速度最快最稳定,当然,价格也相对 CN2 GT 偏高。

关于 CN2 线路的主机提供商,下面罗列几个

  • 搬瓦工 这应该是美区最好的一个用来科学上网的VPS提供商了,实测飞快。购买时你需要注意VPS规格上的 CN2 和 GIA 的描述。(注:点击主页右上角的 regisiter 以后,你可以看到页面上方有两个导航条,在下面的导航条上点 Services -> Order New Services 就可以看到所有的列表了。买完后,你可能需要重装一下操作系统,装成64位带BBR的 )
  • Gigsgigscloud CN2 GIA 在香港的结点是很不错的,当然,价格也很不错(建议几个人一起平摊费用)
  • Kvmla 香港地区的CN2 GIA提供商 每月80元
  • Hostdare 的CN2 GIA产品也是三网直连,KVM和OpenVZ两种架构,KVM产品长期缺货

更多的可以参考这篇文章《CN2 GIA VPS主机收集整理汇总-电信,联通,移动三网CN2 GIA线路VPS主机

重点说一下,CN2 GIA + 香港机房,你会得到巨快无比的上网速度,然而,香港地区的VPS的确是有点贵了。在Youtube.com上看1080p的视频毫无压力。虽然阿里云和腾讯的也有,但是被查到的风险基本上是100%,不建议使用,被抓了别怪我没警告过你。

2.3 NCP 线路

NCP 全称 New Cross Pacific(新跨太平洋海底光缆系统)。 2018年11月底,中国到美国之间的海底光缆新开通了NCP线路,并且容量更大(系统设计容量超过80Tbps),路由更少(中国上海到美国中间路由节点只有11个,ping值110ms)。

NCP线路全长13,000公里,连接美国俄勒冈州希尔斯伯勒,连接崇明(中国大陆),南汇(中国大陆),临港(中国大陆),釜山(韩国),头城(台湾),和丸山(日本)。

相对于第二条中美直达海底光缆系统(跨太平洋快线,TPE),现阶段NCP线路的网络流量更少更稳定。特征是华东/中地区流量会经过NCP直达路由节点,IP地址为202.97.95.201/202

关于 NCP 线路的主机提供商,下面罗列两个

  • 50KVM VPS 截止2018年12月2日KVM 产品最低价格¥81.60/月。
  • OLVPS 截止2018年12月2日KVM 产品最低价格¥22/月。

3. 搭建 Shadowsocks 和 VPN 服务

3.1 设置Docker服务

首先,你要安装一个Docker CE 服务,这里你要去看一下docker官方的安装文档:

然后开始设置你的VPN/SS服务

3.2 开启 TCP BBR 拥塞控制算法

TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由Google设计,于2016年发布的拥塞算法。以往大部分拥塞算法是基于丢包来作为降低传输速率的信号,而BBR则基于模型主动探测。该算法使用网络最近出站数据分组当时的最大带宽和往返时间来创建网络的显式模型。数据包传输的每个累积或选择性确认用于生成记录在数据包传输过程和确认返回期间的时间内所传送数据量的采样率。该算法认为随着网络接口控制器逐渐进入千兆速度时,分组丢失不应该被认为是识别拥塞的主要决定因素,所以基于模型的拥塞控制算法能有更高的吞吐量和更低的延迟,可以用BBR来替代其他流行的拥塞算法,例如CUBIC。Google在YouTube上应用该算法,将全球平均的YouTube网络吞吐量提高了4%,在一些国家超过了14%。

BBR之后移植入Linux内核4.9版本,并且对于QUIC可用。

如果开启,请参看 《开启TCP BBR拥塞控制算法 》

3.3 设置Shadowsocks服务

Shadowsocks 的 Docker 启动脚本 (其中的 SS_PORT 和 SS_PASSWD 需要重新定义一下)

#!/bin/bash    SS_PORT=1984  SS_PASSWD=MyPasswd    sudo docker run -dt --name ss \     -p ${SS_PORT}:${SS_PORT} mritd/shadowsocks \     -s "-s 0.0.0.0 -p ${SS_PORT} -m aes-256-cfb -k ${SS_PASSWD} --fast-open"  

3.4 设置L2TP/IPSec服务

L2TP/IPSec 的启动脚本,其中的三个环境变量 USER, PASS 和 PSK 需要替换一下。

#!/bin/bash    USER=someone  PASS=password  PSK=psk_key    sudo docker run -d  --privileged \      -e PSK=${PSK} \      -e USERNAME=${USER} -e PASSWORD=${PASS} \      -p 500:500/udp \      -p 4500:4500/udp \      -p 1701:1701/tcp \      -p 1194:1194/udp  \      siomiz/softethervpn  

3.5 设置PPTP服务

PPTP不安全,请慎重使用

sudo docker run -d --privileged --net=host                   -v {/path_to_file/chap-secrets}:/etc/ppp/chap-secrets \                  mobtitude/vpn-pptp  

PPTP 使用 /etc/ppp/chap-secrets 文件设置用户名和密码,所以你需要给docker容器提供这个文件,下面是这个文件的示例:

# Secrets for authentication using PAP  # client    server      secret           acceptable local IP addresses    fuckgfw   *           whosyourdaddy    *  

4. 客户端设置

4.1 Shadowsocks 客户端

对于 Shadowsocks 客户端,可以到这里查看 Shadowsocks Clients

  • MacOS 上你可以下载 ShadowsocksX-NG
  • Windows上你可以下载 Shadowsocks-Windows,需要先安装 .NET Framework
  • Android的客户端,你可以用手机访问并下载 Shadowsocks-Android
  • iPhone 端就比较麻烦了。因为国内全都被下架了。
    1. 你需要注册一个美国的苹果ID.
    2. 然后 iTunes/App Store 用这个美区的ID登录(不是退出iCloud ,而是退出App Store)
    3. 然后搜索 Wingy ,你会搜到 OpenWingySuperWingy 等

注意

4.2 VPN 客户端

对于L2TP/IPSec,几乎所有的客户端操作系统(无论是Windows/Mac/Linux的电脑,还是iPhone/Android)都支持,你可以自行Google。

5. 流量伪装和其它方式

我们知道,你翻墙的行为,其实都是在被探测中的,因为无论你的手机还是宽带都是有需要到运营商那里开通上网账户的,所以,各大电信运营商有你的所有的上网的记录。

在Youtube上有个视频,你可以看一下 《哪种翻墙软件更隐蔽?》,这个播主实测过,SS也好,SSR也好,无论你怎么混淆,都是没用的,都是可以被抓出来的。只有V2Ray 和 Brook 可以伪装得很好。

注: 说句老实话,我其时并不想害怕别人知道自己的上什么样的网站,因为我觉得我访问的都是合法的网站,但是就今天这个局势我也没办法——为什么要让像我这样的光明正大的良民搞得跟偷鸡摸狗之徒一样……

5.1 V2Ray

V2Ray 是一个与 Shadowsocks 类似的代理软件,可以用来科学上网(翻墙)学习国外先进科学技术。

V2Ray 配合一些模块目前来说可以伪装成正常的流量。但是配置想当复杂。大家可以自己Google自己玩吧。

5.2 Brook

Brook是一个由 Go语言编写的跨平台代理软件,支持 Linux/MacOS/Windows/Android/iOS 各个平台。

服务器一行命令安装:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/brook.sh && chmod +x brook.sh && bash brook.sh  

运行 brook.sh 会出菜单项,你可以按菜单项来,主要就是设置端口号,密码。很简单的,我这里就不截图了,因为这个脚本运行起来中文菜单式的。

然后你可以在 Brook 项目的 Github 首页上下载不同平台的客户端。设置起来也很简单!

(全文完)

用 ss-redir 或 redsocks 搭建透明网关

原生的Android刷机后第一次开机系统初始设置要连接谷歌服务器,如果没有透明代理就很麻烦,进不了桌面。这里可以通过一台Linux的机器(我用的是第一代树莓派)来达到透明代理的作用。平常情况下手机,平板和机顶盒也可以通过透明代理上网,简化配置。

环境要求

手机和树莓派在同一个局域网,并且可以相互访问,手机的WiFi连接,树莓派可以是无线网络也可以是网线连接(没有无线网络的第一代树莓派即可)。有可用的SS / SSR或者SOCKS5代理。

用SS-redir的搭建带SS代理的端口

如果是SSR用shadowsocksr-libev里的SS-再导向。注意后者多了一个r。我用的是SSR,在树莓派上自己编译的shadowsocksr-libev ,下面以SSR为例,SS类似。
配置ss-redir.json,参数和配置SSR一样,注意:"local_address":"0.0.0.0",这个必须为0.0.0.0。如果同一个机器上也运行SSR,local_port要用不同的端口,如SSR用1081,ss-redir用1088,下面配置里会用到1088这个端口。
运行SS-再导向,-v会显示一些日志信息:
./ss-redir -v -c ss-redir.json  
调试完成后,实际运行可以用:
nohup ./ss-redir -c ss-redir.json > /dev/null 2>&1 &  

启用内核转发

使用iptables的转发需要打开内核的IPv4转发功能,编辑/etc/sysctl.conf中,设置把net.ipv4.ip_forward = 1,让更新实时生效:
sudo sysctl -p /etc/sysctl.conf  

设置iptables的,IPSET转发

设置iptables的的目的是将本机特定IP的流量转向β-redir的监听的端口,这个端口是带代理的,这样特定IP的流量就自动代理了。可以配置跳过无需代理的中国IP.iptables执行要根权限,可以切换到根用户,或者用须藤方式运行。
先获取中国IP范围,保存文件是cn.zone。
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone  
创建china.ipset脚本,内容如下:
# Destroy ipset if it already exists  #sudo systemctl stop iptables.service  sudo ipset destroy china    # Create the ipset list  sudo ipset -N china hash:net    # remove any old list that might exist from previous runs of this script  #rm cn.zone    # Pull the latest IP set for China  #wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone    # Add each IP address from the downloaded list into the ipset 'china'  for i in $(cat ./cn.zone ); do ipset -A china $i; done  
运行脚本创建中国的IPSET,脚本会把cn.zone文件里的IP段都加到中国的IPSET里。
sudo bash china.ipset  
创建的iptables命令脚本
iptables -t nat -N REDSOCKS  # 在 nat 表中创建新链    iptables -t nat -A REDSOCKS -p tcp --dport 28888 -j RETURN  # 28888 是 ss 代理服务器的端口,即远程 shadowsocks 服务器提供服务的端口,如果你有多个 ip 可用,但端口一致,就设置这个    iptables -t nat -A REDSOCKS -d 11.11.11.11 -j RETURN  # 11.11.11.11 是 ss 代理服务器的 ip, 如果你只有一个 ss服务器的 ip,却能选择不同端口,就设置此条    iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN  iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN  iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN  iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN  iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN  # 过滤局域网IP    iptables -t nat -A REDSOCKS -p tcp -m set --match-set china dst -j RETURN  # 过滤国内IP段,IP保存在china ipset里    iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 1088  # 1088 是 ss-redir 的监听端口,ss-local 和 ss-redir 的监听端口不同,配置文件不同    iptables -t nat -I PREROUTING -p tcp -j REDSOCKS  # 在 PREROUTING 链前插入 REDSOCKS 链,使其生效  
把上面的命令保存成iprules.sh文件,运行设置到系统里。
sudo bash  iprules.sh  
如果设置错误,清理iptables的设置用下面的命令:
sudo iptables -t nat -F  

手机端设置

手机端WiFi连接,选择静态IP,网关填写树莓派的IP。如果正常,此时手机不用配置代理即可正常访问Google服务器。

验证国内IP过滤

访问ip138淘宝IP,看看IP是不是国内IP,如果是国内IP就说明国内IP过滤成功了,国内IP没有走代理;相反如果是SSR服务器的IP,说明国内IP过滤配置失败了。

用redsocks2替代β-redir的

树莓派上本来跑了个SSR,环境太恶劣,经常需要tcping找可用的地址,重启SSR,不想再维护β-再导向的稳定性了,所以切换到redsocks了,redsocks可以直接用SSR提供socks5的代理,只维护SSR稳定可用即可。
没有用原版redsocks,使用了修改版的redsocks2,下载源代码编译略过。
redsocks2的配置config.json如下。如果socks5的代理是本机,ip = 192.168.1.104;行改成ip = 0.0.0.0;。文件配置里log_debug log_info daemon调试的时候可以根据需要配置上分类中翻译关闭或者,daemon = on是后台运行。这里redsocks监听的端口也配置成1088。
base {          log_debug = off;          log_info = off;            log = "file:/home/pi/redsocks/log.txt";            daemon = on;            redirector = iptables;  }    redsocks {          local_ip = 0.0.0.0;          local_port = 1088;            listenq = 128;            ip = 192.168.1.104;          port = 1081;            type = socks5;            autoproxy = 0;          timeout = 10;    }    ipcache {      cache_size = 4;      stale_time = 900;      port_check = 1;      cache_file = "/tmp/ipcache.txt";      autosave_interval = 3600;  }  
运行redsocks2
sudo ./redsocks2 -c ./config.json  
据说redsocks稳定性可能有些问题,配置的cron计划任务,每天凌晨3点重启一下好了。

IPSET设置速度优化

sudo bash china.ipset设置IPSET后,可以把IPSET设置保存起来,后面再恢复速度就快很多。
sudo ipset save > ipset.save.txt  
把下面脚本保存为ipset.restore.sh,每次开机设置一次。sudo iptables -t nat -F三条的含义是清空iptables nat配置,不然多次执行ipset会提示正在使用,禁止毁灭。建议:每次应该都是先设置ipset,再设置iptables的。
#!/bin/bash    sudo iptables -t nat -F  sudo iptables -t nat -X  sudo iptables -t nat -Z    sudo ipset destroy china  sudo ipset restore < ipset.save.txt  

其他说明

  • 不支持UDP流量转发,DNS污染用其他方法解决。我用的dnsmasq + overture.dnsmasq做缓存,推动做域名翻墙和国内IP分流.overture国内使用dnspod的DNS服务,国外使用8.8.8.8,这两个DNS服务都支持EDNS。
  • iptables的规则可以SH脚本运行,或者iptables-save命令后用的iptables-恢复来加载

参考资料

  1. ss-redir透明代理
  2. linux用shadowsocks + iptables + ss-redir实现全局代理
  3. Ubuntu的编译运行Redsocks2实现透明代理
  4. 使用iptables,ipset的全局智能代理

墙与梯的较量 —— 那些年我们一起用过的翻墙手段


来源: https://blog.yandere.moe/moe/gfw-vs-proxy/97.html

在某个 Telegram 群讨论到了现在很多 10 多岁的年轻人都学会翻墙了,想起我小的时候,大概也是在 10 岁左右第一次翻墙。作为经历过多次墙与梯的升级的网虫,把这个写下来也算是一个对童年的回忆了……
1. HTTP 代理 & SOCKS 代理年代:
早期的墙屏蔽网站是通过 IP 地址和 DNS 污染进行定点屏蔽,那时候被屏蔽的网站也没像现在这么多。大部分被屏蔽的都是法轮功的网站,一般人也用不到。那个时候可以很容易的通过 HTTP 代理进行审查规避。那个时候有一款浏览器不知道大家听说过没,叫 MyIE,有一个很方便的切换代理功能,由于作者是法轮功成员,他开发的浏览器的主页也有提供很多 HTTP 代理来翻墙用(BTW:根据网络上的传言,作者已经死于 2002 年 5 月 13 日。)不过根据这个软件开发的日期以及维基百科,可能在上个世纪 90 年代就已经有墙了。不过我第一次上网是 2004 年,比这更之前的我是不知道了,欢迎有更老网龄的网虫在评论区回忆一下?
早期的翻墙软件——代理猎手(Proxy Hunter):
确切地说这个并不能被称为翻墙软件,这只是一个帮助你搜索可用 HTTP 代理的软件,利用搜索出来的 HTTP 代理来完成翻墙操作。
网页代理
相信这个大家也用过,一个网站,把网址输入进去就能透过代理访问被屏蔽的网站了。
现在情况:
在不知道哪次的 GFW 升级过程中,HTTP 代理和 SOCKS 代理已经完全可以被检测(毕竟没有加密)并阻断,于是这种翻墙手段只能留在我们的回忆中了。。。
至于网页代理,聪明的开发者想到了一个方法——在发送数据包之前将网页内容 BASE64 编码了一下,这样 GFW 就无法探测被封锁的关键字了,这个方法在 GFW 的又一次升级之后而成为了历史…
2. 修改 DNS 时代:
同样是在墙的早期阶段,GFW 还没有解析 DNS 数据包的能力,而且那时候 ISP 也比较流氓。比如在你访问一个不存在的域名的时候,(北京地区)联通会把你劫持到“北京宽带网 BBN”这个网站的一个广告页面,然后展示给你一些很黄很暴力的广告。那时候就有人提议修改 DNS,不再使用 ISP 提供的 DNS。
208.67.222.222 / 208.67.220.220
8.8.8.8 / 8.8.4.4
这两组神圣的 IP 还有人记得么?修改用境外的 DNS 之后也起到了一定的翻墙效果。
现在情况:
GFW 的某次升级之后可以解析并篡改 DNS 包了,于是此方法失效,淡出了人们的视线中…
3. 自由门&无界浏览时代:
之后不知道从什么时候开始,各位的邮箱里就经常收到一个名为《退X保平安》的邮件,里面附带了一个自由门软件。于是自由门这个翻墙软件开始流行了起来。(题外话:是不是你的第一次翻墙就是用的自由门?)
无界浏览和自由门一样,都是法轮功组织开发的
当然这个软件不仅仅只有中国用户在使用,在其他国家如:伊朗、叙利亚、阿联酋等有网络审查国家的用户也有在用。
现在情况:
仍然处于活跃开发过程中,但是身边用的人基本没有了,这个软件自带内墙(屏蔽法轮功组织不喜欢的网站、色情网站等)、不开源、连接不稳定而饱受诟病而渐渐的消失在了人们的记忆中…
4. HTTPS 代理年代:
HTTPS 代理,比 HTTP 代理多了个 S,代表的东西可就大不同了。那时候的 GFW 是无法识别 SSL 流量的,所以网页代理以及 HTTP 代理都在这个 S 的光环下复活了。
现在情况:
仍然可用,比如石斑鱼的翻墙软件就是利用 squid 产生一个 HTTPS 代理进行翻墙的,网页代理也藏在加密的 HTTPS 之后,这对 GFW 的维护工作产生了不利的影响,因为不像 HTTP 那样可以直接获取到内容。不过在某次的 GFW 升级之后,特征比较明显的 HTTPS 代理被 active probe 检测到而屏蔽,只剩下那些藏在子目录的网页代理以及增加了认证(不管是证书认证还是密码认证)的 HTTPS 代理可用…
5. 修改 hosts 文件年代:
在上面提到的修改 DNS 规避审查的方法已经无效了,又有别有用心的群众找到了一些网站可用的 IP,并修改到 hosts 文件进行翻墙。这种方法实际是钻了个 GFW 没有发现这些 IP 的空子。
现在情况:
事实上这个方法辉煌了 2 次,第一次是把网站的 IP 放到 hosts 里然后通过 HTTPS 访问,之后 GFW 以主动收集IP并屏蔽的方法废掉了此方法。第二次是 CDN 的普及,很多网站用了如 CloudFlare 的 CDN,一个 IP 被封了,可以 hosts 到另一个 CloudFlare 的 IP 然后以 HTTPS 继续访问。随后在 GFW 的某次升级后可以检测到证书 SNI 并阻断之后淡出了人们的视线…
6. PPTP 年代:
Windows 和 iOS 等系统自带支持的 VPN 协议——PPTP。可以说是最便捷的方式了,不用下载额外的软件,只需要一个 IP、用户名、密码就可以翻墙。不过这么便捷的翻墙软件朝廷肯定是看不下去的啦。。。
现在情况:
PPTP 已经彻底被干扰,无论你怎么设置都是连接不上的哦,PPTP 实在是死的不能再死了,而且加密强度也不高,而渐渐的被人们所遗忘…
7. SSH 翻墙年代:
不知道从什么时候开始,各路折腾 VPS 的折腾党就猛然发现:SSH 可不仅仅是安全管理服务器的工具,更可以用于翻墙。
于是 SSH 翻墙的方法在一瞬间火了起来。
ssh -qTfnN -D 7070 fq@blog.yandere.moe <– 这是我学会的第一句比较长的 linux 命令
现在情况:
在某次的 GFW 升级后,可以根据流量大小识别你是在管理服务器还是在翻墙。之后,那时候还各种百度谷歌搜索免费 SSH 账号和国外的提供免费空间+ SSH 的平台,翻墙圈子里互相帮助共享 SSH 账号的场景就一去不复返了…
8. 赛风年代:
赛风是多伦多大学公民实验室开发的一款开源翻墙软件,基本原理就是利用打了混淆补丁的 SSH 进行翻墙。发邮件给赛风的邮箱或者去官网下载就能获得该软件了。
(图为旧版赛风)
支持很多国家的服务器
现在情况:
仍然可用,速度一般,比较稳定,身边很多人在用这个免费且开源的翻墙软件。客官不妨下一份留作备用?
9. 西厢计划:
这个可以说是真正的翻墙软件而非代理软件,因为这款软件并没有使用任何代理服务器进行翻墙。相反,这个软件的开发人员发现了墙在编写的时候的一些漏洞,并利用这个漏洞翻墙。
现在情况:
由于西厢计划宗旨是说明这个漏洞,而不是一款可以大规模使用的翻墙软件,所以使用的人很少,而且需要懂一些 Linux 才可以使它工作。在某次的 GFW 核心模块升级之后失效。
10. GoAgent、XXNET 翻墙:
GoAgent 是一个可以运行在云平台上的代理软件,大多数用在 Google Appspot 上,也是很老牌的。那时候 Google 还没有被屏蔽,很多人申请一堆 appspot 然后 GoAgent 负载均衡翻墙,然后小圈子里共享高速的 IP 地址。然后有了另一个 fork 叫 XXNET,自带扫描 IP 的功能以及集成了好心人提供的节点,也是基于 GoAgent 的。
现在情况:
随着 Google 所有 IP 被 GFW 河蟹,这种方法也消失在了历史的长河中。
11. Lantern、FireFly、Meek 年代:
自从很多大型服务上了 CDN 业务(Amazon、Azure 等),一群充满研究精神的人发明了一个新的方法“依附的自由(Collateral Freedom)”,通过将目标地址放入 CDN 服务的 Host 头中,GFW 只能检测到访问了 CDN,而无法检测到真正的目标地址。而很多网站都在使用 CDN,无法将所有的 CDN 都墙了。
目前使用本方法的:Lantern、FireFly、Tor Browser – Meek
12. fqrouter 翻墙:
fqrouter,顾名思义 翻墙路由器。是一个在Android平台的翻墙软件,使用GoAgent进行翻墙。就连人民日报记者都在用这款软件。
现在情况:
其作者在 Twitter 上宣布停止开发 fqrouter 了。感谢 fqrouter 作者为翻墙事业作出的贡献:)
其作者在 Twitter 宣布了:“鉴于 RGB 事件的疯狂删帖,fqrouter 即将重启开发。”,期待作者的重出江湖。
13. OpenVPN 年代:
墙再怎么升级也挡不住向往自由的人们,于是开源软件 OpenVPN 又成为翻墙的主力军。OpenVPN 支持高强度的加密,不过就是特征太明显了,你看,又被屏蔽了。。。
现在情况:
差不多已经没办法用了,因为特征是在太明显了,GFW 很轻松就会探测到 OpenVPN 服务器然后加以封锁。不过通过修改配置文件或加混淆补丁等方法还是可以用的。
14. Cisco AnyConnect 年代:
虽然 AnyConnect 和 OpenVPN 一样,有着很明显的特征,但是 AnyConnect 被很多跨国大公司所使用,所以 GFW 也不敢那么草率的屏蔽掉 AnyConnect。也是一种“依附的自由”
现在情况:
截至目前仍然可用,不过配置起来太麻烦。少数技术流会用这个翻墙…
15. VPNGate 年代:
说到 VPNGate,不得不提到 SoftEther VPN,很早之前这个 SoftEther 提供一个日本的学术 VPN,当然在天朝就是用于翻墙了。可能是受到了 SoftEther 的启发,VPNGate 这个软件被日本筑波大学开发了出来,准确地说 VPNGate 是 SoftEther VPN 的一个插件,用了 SoftEther VPN 的 HTTPS 流量模仿。
现在情况:
在时断时续中仍然坚挺,可以作为备用使用。不过要记得更新为最新版本哦。
16. 后起之秀 —— Shadowsocks、V2Ray、ShadowsocksR、ShadowsocksRR…
Shadowsocks:相信大家都不陌生,作者 clowwindy 是全国首例因为开发翻墙软件被喝茶的。之后项目交由另外的人维护。(向 clowwindy 致敬)
V2Ray:在 Shadowsocks 作者被喝茶之后由一名在国外的华裔程序员开发,目的是翻越防火长城,是一个定制性很高的翻墙软件,算是一个“翻墙框架”。基于这个框架你可以开发出属于自己的翻墙协议。目前支持 VMess 协议以及 Shadowsocks 协议、支持流量混淆、支持 KCP。就是配置起来麻烦点,但是配置好之后很好用。
ShadowsocksR(R):是一个 Shadowsocks 的 fork,作者说 ShadowsocksR 的目的是在于加强混淆以应对 QoS。ShadowsocksRR 是在 ShadowsocksR 作者停止更新之后的另一个fork,目前观望中… 
17. 新起之秀 —— WireGuard
 
WireGuard 可以创建快速、现代、安全的 VPN 隧道。
通过 WireGuard 组建起来的 VPN ,借助其中一台可以科学上网的电脑,能使 VPN 内所有其它电脑都具有科学上网的能力。
18. 结尾:
如果有发现有缺少的在记忆中的翻墙软件可以留言补充哦。
翻墙的时候不要忘记那些曾经为了自由的网络而默默付出的人们
即使再高的墙也阻止不了追求自由的人们,希望我们能看到真正的互联网。
Across the Great Wall we can reach every corner in the world.