使用 Docker 部署 Gost 转发服务
发布于
# Docker
GOST 全称 “GO Simple Tunnel”,一个使用 Golang 语言实现的安全隧道工具。
假定你已经安装好 Docker,先创建一个 GOST 配置文件,文件名为:“gost.yml”
services:
- name: service-0
addr: :80
admission: admission-0
handler:
type: tcp
listener:
type: tcp
forwarder:
nodes:
- name: target-0
addr: 1.1.1.1:80
- name: service-1
addr: :443
admission: admission-0
handler:
type: tcp
listener:
type: tcp
forwarder:
nodes:
- name: target-1
addr: 1.1.1.1:443
admissions:
- name: admission-0
whitelist: true
matchers:
- woc.cool
该配置文件的作用是将本机的 “80” 和 “443” 端口转发到 Cloudflare 服务器对应的端口上,同时使用 admissions 进行域名白名单鉴权,防止转发服务被滥用。
然后创建一个 docker-compose.yml 配置文件,用于启动 Docker 服务。
version: '3.9'
services:
gost:
container_name: gost
image: gogost/gost:版本号
# 端口映射
ports:
- 80:80
- 443:443
volumes:
# 将当前目录的 gost.yml 文件映射到 docker 容器的指定目录中
- ./gost.yml:/etc/gost/gost.yml
restart: "always"
上面的 Docker 配置文件默认使用 “bridge” 桥接的网络模式,所以需要进行端口映射。但是对于 GOST 我更倾向于使用 “host” 模式,因为 “bridge” 模式对于需要高性能网络的应用来说是会有一些性能损耗。下面是使用 “host” 的配置文件。
version: '3.9'
services:
gost:
container_name: gost
image: gogost/gost:版本号
volumes:
# 将当前目录的 gost.yml 文件映射到 docker 容器的指定目录中
- ./gost.yml:/etc/gost/gost.yml
restart: "always"
# 使用 host 模式,不需要进行端口转发,docker 容器内部使用的端口会直接作用在宿主机上
network_mode: host
最后开放服务器防火墙对应的端口,并使用相应的 docker compose 命令进行操作即可。
docker compose up -d # 下载镜像并启动容器
docker compose down -v # 停止容器