Gost科学上网
Contents
在一个月内经历两次 VPS 被墙后,痛定思痛,决定放弃 Shadowsocks 的连接方式,转向 Gost + Https
的方式。
Gost
Gost 是个隧道程序,不过,它强大的地方在于,支持多种协议。这次搭建的梯子主要用到了它的 HTTPS 方式。
使用
和Shadowsocks一样,搭建Gost梯子,同样需要服务端和客户端。这里的使用方式我主要参考的是这篇文章,文章中有些比较模糊的地方,我会尝试说清楚。
服务端搭建
服务端搭建,由于使用了 HTTPS 的方式,所以最好是按照标准流程,将服务端完全伪装成一个 网站。
这里需要的内容包括:
- VPS服务器
- 域名
- 证书
我这里的 VPS服务器 使用之前的机器,重新安装操作系统 Ubuntu。Centos 系统在注册证书时,需要使用 certbot 程序,会比较麻烦。
安装步骤可以直接使用脚本完成,首先 安装 TCP BBR 拥塞控制算法、安装 Docker 服务程序。
|
|
安装 SSL 证书时,需要域名,可以去 Godaddy 上进行购买。
域名购买后,需要将域名和VPS服务器的IP进行绑定,具体步骤如下: 我的域名 -> 域名设置 -> DNS管理 -> DNS记录 -> 添加 VPS IP 地址
域名绑定IP后,可以继续在VPS上进入下一步操作,生成SSL证书。直接使用上面安装脚本的方式,或者直接使用命令。
安装 certbot 程序
1 2 3
apt install snapd snap install certbot --classic ln -s /snap/bin//certbot /bin/certbot
生成 SSL 证书
1
certbot certonly -d "your_domain.com" -d "*.your_domain.com" --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
PS: 生成 SSL 证书时,需要仔细观察命令的输出提示,按照提示进行操作,一般不会有问题。 另外,DNS设置会有一定的时延,按照提示进行验证后,再继续下一步操作
完成SSL证书操作后,就会在指定的目录下生成网站需要的证书信息:
|
|
下一步,就可以进行 Gost 程序启动了。Gost 提供了非常简单的docker部署方式。
|
|
在服务端,我们只需要使用 -L
参数,建立本地的代理便可。协议选择为 http2。
至此,服务端的基本操作已经完成。SSL证书需要定期进行更新,脚本也提供了选项进行自动化的更新操作。
客户端使用
Gost 是一个隧道,它只管理路上的事情,不管你具体如何使用。由于习惯了 Shadowsocks 客户端,因此下面的内容均以 Shadowsocks 的方式进行。
客户端的核心在于:通过Gost在客户端建立与服务端的通道、在客户端建立 Shadowsocks 代理、通过 Shadowsocks 客户端连接本地的 ss 通道。
|
|
Macos
Macos 系统上, 一直使用的是 ShadowsocksX-NG 程序,改为 Gost 后,需要在本机上通过 launchctl 的方式添加定时任务,让 Gost 程序在启动时,自动的给拉起来。操作步骤如下:
安装 gost 程序:
brew install gost
新建文件
/Library/LaunchDaemons/gost.plist
,添加下面的内容1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>gost</string> <key>Disabled</key> <false/> <key>KeepAlive</key> <true/> <key>ProcessType</key> <string>Background</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/gost</string> <string>-L</string> <string>ss://aes-128-gcm:123456@127.0.0.1:1080</string> <string>-F</string> <string>https://your_user:your_passwd@your_domain.com:443</string> </array> <key>UserName</key> <string>root</string> <key>GroupName</key> <string>wheel</string> <key>StandardOutPath</key> <string>/tmp/gost.log</string> <key>StandardErrorPath</key> <string>/tmp/gost.err.log</string> </dict> </plist>
加载启动
1
sudo launchctl load -w /Library/LaunchDaemons/gost.plist
使用 ShadowsocksX-NG 建立本地连接。使用上面配置中的参数,
ss://aes-128-gcm:123456@127.0.0.1:1080
Win
Win 上,使用的是 shadowsocks-windows。和Macos类似,解决方案,也是 自启动 Gost 后台程序 + shadowsocks 本地代理。
- 下载 Gost 程序 -> gost-releases
- 网上在 win 上添加 自启动服务的方式很多,我这里使用的是 组策略 的方式。(可能win的不同版本会限制这种方式,如果不行,可以尝试其他方式)
- shadowsocks-windows 连接本地的 shadowsocks 代理
iOS
iOS 的设置比较简单,直接使用 Shadowrocket,里面有 https 的选项,按照步骤新建完之后便可。
至于具体怎么获取 shadowrocket 程序,网上有很多方法。
Android
Android 有提供 shadowsocks-android 程序,但是它不支持 Gost 方式的调用,因此,需要使用 Gost插件(ShadowsocksGostPlugin)的方式进行。
ShadowsocksGostPlugin 插件有些坑,使用说明异常的不清晰,甚至起了干扰。总结了下操作:
- 下载插件 ShadowsocksGostPlugin-app-release.apk
- shadowsocks-android 上新建连接,注意点如下:
- 服务器 - 服务端的域名
- 远程端口 - 服务端的端口
- 密码 - gost
- 加密方式 - RC4-MD5
- 插件 - 选择 ShadowsocksGostPlugin
- 插件配置 -
-F https://your_user:your-passwd@#SS_HOST:#SS_PORT
PS 插件配置 配置中的 #SS_HOST、#SS_PORT 不用修改!!! 插件配置 配置中的 #SS_HOST、#SS_PORT 不用修改!!! 插件配置 配置中的 #SS_HOST、#SS_PORT 不用修改!!!