在Debian系统中安装 Gost

发布于: , 最后更新时间: , 阅读时间: 5 min

Gost 是一个灵活的代理转发工具,可以转发 HTTP、HTTPS、SOCKS5 等协议,可以配置反嗅探策略等等。

本文记录在 Debian 上使用 Systemctl 配置 Gost 代理,以及使用 acme.sh 配置 https 证书。

1. 下载并解压最新的 Gost 压缩包🔗

Gost Release找到最新版本的压缩包,比如 我的服务器系统是 Debian,amd64 架构,所以对应的是https://github.com/ginuerzh/gost/releases/download/v2.11.2/gost-linux-amd64-2.11.2.gz

# create gost directory
mkdir gost
# download to current directory
wget https://github.com/ginuerzh/gost/releases/download/v2.11.2/gost-linux-amd64-2.11.2.gz
# unzip
gzip -d gost-linux-amd64-2.11.2.gz
mv gost-linux-amd64-2.11.2.gz gost
# Add execute permission
chmod +x gost

2. 申请 https 证书并自动续期🔗

我使用acme.sh来管理证书,并且使用 Cloudflare 作为 DNS 管理,因为 Cloudflare 提供了 API 来验证域名所属权限,这样签发证书更方便。

  1. 下载 acme 工具:
wget -O - https://get.acme.sh | sh -s email=my@example.com
  1. 把域名在 Cloudflare 添加解析,解析到你的服务器 IP

  2. 在某个域名的 dashboard 面板右侧找到 Account ID, 记录下备用。

  3. 进入https://dash.cloudflare.com/profile/api-tokens,生成一个 API Token,选择Edit Zone 模版,Zone Resources 选择 All Zones,生成,

把以下的信息保存到 ~/.bashrc


export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"

export CF_Account_ID="xxxxxxxxxxxxx"

使之生效:


source ~/.bashrc

如果还有什么不清楚的,可以参考文档: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

签发证书🔗

修改 example.com 为你的域名

运行 acme.sh --issue --dns dns_cf -d example.com

Note: 默认的签发机构是Zerossl, 也可以使用 letsencrypt , acme.sh --issue --dns dns_cf -d example.com --server letsencrypt

运行之后他就会自动续期该域名,你可以检查 crontab 任务是否添加成功: crontab -e

3. 使用 Systemctl 启动🔗

sudo vim /etc/systemd/system/gost.service

写入以下文件:

修改 /home/green/gost/ 为你的 gost 文件夹

[Unit]
Description=Gost
After=syslog.target network.target
[Service]
WorkingDirectory=/home/green/gost/
User=green
Group=admin
UMask=0002
Restart=on-failure
RestartSec=5
Type=simple
ExecStart=/home/green/gost/start.sh
KillSignal=SIGINT
TimeoutStopSec=20
SyslogIdentifier=gost
[Install]
WantedBy=multi-user.target

使之生效:

sudo systemctl daemon-reload
sudo systemctl enable gost

4. 安装证书🔗

安装证书到 gost 目录🔗

修改 ~/gost/为你的文件夹, example.com 为你的域名

acme.sh --install-cert -d example.com \
--cert-file ~/gost/cert.pem  \
--key-file ~/gost/key.pem  \
--ca-file ~/gost/ca.pem \
--reloadcmd "sudo systemctl restart gost"

5. 启动服务🔗

Gost 的命令还挺长的,所以可以写的简单的脚本,以后启动方便点:

vim start.sh
#!/bin/bash
# 下面的3个参数需要改成你的
USER="xxxx"
PASS="xxxxxxxx"
PORT=8443
BIND_IP=0.0.0.0
sudo ./gost \
    -L "http2://${USER}:${PASS}@${BIND_IP}:${PORT}?probe_resist=web:www.baidu.com:443&knock=example.com"

添加执行权限

chmod +x ./start.sh

6. 查看日志🔗

# 查看状态
sudo systemctl status gost
# 查看日志
sudo journalctl -u gost -f

7. 客户端配置🔗

参见这里

7.1 clash 配置参考🔗

- name: h8443
  password: xxxxxxxx
  port: 8443
  server: example.com
  tls: true
  skip-cert-verify: true
  type: http
  username: xxxx

7.2 Gost 中转节点🔗

在中转节点安装 gost,步骤同上

cd ~/gost
vim config.json
{
  "ServeNodes": ["socks5://username:pass@0.0.0.0:1080"],
  "ChainNodes": ["https://username:pass@example:443"]
}
vim start.sh
#!/bin/bash
# 下面的3个参数需要改成你的
USER="xxxx"
PASS="xxxxxxxx"
DOMAIN="xxxx.com"
PORT=1080
TARGET_PORT=8443
BIND_IP=0.0.0.0
sudo ./gost \
    -L "socks5://${USER}:${PASS}@${BIND_IP}:${PORT}" -F "https://${USER}:${PASS}@${DOMAIN}:${TARGET_PORT}"

添加执行权限

chmod +x ./start.sh

按照如上步骤 3,添加 systemctl 服务

参考🔗


📝 帮我完善这个页面?🔗

回应区🔗

你有对这篇文章写回应吗? 你可以在这里提交你的文章网址,或者你也可以通过邮件 owen@owenyoung.com 和我讨论。