对于使用 GOSTv2 的小伙伴来说,搭建加密隧道的流程已经非常简单。然而,当节点数量增加后,逐一通过 SSH 登录并使用命令行管理隧道配置的效率就显得低下了。
幸运的是,GOSTv3 引入了 Web API 功能,使得我们可以通过 Web 界面对隧道进行可视化管理。这不仅直观,还能极大提升管理效率。
你可以直接使用官方提供的 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
- 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
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 配置文件 完全复制 到其他入口节点,保证配置一致性。
- 具体步骤:
- 在 主配置节点 上测试并确认配置文件运行无误。
- 将配置文件分发到其他入口节点(如
scp /etc/gost/config.json user@chickenB:/etc/gost/config.json
)。 - 确保其他入口节点的 GOST 程序已正确安装。
- 启用服务或守护进程,方法与前面提到的开机自启步骤一致。
- 好处:
- 只需一次性配置,降低重复工作量。
- 增加新的入口节点时,仅需简单复制配置文件即可快速扩展。