免翻墙上2047:phantomsocks 实测 + thphd 修改增强版
警告:本文所列方法并不能保证你避免被网监发现,且我们无法审计源代码,风险自担。
老帖参考:
phantomsocks 原版 编译 + 测试
测试环境:上海电信(感谢某不愿透露姓名的网友)
Windows 10 x64
-
https://github.com/Macronut/TCPioneer/releases/tag/v0.5.6,下载 tcpioneer.zip,里面有WinDivert dll和sys文件。也可以直接去WinDivert官方下载
-
https://golang.org/dl/,下载 https://golang.org/dl/go1.17.3.windows-amd64.msi 并安装
-
打开cmd(管理员权限)
git clone https://github.com/Macronut/phantomsocks
cd phantomsocks
set https_proxy=http://你的翻墙代理
set GOOS=windows
set GOARCH=amd64
go build -tags windivert -v
(将WinDivert dll和sys放到当前目录)
phantomsocks.exe -socks 0.0.0.0:2047 -log 3
然后浏览器socks5代理指向本机2047端口,即可直连中文维基(默认conf文件里有维基百科的域名和IP),且不会被SNI RST.
phantomsocks 工作原理
HTTPS握手时会发送明文SNI,如2047.name或者zh.wikipedia.org,GFW看到之后就会发送RST包阻断连接
phantomsocks在windows上利用windivert修改TCP包(在其他OS上用其他方式),修改后的TCP包不合常理,会使GFW状态机紊乱,导致GFW无法正常进行SNI检测,从而也就不会发出RST包阻断连接
phantomsocks作者提供了一个default.conf,允许用户指定每个域名的:
- IP地址,类似hosts文件(对于google等大范围IP封锁的服务,用户需要手动指定可用的IP地址,而不能依赖DNS服务器返回的结果)
- TCP包修改及发送策略(不同网站由于采用的服务器技术不同,对各种修改后的TCP包的适应性也不同)
- 解析(若未提供IP地址)时使用的DNS服务器
thphd修改增强版
https://github.com/thphd/phantomsocks
经过试用,我们发现原版phantomsocks最大的一个问题是,用户必须手动把需要解析的域名添加到default.conf中,不添加就不能正常解析,工作量很大。
为此我略微修改了phantomsocks,现在对于配置文件中不存在的域名,也会通过cloudflare dns解析,不需要再手动添加到配置文件中。详情见代码及default.conf.
- google/youtube 是大范围IP封锁,所以仍然要手动添加未被封锁的IP到配置文件中,才能直连访问。
- 所有挂在Cloudflare等CDN上的域名(例如2047.name和pincong.org),都是SNI封锁(因为封CF的IP代价太大),因此在DNS正常工作的情况下,无须更多设置便可直连访问。
为方便各位测试,提供一个预编译版本,内附配置文件和WinDivert驱动,解压即可使用。https://github.com/thphd/phantomsocks/releases/tag/initial
(管理员权限CMD)phantomsocks.exe -socks 0.0.0.0:2047 -log 3
浏览器代理指向本机2047端口,即可正常访问:
- 2047.name
- protonmail.com
- https://chinadigitaltimes.net/chinese
- github.com
在修改增强版中,未填写的域名(例如2047)的IP是用 cloudflare dns (tls://1.0.0.1:853)解析出来的。
如果您连接1.0.0.1不畅,请在配置文件中wikipedia.com=208.80.153....行的上方手动添加2047的IP地址:
2047.name=104.21.83.17
(11月16日)收到网友反馈:配置文件中的DoT (DNS over TLS) 服务器 tls://1.0.0.1:853,在联通网络和部分电信网络下无法访问,改为 tls://jp.tiar.app:853(国内可以反问) 即可。
澎湖灣凡一國自相紛爭,就成為荒場。一城、一家自相紛爭,必站立不住 GFW修補此類漏洞的難度有多大?需要幾個月,乃至幾年才能補上麼?
修改后的TCP包不合常理,会使GFW状态机紊乱,导致GFW无法正常进行SNI检测,从而也就不会发出RST包阻断连接
2047a 从“无二论坛”过来的,收藏了!
法轮共 支持,希望论坛增加一个功能:图片可以直接从硬盘上传,而不是传到其它地方,再用链接形式转载
MrAnderson Windows 的话我推荐 TCPioneer,运行就自动接管系统流量了,不需要配置 socks 代理。
参考 default.conf : https://p.blicky.net/eDfyWkzBtQ33
thphd2047前站长 @MrAnderson <#174365>
谢谢。我测试了你的配置中google的部分,可以正常连接google和youtube。
MrAnderson @thphd <#174366> 需要注意的是 YouTube 所用 Google Video Sever 没有可供直连的IPv4 地址。所以我对这个域名用了 sniproxy 。
davidsky2012 这个方法其实也是西厢计划和INTANG项目的继续,我之前在《301海外跳转原理解析兼谈缓解假墙伪墙攻击勒索的多种技术手段(一)》中也提到过。
@澎湖灣 <#174335> GFW当然有能力进行封锁。不过就像我在那篇文章中提到的那样,即使今后被GFW封锁,我们仍然能用SymTCP发现新的策略绕过GFW。
不过,那篇文章主要提供了客户端不做额外的操作的前提下单纯地如何从服务器端绕过GFW。如果客户端能做额外的操作,那么可以使用的方法其实有很多,甚至都不需要安装额外的程序。
比如Chrome就能强制访问某个网站时主动开启QUIC(HTTP/3)而不需要服务器发送
Alt-Svc头。比如可以使用命令行(首先需要关闭所有chrome进程,否则不生效):chrome --enable-quic --origin-to-force-quic-on=2047.name:443 https://2047.name这样,在修改了hosts后就能直接访问2047了,不需要安装额外程序,比phantomsocks或TCPioneer方便不少。
甚至可以不需要修改hosts,直接在chrome中指定2047的IP(首先需要关闭所有chrome进程,否则不生效):
chrome --enable-quic --origin-to-force-quic-on=2047.name:443 --host-resolver-rules="MAP 2047.name:443 104.21.83.17:443" https://2047.name大家可以试试。
澎湖灣凡一國自相紛爭,就成為荒場。一城、一家自相紛爭,必站立不住 @davidsky2012 <#174455> 雖然太高深看不懂,但是覺得很牛!
SymTCP主要作者都是中國人。合作者單位單位竟有美軍實驗室!
GFW目前對QUIC(HTTP/3)無效麼?
libgen天堂应该是图书馆的模样。一个阅读诗歌的人要比不读诗歌的人更难被战胜。创造是一种拯救。创造拯救了创造者本身。 @davidsky2012 <#174455> @MrAnderson <#174365>
一些资源链接可以添加到links哦。
MrAnderson @澎湖灣 <#174484> @davidsky2012 <#174455> QUIC 我听说是有审查的,监测到特定关键字就会丢包几分钟(不知道这种攻击叫什么)。
davidsky2012 @MrAnderson <#174510> 大概率是ISP针对UDP无差别断流(俗称UDP被QoS)。一般短时间内UDP传输量较多或长时间UDP传输会有概率碰到。一般过几分钟就能恢复。
至少我这里使用QUIC访问毫无问题。
thphd2047前站长 收到网友反馈:配置文件中的DoT (DNS over TLS) 服务器
tls://1.0.0.1:853,在联通网络和部分电信网络下无法访问,改为tls://jp.tiar.app:853(国内可以访问) 即可。jiachengl @davidsky2012 <#174455> 大佬说的对
yuewuliuying 大佬有最新的修改版嘛?,小弟用来编译一份安卓的,root之后可以用(听说
翻墙蟹玩网废物 字詞大佬
jarang 看到推荐这个帖子,鉴于thphd已经被捕,大家请避免使用thphd修改增强版,防止网警后门. thphd担任站长时的2047.name域名已经明显被用于钓鱼和收集信息.