通过gost搭建安全隧道转发socks5协议

· 记录

文档通过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 <你的其他域名(可选)>

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

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

4. logrotate 安装与配置

logrotate 是一个非常有用的日志管理工具,可以自动对日志进行轮转、压缩和删除。大多数 Linux 发行版已默认安装 logrotate

4.1. 安装 logrotate

如果你的系统中没有 logrotate,可以使用包管理器进行安装。

4.2. 创建 GOST 日志轮转配置

logrotate 的主配置文件是 /etc/logrotate.conf,但通常建议在 /etc/logrotate.d/ 目录中为每个服务创建独立的配置文件。

  1. 为 GOST 创建一个配置文件

    sudo nano /etc/logrotate.d/gost
    
  2. 将以下内容粘贴到文件中。此配置会每天轮转 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 任务每日自动运行。你也可以手动测试配置或强制执行。



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. 总结

本文作者: 𝓬𝓸𝓵𝓪 🚀
本文链接: https://bb.bins.fyi/archives/17/
最后修改:
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!