基于Gost搭建科学上网服务
准备
VPS一台,目前在用的有以下几个服务商。
在国外注册商购买的域名一个。
服务搭建
Docker安装
在VPS上安装Docker CE,具体参看文档:
非root用户使用Docker如果遇到错误:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied.
解决办法如下:
# 创建docker用户组
sudo groupadd docker
# 将当前用户添加进docker用户组
sudo gpasswd -a ${USER} docker
# 重启docker服务,退出当前用户重新登录即可
service docker restart
开启TCP BBR
域名和证书配置
设置DNS解析,将域名解析到对应VPS。 使用certbot在服务器上生成 Let’s Encrypt 证书。使用以下命令以standalone方式生成证书,按照提示输入域名和邮箱等信息。
$ sudo certbot certonly --standalone
启动gost服务
使用Docker来部署gost服务,创建如下脚本:
#!/bin/bash
## 下面的四个参数需要改成你的
DOMAIN="YOU.DOMAIN.NAME"
USER="username"
PASS="password"
PORT=443
BIND_IP=0.0.0.0
CERT_DIR=/etc/letsencrypt
CERT=${CERT_DIR}/live/${DOMAIN}/fullchain.pem
KEY=${CERT_DIR}/live/${DOMAIN}/privkey.pem
sudo docker run -d --name gost \
-v ${CERT_DIR}:${CERT_DIR}:ro \
--net=host ginuerzh/gost \
-L "http2://${USER}:${PASS}@${BIND_IP}:${PORT}?cert=${CERT}&key=${KEY}&probe_resist=code:404&knock=www.google.com"
执行上述脚本,成功后gost服务就部署完成了。可以使用以下命令检查是否正常运行。
curl -v "https://www.google.com" --proxy "https://DOMAIN" --proxy-user 'USER:PASS'
自动更新证书
因为Let’s Encrypt的证书半年后会过期,所以要添加定时任务,自动更新证书。使用 crontab -e
编辑Crontab定时任务,添加以下内容:
0 0 1 * * /usr/bin/certbot renew --force-renewal
5 0 1 * * /usr/bin/docker restart gost
Mac 客户端配置
首先下载 程序到本地,解压后添加可执行权限,改名为 gost
。
执行命令:
gost -L ss://aes-128-cfb:passcode@:1984 -F 'https://USER:PASS@DOMAIN:443'
成功后本地就启动了一个Shadowsocks服务,在ClashX中配置好该本地Shadowsocks服务即可。
手机客户端
- iPhone,购买
ShadowRocket
或者Quantumult
,然后添加HTTPS服务。 - Android,可以使用插件 ShadowsocksGostPlugin,我没用过,可以自行测试。