文档通过perplexity总结,包括 acme.sh 使用 standalone 模式申请证书、GOST 一键安装脚本、域名动态替换说明,以及常用排查问题指令。
A 和 B 服务器 GOST 代理链部署文档(精简版)
1. acme.sh 证书申请(standalone 模式)
1.1 安装 acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc
1.2 安装 socat(standalone 模式需要)
sudo apt install socat
1.3 申请证书
acme.sh --issue --standalone -d <你的域名> -d <你的其他域名(可选)>
- 请将
<你的域名>替换为实际域名。 - standalone 模式要求 80/443 端口未被占用。
1.4 安装证书
mkdir -p /etc/ssl/
acme.sh --install-cert -d <你的域名> \
--key-file /etc/ssl/<你的域名>.key \
--fullchain-file /etc/ssl/<你的域名>.crt \
--reloadcmd "systemctl reload gost-server"
2. GOST 一键安装脚本
bash <(curl -fsSL https://github.com/go-gost/gost/raw/master/install.sh) --install
- 安装完成后,GOST 二进制文件位于
/usr/local/bin/gost。 - 根据实际情况替换配置文件中的域名和证书路径。
3. GOST 服务配置示例
B服务器(出口)systemd 服务文件 /etc/systemd/system/gost-server.service
[Unit]
Description=GOST Proxy Server (WSS Relay)
After=network.target
[Service]
Type=simple
User=nobody
ExecStart=/usr/local/bin/gost -L "relay+wss://<用户名>:<密码>@[::]:8443?path=/video&certFile=/etc/ssl/<你的域名>.crt&keyFile=/etc/ssl/<你的域名>.key&proxyProtocol=1" -L "socks5://127.0.0.1:1080?udp=true"
Restart=always
RestartSec=5s
LimitNOFILE=4096
StandardOutput=append:/var/log/gost-server.log
StandardError=append:/var/log/gost-server.log
[Install]
WantedBy=multi-user.target
- 请将
<用户名>:<密码>、<你的域名>替换为实际值。
A服务器(入口)systemd 服务文件 /etc/systemd/system/gost-client.service
[Unit]
Description=GOST Proxy Client (SOCKS5 over WSS)
After=network.target
[Service]
Type=simple
User=nobody
ExecStart=/usr/local/bin/gost -L "socks5://<用户名>:<密码>@[::]:10088?udp=true" -F "relay+wss://<用户名>:<密码>@[B的IPv6]:8443?path=/video&host=<你的域名>&serverName=<你的域名>&secure=true"
Restart=always
RestartSec=5s
LimitNOFILE=4096
StandardOutput=append:/var/log/gost-client.log
StandardError=append:/var/log/gost-client.log
[Install]
WantedBy=multi-user.target
- 请将
<用户名>:<密码>、<你的域名>、[B的IPv6]替换为实际值。
4. logrotate 安装与配置
logrotate 是一个非常有用的日志管理工具,可以自动对日志进行轮转、压缩和删除。大多数 Linux 发行版已默认安装 logrotate。
4.1. 安装 logrotate
如果你的系统中没有 logrotate,可以使用包管理器进行安装。
-
在 Debian 或 Ubuntu 上:
sudo apt-get update sudo apt-get install logrotate -
在 CentOS 或 RHEL 上:
sudo yum install logrotate crontabs
4.2. 创建 GOST 日志轮转配置
logrotate 的主配置文件是 /etc/logrotate.conf,但通常建议在 /etc/logrotate.d/ 目录中为每个服务创建独立的配置文件。
-
为 GOST 创建一个配置文件。
sudo nano /etc/logrotate.d/gost -
将以下内容粘贴到文件中。此配置会每天轮转 B 服务器 (gost-server) 和 A 服务器 (gost-client) 的日志文件,并保留最近 7 天的压缩备份。
/var/log/gost-server.log /var/log/gost-client.log { daily rotate 7 compress delaycompress missingok notifempty copytruncate sharedscripts postrotate # 如果使用 systemd 管理 gost 服务,可以取消下面的注释来平滑重启服务 # systemctl kill -s HUP gost-server.service > /dev/null 2>&1 || true # systemctl kill -s HUP gost-client.service > /dev/null 2>&1 || true endscript }copytruncate:先复制日志文件,然后清空原文件。这可以确保 GOST 服务在日志轮转时不会中断写入,无需重启服务。delaycompress:与compress配合使用,表示除了当前和最近的一个日志文件外,其余的旧日志文件都会被压缩。
4.3. 测试与手动执行
logrotate 通常通过 cron 任务每日自动运行。你也可以手动测试配置或强制执行。
-
测试配置是否有误 (模拟执行): 使用
-d选项可以模拟执行,检查配置文件是否存在语法错误,但不会真的轮转日志。sudo logrotate -d /etc/logrotate.d/gost -
强制执行轮转: 使用
-f选项可以强制立即执行日志轮转。sudo logrotate -f /etc/logrotate.d/gost
5. 常用排查问题指令
| 指令 | 用途 |
|---|---|
journalctl -u gost-server -f |
查看 GOST 服务实时日志 |
journalctl -u gost-client -f |
查看 GOST 客户端实时日志 |
sudo systemctl status gost-server |
查看服务状态 |
sudo systemctl status gost-client |
查看客户端状态 |
sudo lsof -i :8443 |
检查 8443 端口占用 |
sudo lsof -i :1080 |
检查 1080 端口占用 |
curl -v -x socks5h://<用户名>:<密码>@[::1]:10088 https://ifconfig.me |
测试 SOCKS5 代理 |
sudo logrotate -f /etc/logrotate.d/gost-server |
手动轮转日志 |
sudo tail -f /var/log/gost-server.log |
查看日志文件 |
ls -l /etc/ssl/<你的域名>.key |
检查证书权限 |
sudo chmod 644 /etc/ssl/<你的域名>.key |
调整证书权限 |
sudo logrotate -vf /etc/logrotate.d/gost |
强制执行日志轮转并显示详细过程 |
6. 总结
- acme.sh 使用 standalone 模式申请证书,需安装 socat。
- GOST 可使用官方一键安装脚本安装。
- 配置文件中的域名、证书路径、用户名密码等需根据实际情况替换。
- 常用排查指令可快速定位问题。
- 通过logrotate压缩轮转日志文件。