GitHub - KANIKIG/Multi-EasyGost: 致力于最简单好用的GOST小白脚本
致力于最简单好用的GOST小白脚本. Contribute to KANIKIG/Multi-EasyGost development by creating an account on GitHub.

对于使用 GOSTv2 的小伙伴来说,搭建加密隧道的流程已经非常简单。然而,当节点数量增加后,逐一通过 SSH 登录并使用命令行管理隧道配置的效率就显得低下了。

幸运的是,GOSTv3 引入了 Web API 功能,使得我们可以通过 Web 界面对隧道进行可视化管理。这不仅直观,还能极大提升管理效率。

GOST API Manage

你可以直接使用官方提供的 Web UI 工具来快速配置和管理隧道。值得一提的是,Web UI 的配置数据会保存在浏览器的 IndexedDB 中,安全性有保障,无需担心信息泄露。

此外,如果你对隐私和控制权有更高要求,还可以选择自行构建 Web UI 并部署到自己的 Cloudflare Pages 上,实现完全独立的管理环境。

安装

安装最新版本

bash <(curl -fsSL https://github.com/go-gost/gost/raw/master/install.sh) --install

启动API

要使用webui,要先在vps上启用api服务。

gost -api :18080

开启认证并设置选项

gost -api "user:pass@:18080?pathPrefix=/api&accesslog=true"

  • pathPrefix=/api:这个参数用来指定一个 URL 路径前缀。换句话说,所有访问该服务的请求,都会在 URL 中带上这个前缀。例如,如果你访问 http://example.com/api/endpoint,那么 /api 就是路径前缀,指示该请求是在 /api 路径下。在一些代理或转发服务中,pathPrefix 可以用来修改请求的路径,或者将路径映射到内部的某个特定处理程序或服务。
  • accesslog=true:这个参数通常用来启用 访问日志。当 accesslog=true 时,服务会记录每次请求的详细信息(如请求的 URL、请求的时间、客户端的 IP 地址等),方便后续分析、监控或调试。启用访问日志后,通常可以查看访问日志文件或系统日志,以便追踪请求的流量和状态,帮助排查问题或优化服务。

连接API

打开gost-webui

  • API 地址 http://IP:PORT, 如果配置了pathPrefix,加上pathPrefix路径;
  • 填写 用户名和密码,如果没有设置就不用填;
  • 由于Chrome安全规则,把网站设置 -> 不安全内容设置为允许,即可绕过;
  • 点击 连接 按钮;

使用

创建入口

service分别添加tcp入口和udp入口。

参考配置如下:

{
    "name": "service-121",
    "addr": ":10002",
    "handler": {
        "type": "tcp",
        "chain": "chain-02"
    },
    "listener": {
        "type": "tcp"
    }
}
{
    "name": "service-042",
    "addr": ":10004",
    "handler": {
        "type": "udp",
        "chain": "chain-04"
    },
    "listener": {
        "type": "udp",
        // "metadata": {
        //     "keepAlive": true,
        //     "readBufferSize": 4096,
        //     "ttl": "5s"
        // }
    }
}

name 每个隧道配置需要一个唯一的名称,用于区分不同的隧道。可以根据功能、用途或节点命名规则进行命名,确保清晰易识别。

chain 每个隧道都需要绑定一个转发链。这个转发链用于定义流量的处理路径。对于每一个隧道配置,务必为其设置对应的 chain,以避免冲突或流量错误。

addr设置隧道的入口地址和监听端口,例如 :8080,表示监听所有地址的 8080 端口。

type 选择tcp或者udp

💡
如果在监听 UDP 时没有配置 keepalive 参数,UDP 的转发可能会变成 NAT3。虽然这不会影响节点的正常使用,但在某些情况下,如果需要保持更稳定的 NAT 行为或更好的连接质量,建议添加 keepalive 参数。

然后在Chain添加一个转发链

{
    "name": "chain-02",
    "hops": [
        {
            "name": "hop-02"
        }
    ]
}

name 自行更改,分清楚就行

hops name 命名规则推荐和chain一致,也可以自行修改

搭建端口转发

Hop 添加一个转发规则,我们使用内联数据写配置

{
    "name": "hop-02",
    "nodes": [
        {
            "name": "node-02",
            "addr": "xxxx:20002",
            "connector": {
                "type": "http"
            },
            "dialer": {
                "type": "tcp"
            }
        }
    ]
}

addr 的xxxx修改为对端ip或域名,端口也自行修改为对端端口

这样一个简单的端口转发就设置好了。

搭建加密隧道

加密转发

将上面搭建好的端口转发修改为加密转发,还是Hop 这里,修改为

{
    "name": "hop-02",
    "nodes": [
        {
            "name": "node-02",
            "addr": "xxxx:20002",
            "connector": {
                "type": "relay"
            },
            "dialer": {
                "type": "wss",
                "tls": {
                    "serverName": "xxxxx"
                }
            }
        }
    ]
}

解密转发

为了完成完整的隧道配置,我们需要在对端搭建解密转发。在搭建前记得安装gost,然后打开api服务。

Service新建一个解密服务,配置参考如下

{
    "name": "service-0",
    "addr": ":20002",
    "handler": {
        "type": "relay"
    },
    "listener": {
        "type": "wss"
    },
    "forwarder": {
        "nodes": [
            {
                "name": "target-0",
                "addr": "127.0.0.1:10010"
            }
        ]
    }
}

意思是将20002端口接收到的流量解密并转发到本地的10010端口。这里10010端口就是你的对端本身搭建的节点服务端口。

如果你的对端解锁不行,想再转发到一个优质解锁的家宽落地节点,那么只需将127.0.0.1:10010改为落地鸡搭建的节点服务端口,即:

{
    "name": "service-0",
    "addr": ":20002",
    "handler": {
        "type": "relay"
    },
    "listener": {
        "type": "wss"
    },
    "forwarder": {
        "nodes": [
            {
                "name": "target-0",
                "addr": "45.151.1.1:10010"
            }
        ]
    }
}

这样加密隧道就完成了。

配置systemd守护进程

在 WebUI 中配置完成后,实际上 GOST 已经按照配置文件在运行。如果需要实现开机自启,可以通过配置守护进程并引用修改后的配置文件来完成。以下是具体步骤:

导出配置文件

点击右上角保存到服务器或者下载配置文件

配置systemd

/etc/systemd/systemd/下新建gost.service并写入如下配置:

[Unit]
Description=GO Simple Tunnel
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/gost -C /root/gost/gost.json
Restart=always

[Install]
WantedBy=multi-user.target

/root/gost/gost.json 这里改为你导出后上传到小鸡的路径

设为开机启动

systemctl enable gost

启动服务

systemctl start gost

进阶管理

1. 多配置文件多对端连接

在配置加密隧道时,建议每个配置文件中只设置一个对端连接。这样可以有效降低复杂性,并便于对端对流量进行统一解密和处理。

  • 本地配置
    每个入口节点配置一个独立的加密隧道,所有流量通过隧道发送至同一个对端地址。
  • 对端配置
    对端统一解密流量后,根据目标信息将其转发到对应的落地节点。例如,通过目标端口或 IP 地址区分不同服务。

2. 多入口节点部署

如果需要多个入口节点(即 "入口鸡B"),可以直接将已配置好的 GOST 配置文件 完全复制 到其他入口节点,保证配置一致性。

  • 具体步骤
    1. 在 主配置节点 上测试并确认配置文件运行无误。
    2. 将配置文件分发到其他入口节点(如 scp /etc/gost/config.json user@chickenB:/etc/gost/config.json)。
    3. 确保其他入口节点的 GOST 程序已正确安装。
    4. 启用服务或守护进程,方法与前面提到的开机自启步骤一致。
  • 好处
    • 只需一次性配置,降低重复工作量。
    • 增加新的入口节点时,仅需简单复制配置文件即可快速扩展。

包含的标签:

教程, GOST

最后更新: November 16, 2024