同防火墙的斗争记
由于很多资料百度不好查到,而且wiki,还有很多dalao 的blog上面的学习资料要Google才搜得到,因此科学上网就成为了刚需。
心血来潮决定自己去搞一个VPS自己建立翻墙服务,免得天天去为了翻墙去到处找免费VPN,焦头烂额速度还慢,因此就看教程去学习搭建免费VPS进行翻墙,由于我的图床替换脚本被怀疑DDOS了,一天只能上传10张图,就很难顶,有些地方就不截图文字的方式
一、Shadow Socks + BBR plus
教程[https://medium.com/@jackme256/%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91-vultr-vps-%E6%90%AD%E5%BB%BA-shadowsocks-ss-%E6%95%99%E7%A8%8B-%E6%96%B0%E6%89%8B%E5%90%91-968613081aae](https://medium.com/@jackme256/科学上网-vultr-vps-搭建-shadowsocks-ss-教程-新手向-968613081aae)
最开始的网站教的就是去申请一个VPSVPS可以理解为别人开了一堆服务器给你用,你就花钱租一个服务器的使用权
,那个教程网站推荐的是vultr
,个人觉得还不错,便宜的2.5d/mo
已经没了,就只有5d/mo
这个IPV6 ONLY, 顾名思义就只能访问支持IPV6的网站,非常坑爹,用来自己做做试验倒还不错,如果是自己做实验为什么不用阿里云的学生VPS呢?[手动滑稽]
一路点击下一步,这个就不用我多说了,后面有几个选项
开着没啥用,不过1和3反正开了也不要钱
为了演示这个我还专门重新开了一台服务器,不过一想到如果能让更多的人科学上网,看到外面的世界,这些就都不算什么了
使用 ssh 连接服务器
然后就是在服务器里面部署bbr plus
一键脚本
1 | wget --no-check-certificate -O tcp.sh https://github.com/cx9208/Linux-NetSpeed/raw/master/tcp.sh && chmod +x tcp.sh && ./tcp.sh |
国人很贴心的加上了中文支持,爽啊
选择2,一顿安装之后,会提示重启之后才能继续,那就reboot
重启呗
重启后运行
1 | ./tcp.sh |
选择开启对应的bbr加速就可以了
bbr 可以理解为是一种 tcp 延迟协议优化,什么?tcp是什么?建议学习计网。bbr plus 就是bbr的升级版,后面还有bbr 魔改版。
后面也有锐速可以选择,不过在线路以及UDP面前这些加速都算不了什么
然后就是shadowsocks(简称ss)的安装,过程比较智能
一键脚本
1 | wget — no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh |
安装过程是便利的,黑白框框文字不停跳动的界面是帅气的,很适合拿去公共场所全屏装X然后吸引目光,嗯,你就是带嗨阔!
然后最后你就会得到如下的东西,他还给你标红了,明显后面要用到
1 | Your Server IP : 12.34.56.78 |
然后就是常见的控制命令了
1 | 启动 /etc/init.d/shadowsocks start |
然后去下载ss的客户端,地址放下边了
https://shadowsocks.org/en/download/clients.html
弄好了之后就填写你的刚才记下来的4个数据,对应填上去(管理员身份运行shadowsocks.exe,请),然后在小飞机图标那儿右键-全局模式/PAC模式(PAC模式需要你先更新一下PAC的list,PAC模式意思就是会直连国内的站点,对国外的站点才会用代理)
然后你可能会发现还是没网,如果你是用的centOS系的话那么就铁定没网,因为centOS系会关闭所有端口,惊不惊喜?
使用一下命令来打开你的端口
1 | firewall-cmd --zone=public --add-port=xxxx(你的端口号)/tcp --permanent |
想查看自己开了那些端口
1 | firewall-cmd --list-port |
shadowsock + bbr plus + kcptun
直接tcp连接的话你的速度会受制于你的线路,后面室友给我介绍了这样一个kcptun,但是由于一些很悲伤的原因我把这玩意给删了,就没有图了
一键安装脚本
1 | wget --no-check-certificate https://github.com/kuoruan/shell-scripts/raw/master/kcptun/kcptun.sh && chmod +x ./kcptun.sh && ./kcptun.sh |
同样安装过程很良心,而且还是国人做的,很贴心的上了中文,即便是不会设置里面也会有默认设置,一路跟着默认设置走就是了
然后需要你在本地额外加一个接收端
教程:https://ssr.tools/588
(需要科学上网)
这个加速的原理就是把原始的tcp发包变成udp发包,因此基于tcp优化的bbr可能在这里拿不上用场,原来的tcp发一个,udp就发个三四倍,是一种牺牲流量来换取速度的过程,单一的请求和tcp的效果差别不大,但是像看youtube
/下载东西,这样的请求有奇效,我从原来的2000kbps跑到了后面的14000kbps,爽的一批。
不过你爽了,GFW也爽了,你的发包翻倍了,他接受到的特征包也翻倍了,而且对于你们中国电信之流的运营商来说,一个用户原先开一个网站要100k,现在还要500k,万恶的资本家就不乐意了,就会给你QOS(我至今还没有遇到这么温柔的对待),或者是直接封了你的端口,多来几次直接连你这个IP一块儿封了,骨灰都给你扬了,ping都ping不通。
特殊时期之前我倒没什么,特殊时期我一般是上午开,下午就没了,下午又开,晚上就没了。
v2ray
shadowsocks的流量已经被识别了,然后就迫不得已用了v2ray,配置麻烦就麻烦呗(真香),那咋办嘛
不过碰巧我找到了一键安装脚本
1 | wget https://install.direct/go.sh |
安装之后会着重显示你的uuid
,alter_id
,IP
,端口号
,如下
1 | inflating: /tmp/v2ray/config.json |
教程在这里
https://www.4spaces.org/digitalocean-build-v2ray-0-1/
然后需要你自己手动去下载客户端,教程里都有地址
v2ray是基于配置文件来进行设置的,打开配置文件
1 | vi /etc/v2ray/config.json |
dalao们一上来就能直接使用vim,地表最强编辑器,然而我这种俗人就只能偷偷地用最简单的记事本,高级一点就写vscode,还得躲着躲着写,被发现了还在用小学生编辑器就不好了,嘤嘤嘤
好了不扯那些,很多人进来肯定和我一样都是一脸懵逼的,没有高亮,没有括号匹配
按a
进入编辑模式,编辑完之后按Esc
退出编辑模式,然后按:wq
保存退出(冒号也要打)
我一般喜欢进入退出编辑模式,然后按vG
小写的v大写的G,全选。复制到vscode里面编辑,改好了之后再放进服务端里面
什么?还有格式?建议学习JSON呢,而且网上也有很多在线JSON格式检查器呢
效果图如下
速度emmm也就那样吧,时而10000kbps,时而2000kbps,不过重在稳定,我把这种用来当备用机子
坑
他这个如果不指定listen的话会监听到你的IPV6的 端口,然而我们的连接是IPV4的连接,所以就有你开了v2ray,连上了但是没网的情况,下面是修改服务端的配置文件
1 | { |
v2ray + mkcp
使用过udp加速之后再回去使用tcp普通的连接,就觉得有点慢。
就好像周围都是罗玉凤,你不会觉得罗玉凤有什么丑的,甚至觉得还凑合,但是有一天你看了一眼范冰冰,你就再也接受不了罗玉凤了。
好在v2ray里面有自带的udp发包模块只需要你在服务端和客户端配置文件里面改一下就可以了
直接上官网的样例
服务端
1 | { |
客户端
1 | { |
请不要直接复制粘贴上去,这个说的是英文,查单词的意思,请,然后对于实际情况自己修改
然后你就会发现你爽了,速度上来了
然后再特殊时期,上午开,下午就封了
v2ray + mkcp + udp2raw
上面说了udp容易被封禁的原因嘛,就是因为大量的UDP发包,又惹到了GFW又惹到了运营商,所以有个工具就是帮我们把UDP伪装成TCP协议,使用至今没被GG,两全其美,awsl
项目地址(有中文,毕竟国内这方面的需求比较大):https://github.com/wangyu-/udp2raw-tunnel/blob/master/doc/README.zh-cn.md
不过碰巧我又找到了一键安装脚本
1 | bash <(curl -s -L https://233blog.com/udp2raw.sh) |
原理就是先让你的数据通过你的udp2raw客户端,然后再让udp2raw客户端与服务端之间进行通信,然后达到伪装的效果。
使用方法文档上面已经写得比我好,那么不再多说,希望大家去看文档的时候不要关掉我这个窗口就好了
缺点就是你需要再本地开一个框框来作为本地udp2raw客户端,而且你的ssh一旦关掉,那么你的服务端也没了,而且手机更没法用
首先是服务端的问题,至于nohup
我试过,没用的
使用screen
,很多linux系统自带都有这个,在一个直接screen
回车进入一个screen,然后运行
1 | sudo ./udp2raw_amd64 -s -l 0.0.0.0:4096 -r 127.0.0.1:7777 -k "passwd" --raw-mode faketcp --cipher-mode xor -a |
随后ctrl+a
,d
就可以回来了,
这个时候屏幕上就会显示你的screen信息
1 | [detached from 1883.pts-0.vultr] |
如果要回到你的原来的screen,就可以使用screen -p xxxx(上面给你的数字)
,回来
然后是客户端的解决,可以挂一个虚拟机的方式,随用随开,也可以写一个VB脚本,不过这样做手机可能有点难受
不过我推荐弄一台国内的VPS,或者是国内有一台固定IP的机器,然后在这台国内的机器上面开启udp2raw的客户端
然后在你的v2ray上面目标地址选择你的客户端所在的地址,端口选择udp2raw指定的端口,其余的不变即可,这样手机电脑就都可以使用了。
最终看YouTube的4K速度如下
究极方案 :v2ray + ws + tls + cdn
我还没试过这种方案,不过原理大概就是把你的VPS伪装成一个https的网站服务,然后还套上一个域名解析,导致GFW根本分不出来你到底是访问网站还是在科学上网,不过这是套了4层,要是还被挂掉,那么我没有办法了