前言

在一些特殊的时期,你的科学上Internet服务不好用时,但又要下一些github上的东西或想上Pixiv时,这篇文章或许对你有所帮助。

原理

HTTPS(更准确来讲是TLS)有一个扩展,使得在Client Hello阶段,浏览器会向服务器明文发送要访问网站的域名。而GFW根据这一原理对特定的SNI进行阻断,这就是俗称的SNI阻断。更多的可以去看:维基百科

而域前置(Domain Fronting)技术,就是利用有的服务器不验证SNI的这一特点,给GFW和服务器一个假的SNI。因为GFW没有私钥,只能通过SNI和IP判断你要访问的网站,而假的SNI就能欺骗GFW。但服务器本身有私钥,解开后,服务器是通过HTTP请求头判断你要访问哪个网站的。(但注意,特殊的比如虚拟主机、Cloudflare免费版等能在一个IP上部署多个证书的,是一定要SNI的,否则会出错。这种唯一的绕过办法就是ESNI,如果有空的话,以后再讲)因此可以通过这种方式绕过GFW的SNI阻断。

一些已经完整实现的开源项目

bypass-GFW-SNI/main和他的Socks5版本bypass-GFW-SNI/proxy

SeaHOH/GotoX

mashirozx/Pixiv-Nginx 注:这个是利用Nginx反向代理时不支持SNI达到目的

教程(以Bypass-GFW-SNI + DNSCrypt-proxy 为例)

如果觉得教程困难的话,可以去评论区下载已打包好的配置文件与程序

Step1.去项目的Release页面下载已编译好的文件

Bypass-GFW-SNI 还有 DNSCrypt-Proxy

注:可能最新版本与本文有一点差异,但大致上方法都是相同的。

Step2.配置DNSCrypt

设置fallback_resolver,即回落DNS为你运营商的DNS,比如114.114.114.114:53(:后面的是端口号,一般情况下DNS都是用UDP53端口的)

设置netprobe_address,即网络检测地址为国内能访问的地址,比如114.114.114.114:53

把[sources]里的全部删掉或在前面加#号,因为raw.githubusercontent.com这个域名已经被SNI阻断了,这段留着,打开DNSCrypt可能会很慢。

在[static]里填上

1
2
3
4
5
[static.'Cloudflare-DNS-DoH']
stamp = 'sdns://AgcAAAAAAAAABzEuMC4wLjESZG5zLmNsb3VkZmxhcmUuY29tCi9kbnMtcXVlcnk'

[static.'Adguard-DNS-DoH']
stamp = 'sdns://AgMAAAAAAAAADzE3Ni4xMDMuMTMwLjEzMCD5_zfwLmMstzhwJcB-V5CKPTcbfJXYzdA5DeIx7ZQ6Eg9kbnMuYWRndWFyZC5jb20KL2Rucy1xdWVyeQ'

将listen_addresses 改为127.0.0.1:5353(因为53端口要给Bypass-GFW-SNI用)

server_names调整为[‘Adguard-DNS-DoH’, ‘Cloudflare-DNS-DoH’] 保存dnscrypt-proxy.toml,双击dnscrypt-proxy.exe运行。如果黑色的窗口一直在,就说明没有问题。

Step3.配置Bypass-GFW-SNI

这个配置十分简单,具体的可以去看看程序自带的帮助,如果是懒人包的话双击MITMCA.crt先导入证书(不会的Google如何导入根证书或看这里把CA.crt换成MITMCA.crt就是了),同目录下的MITMCA.key是CA的私钥(不信任我的,自己去Google一下OpenSSL创建CA),运行StartProgram.bat,把电脑的DNS改成首选127.0.0.1,备选为空(不会的也请Google如何修改DNS或看这里)。用浏览器打开https://www.pixiv.net,Done。

注意事项

有的网站比如Twitter、Google这类大型网站大多为IP黑洞,上述方式是没有用的。通常被SNI阻断的网站,也有DNS污染。请配合下面的其中一个:DNSCrypt、DNS over HTTPS(DoH)、DNS Over TLS(DoT)使用。个人比较喜欢DNSCrypt-proxyAdGuardHome。其中Adguardhome对小白来说比较友好。

附录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
网站域名|GFW方式

*.pixiv.net|DNS污染+SNI阻断

*.porn(去掉我)hub.com|DNS污染+SNI阻断

*.githubusercontent.com|SNI阻断

zh.wikipedia.org|SNI阻断

Google系|IP黑洞