通过GoDaddy VPS和ShadowSocks搭建代理实现科学上网
通过GoDaddy VPS和ShadowSocks搭建代理实现科学上网
背景
在GoDaddy主机上配置Shadowsocks,客户端通过链接代理端口实现科学上网
前段时间VPN又续费了一年,正在使用的VPN虽然十分稳定,不限流量,不限带宽,同时使用设备数多,全平台,节点遍布欧美东亚南亚,价格不贵…
(tmd,这VPN是有点好用的)
唯一的缺点是没有办法自己配置规则决定是否直连or代理,导致一些网站总是重定向回.cn,无法访问.com/.net,比如leetcode.com, linkedin.com。
昨天看到了一篇关于ssh命令的黑科技教学,其中包含“一行ssh实现科学上网”,突然就有了兴致,想到为了构建这个博客网站购买了海外的服务器,就在思考要不自己搭建一个代理实现科学上网,这样也能多利用这个网站的服务器资源(毕竟我日常摆烂懒得更新,加上本来也没什么人浏览)。毕竟虽然更新很少,但是还是打算长期维护域名+服务器资源,如果搭建的代理好用的话也可以省下额外订阅VPN的钱了。
ssh命令,原理解释见原文
nohup ssh -qTfnN -D 127.0.0.1:38080 root@1.1.1.1 "vmstat 10" 2>&1 >/dev/null &
GoDaddy VPS上Shadowsocks搭建
涉及到的教学原文并不能够完美运行,如果云服务器是新搭建的话,会因为一些基础依赖的缺少而导致部分命令无法运行成功。遇到错误的话可以参考我的流程,也许能帮到你。如果你的服务器已经用了挺久了,该有的运行环境都有,可以直接看具体的教学,跟着教学一步步走就好了。
-
教学中的各类命令适用于Linux or Mac OS,而我自用的机器只有一台win,日常也不会在win上搞这些东西,只是用来打游戏,因此对win上的命令行操作是一点不懂(有够菜的),所以没打算再重新学习这些命令在win上该怎么实现,转向shadowsocks相关的教学。
-
到了这个shadowsocks的教学才发现,原来我在Godaddy上购买的并不是VPS,而是专门针对网站搭建的Web hosting。这一步花费了我不少时间确认,如果是没有海外服务器的朋友,记得确认好准备购买的是否是云服务器(Server),我认为最简单的方法就是确认
你能不能拿到服务器的root权限
。
- 关于服务器规格。1core1G十分够用了(这是GoDaddy上的VPS最小规格),如果你在别的平台购买,目的仅仅是为了搭建代理的话,选最小的套餐就是了。
- 关于服务器提供商。比起教学中推荐的VPS,GoDaddy似乎也是5美金一个月,同时有免费的自动备份,好像更值当一些?大家自行选择,只需要能有一个海外的VPS就行了。
- 关于服务器位置。我选择的是在美西的服务器,是因为我个人一些电子移民的账号都在美国地区,透过美西的服务器代理访问的话,应该可以减少一些账号风控检测导致的账号封禁(都是钱哎)。比如GV现在只提供美国&加拿大地区的服务,不使用美加的IP的话似乎是无法使用的。个人根据个人的需求进行选择吧。毕竟如果服务器在日本、香港、新加坡这些亚太地区的话延迟更低一些,可能更适合日常使用。兴许以后我会额外买一个新加坡地区的VPS通过代理去打Apex,这样又省下了加速器的钱(明明为了服务器会花更多
- 关于服务器系统。我选择的是CentOS7,因为教学有傻瓜操作脚本可以用
-
VPS有了之后,win上用powerShell通过ssh登上服务器的root用户,或者用XShell建立和服务器的会话。mac就直接在终端ssh就好了
-
执行傻瓜脚本:脚本执行过程的一些选项选择参考
教学
wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
- 解释一下命令:
wget
是从指定的链接中下载文件,-O
参数指定保存的文件名,--no-check-certificate
代表这次下载不检查这个链接的CA证书chmod -x
会将文件转为可执行文件-
./filename.sh
执行.sh文件,2
和1
都是文件描述符,1
代表标准输出(stdout
),2
代表标准错误(stderr
),>
是重定向,如果仅仅是2>1
,代表的含义是,将.sh文件执行的标准错误重定向到文件名为1的文件中。如果想要将标准错误重定向到标准输出中,需要在1
前加&
,完整的./shadowsocks-all.sh 2>&1
意味是:执行shadowsocks-all.sh
,将标准错误重定向至标准输出流中,可以理解为将标准输出流和标准错误流合并。| tee shadowsocks-all.log
,|
是linux中的管道符,会将前面的输出作为后面命令的输入。tee
命令用于读取标准输入流将其输出到标准输出流或者文件中,tee shadowsocks-all.log
就是将tee读到的标准输入输出到shadowsocks-all.log
文件中。
- 完整命令
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
的意思就是,执行shadowsocks-all.sh
文件,将执行得到的stderr
合并到stdout
中,通过管道作为tee
命令的stdin
,将其输出到shadowsocks-all.log
文件中。
-
对于新购买了centos7服务器的朋友,在执行sh文件之前,需要下载&&更新一些依赖,可以:
- 升级python版本到3.9.16,centos7自带的python版本为2.7,太老了,具体怎么升级网上很多教程。
- 安装zlib1g-dev
sudo yum install zlib-devel
./configure --with-zlib
./configure --prefix=/opt/python2.7 + other options
make
make install
-
第4步成功之后,就没有卡点了,剩下的就是客户端的配置,参考教学,我就不细说了。
ShadowRocket IOS客户端的使用
在配置shadowsocks的服务端的时候,会选择加密方式,关于加密方式的对比点击这里。教学中建议选择的是xchacha20-ietf-poly1305
,现在使用较多的代理软件应该是patatso和shadowRocket,功能更全面更强大(更贵)的app也有,不过我觉得对于只是需要基本的代理配置的朋友们应该和我一样用这些比较基础的就好了。需要一个非国区的apple账号才可以下载,shadowrocket要2.99$,patatso免费。
但patatso中,加密方式的选择支持chacha20-ietf-poly1305
,而不支持xchacha20-ietf-poly1305
,因此如果想用patatso的朋友不要选择xchacha20-ietf-poly1305
这个加密方式,但换别的加密方式,请自行对比,因为我没有用过,但是我猜测chacha20-ietf-poly1305
也能够满足使用。
如果没有visa、paypal等非人民币支付方式,可以通过苹果的礼品卡赠送apple store余额给非国区账号,礼品卡可以使用国内的支付方式支付,然后再购买shadowrocket。
然后就是一些shadowrocket的配置,我现在使用的是自动打开vpn+按场景转发,始终保持vpn打开状态,根据当前网络选择是否代理、代理使用的配置等。比如家里的WIFI与蜂窝网络会根据default.conf决定是否走代理,其他网络比如公司的WIFI就直连目标不走代理。这样就不会连着公司WIFI穿梭到外网区了还走一遍代理。
其他
后续应该会将网站的数据备份后转移到VPS中来,webhosting到期后就不再续期了,感觉又是一个很浪费时间的事情,因为网站是基于wordpress搭建的,GoDaddy提供的webhosting可以自动配置完成wordpress的东西,转移到VPS上的话wordpress需要我自己重新搭建一遍,不知道是否GoDaddy搭建的wordpress和官方的版本是否有区别(只希望存储没区别,这样我的备份可以直接转移)