第一步本博主当然要解释下原理过程。这里本文是以1台中转对应15台机器为例子。利用gost工具映射socks5节点。手把手的小白教程
gost 语法:gost -L <本地监听协议>://<本地端口> -F <远程协议>://<账号>:<密码>@<远程IP>:<远程端口>
┌────────────┐
│ 客户端 A │
└────┬───────┘
│ socks5
▼
┌──────────────────────────────┐
│ 中转机 47.238.115.8 │
│ 多端口:12028 12029 12030 ... │
└────┬─────────────────────────┘
│ 加密转发链
▼
┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
│47.242.22.73│ │47.82.115.11│ │47.82.101.19│ │ 其他落地 │ │ 其他落地 │
│ :12025 HK │ │ :12025 SG │ │ :12025 KR │ │ :12025 ... │ │ :12025 ... │
└────┬───────┘ └────┬───────┘ └────┬───────┘ └────┬───────┘ └────┬───────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
公网出口IP 公网出口IP 公网出口IP 公网出口IP 公网出口IP
1️⃣ 准备工作
机器 | 角色 | 系统环境 | 需开放端口 |
47.238.115.8 | 中转机 | Debian/CentOS | TCP 12028等15个端口 |
47.242.22.73 | 落地机 | Debian/CentOS | TCP 12025 |
**** | 落地机 | Debian/CentOS | TCP 12025 |
**** | 落地机 | Debian/CentOS | TCP 12025 |
**** | 落地机 | Debian/CentOS | TCP 12025 |
个人觉得gost3会更方便点,因为支持YAML配置文件,要比v2版本的更加清晰。本文是安装的是gost v2版
1. 安装 gost(每台主机都要执行安装)改换了一个版本
sudo yum update -y
sudo yum install -y wget # 或者 curl
# 下载gost v2.12.0 Linux AMD64版本
wget https://github.com/ginuerzh/gost/releases/download/v2.12.0/gost_2.12.0_linux_amd64.tar.gz
tar -zxvf gost_2.12.0_linux_amd64.tar.gz
sudo mv gost /usr/local/bin/gost
# sudo mv gost_2.12.0_linux_amd64/gost /usr/local/bin/gost
sudo chmod +x /usr/local/bin/gost
gost -v
如果是中国内地机器无法直接安装话下方命令
cd /root
wget -qO-
https://gh-proxy.com/https://github.com/ginuerzh/gost/releases/download/v2.8.1/gost_2.8.1_linux_amd64.tar.gz | tar -zx
mv gost /usr/local/bin/gost && chmod +x /usr/local/bin/gost

