使用GOST实现搭建安全隧道代理

411 次查看 0 条评论

为什选择gost这个软件呢?其实之前一直用的TinyProxy代理软件,但发现其不太稳定,然后一个连接会启动一个进程的模式资源消耗有点大。

  1. 官方手册:https://docs.ginuerzh.xyz/gost/
  2. 二进制文件下载:https://github.com/ginuerzh/gost/releases 本站备份下载(Linux x64)

在GOST中,GOST与其他代理服务都被看作是代理节点,GOST可以自己处理请求,或者将请求转发给任意一个或多个代理节点。

1、启动一个监听在8080端口的HTTP/SOCKS5代理服务:

# HTTP/SOCKS5代理
./gost -L :8080

93330-4scmw55f5wj.png

指定具体代理类型:

# 标准HTTP代理服务
./gost -L http://:8080
# 标准HTTPS代理服务
./gost -L https://:443
# 使用了TLS加密的HTTP代理服务
./gost -L http+ws://:8080
./gost -L http+wss://:443
# HTTP Over KCP
./gost -L http+kcp://:8388

开启多个代理服务:

./gost -L http2://:443 -L socks5://:1080 -L ss://aes-128-cfb:123456@:8338

2、启动参数

GOST目前有以下几个参数项:

  1. -L - 指定本地服务配置,可设置多个。
  2. -F - 指定转发服务配置,可设置多个,构成转发链。
  3. -C - 指定外部配置文件。
  4. -D - 开启Debug模式,更详细的日志输出。
  5. -V - 查看版本,显示当前运行的gost版本号。

3、配置文件

除了通过命令行直接配置服务外,也可以通过-C参数指定外部配置文件来设置参数:

./gost -C gost.json

3.1、配置文件为标准json格式:

{
    "Debug": true,
    "Retries": 0,
    "ServeNodes": [
        ":8080",
        "ss://username:passwrod@:8338"
    ],
    "ChainNodes": [
        "http://192.168.1.1:8080",
        "https://10.0.2.1:443"
    ],
    "Routes": [
        {
            "Retries": 1,
            "ServeNodes": [
                "ws://:1443"
            ],
            "ChainNodes": [
                "socks://:192.168.1.1:1080"
            ]
        },
        {
            "Retries": 3,
            "ServeNodes": [
                "quic://:443"
            ]
        }
    ]
}

其中ServeNodes参数为必须,其余根据需要选配。具体配置参数及格式说明:

  1. Debug - 对应命令行参数-D。(2.4+)
  2. Retries - 通过代理链建立连接失败后的重试次数。(2.5+)
  3. ServeNodes - 必须项,等同于命令行参数-L。
  4. ChainNodes - 等同于命令行参数-F。
  5. Routes - 可选参数,额外的服务列表,每一项都拥有独立的转发链。(2.5+)

4、放后台运行

上述运行方式都必须在前台运行,并且有日志输出。使用如下方法后台运行:

# 记录日志
nohup ./gost -L :8080 > ./gost.log 2>&1 &
# 不记录日志
nohup ./gost -L :8080 > /dev/null 2>&1 &

另外提供一个统一的启动/停止控制脚本:

#!/bin/bash
case $1 in
    start)
    echo start gost service...
    ./gost -L :8080 > /dev/null 2>&1 &
    ;;
    stop)
    echo stop gost service...
    kill `pidof gost`
    ;;
    *)
    echo Usage:`basename $0` start|stop
esac

还可以使用服务方式运行(待验证),服务脚本如下:

cat gost.service
[Unit]
Description=Gost Proxy
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/gost/gost -L=:8080
Restart=always
[Install]
WantedBy=multi-user.target

拷贝至系统服务目录,并给予执行权限:

cp gost.service /etc/systemd/system/gost.service
chmod +x /etc/systemd/system/gost.service
# 后续如果服务脚本有修改执行
systemctl daemon-reload

设置开机自启和启动服务:

systemctl enable gost.service
systemctl start gost.service

仅支持centos 7.x系统。

参考:https://blog.csdn.net/lynnyq/article/details/80892507

Linux 代理

暂无评论,快来抢沙发。