2. 多个转发批量配置(中转机1台)
写入15 台落地机,通用做法可以写 systemd 服务文件 或者一个 gost.yaml 配置文件。这里直接服务命令
gost \
-L "socks5://0912:0912@:12028/47.82.114.177:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12029/47.82.115.11:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12030/47.82.101.190:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12031/47.82.114.246:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12032/47.82.93.124:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12033/47.82.97.132:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12034/47.82.113.85:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12035/47.82.117.175:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12036/47.82.92.156:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12037/47.82.117.199:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12038/47.82.93.89:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12039/47.82.115.162:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12040/47.82.116.205:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12041/47.82.114.79:12025?peer=0912:0912" \
-L "socks5://0912:0912@:12042/47.82.114.208:12025?peer=0912:0912"
#这是临时启动命令,如果要永久写入后台,这步可以忽略
下一步设置自启动防止意外重启(中转机) 创建 systemd 服务文件
sudo vi /etc/systemd/system/gost-relay.service
运15个转发规则。
[Unit]
Description=GO Simple Tunnel Relay Server
After=network.target
[Service]
Type=simple
# 请注意,下面的命令是一行,不要手动换行,只是为了排版阅读方便才分行显示
ExecStart=/usr/local/bin/gost \
-L "socks5://:12028/socks5://0912:0912@47.82.114.177:12025" \
-L "socks5://:12029/socks5://0912:0912@47.82.115.11:12025" \
-L "socks5://:12030/socks5://0912:0912@47.82.101.190:12025" \
-L "socks5://:12031/socks5://0912:0912@47.82.114.246:12025" \
-L "socks5://:12032/socks5://0912:0912@47.82.93.124:12025" \
-L "socks5://:12033/socks5://0912:0912@47.82.97.132:12025" \
-L "socks5://:12034/socks5://0912:0912@47.82.113.85:12025" \
-L "socks5://:12035/socks5://0912:0912@47.82.117.175:12025" \
-L "socks5://:12036/socks5://0912:0912@47.82.92.156:12025" \
-L "socks5://:12037/socks5://0912:0912@47.82.117.199:12025" \
-L "socks5://:12038/socks5://0912:0912@47.82.93.89:12025" \
-L "socks5://:12039/socks5://0912:0912@47.82.115.162:12025" \
-L "socks5://:12040/socks5://0912:0912@47.82.116.205:12025" \
-L "socks5://:12041/socks5://0912:0912@47.82.114.79:12025" \
-L "socks5://:12042/socks5://0912:0912@47.82.114.208:12025"
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
保存并退出文件 (在vi
中按 Esc
,然后输入 :wq
回车)。
防火墙一次性放行 12028-12042(如果又启用防火墙,没有忽略)
firewall-cmd --permanent --add-port=12028-12042/tcp
firewall-cmd --reload
重新加载systemd配置,启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable gost-relay
sudo systemctl start gost-relay
sudo systemctl status gost-socks5
检查服务状态
3. 落地机配置(15台落地机全部运行)
落地机自启动
sudo vi /etc/systemd/system/gost-socks5.service
[Unit]
Description=GO Simple Tunnel SOCKS5 Server
After=network.target
[Service]
Type=simple
# 用户名和密码是 0912:0912,监听端口是 12025
ExecStart=/usr/local/bin/gost -L "socks5://0912:0912@:12025"
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
- 保存并退出文件 (在
vi
中按Esc
,然后输入:wq
回车)。 - 重新加载systemd配置,启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable gost-socks5
sudo systemctl start gost-socks5
sudo systemctl status gost-socks5
检查服务状态
完成了
就可以用sstap软件测试了官方下载地址
任意支持 socks5 的软件(浏览器、TG、爬虫等)直接填:
地址:8.217.219.233
端口:12028 ~ 12042(任选一个,对应不同出口 IP)
用户名:0912
密码:0912
落地就是相应的ip了
第三方主机测试
curl -x socks5://0912:0912@47.238.115.8:12028 http://ip-api.com/json
#返回信息就是说明正常的
一键清理gost功能,如果要清理gost
# 1. 停掉所有 gost 进程(不管是不是 systemd 起的)
pkill -9 gost 2>/dev/null
# 2. 禁用并删除 systemd 单元(你看到的 gost-relay.service)
systemctl stop gost-relay.service
systemctl disable gost-relay.service
rm -f /etc/systemd/system/gost-relay.service
# 如果你还手动建过别的单元,也一起删掉
rm -f /etc/systemd/system/gost*.service
systemctl daemon-reload
systemctl reset-failed
# 3. 删除二进制(常见路径)
rm -f /usr/local/bin/gost
rm -f /usr/bin/gost
rm -f /opt/gost/gost
# 4. 删除配置、日志、证书
rm -rf /etc/gost
rm -rf /usr/local/etc/gost
rm -rf /var/log/gost*
rm -rf /opt/gost
# 删除开机自启残留(非 systemd 方式)
sed -i '/gost/d' /etc/rc.local
rm -f /etc/rc.d/init.d/gost*
# 7. 刷新 systemd 并确认干净
systemctl daemon-reload
systemctl reset-failed
systemctl list-unit-files | grep -i gost # 应该无回显
which gost # 应该提示找不到
微信扫描下方的二维码阅读本文