以 Docker 为例
场景 1
实现 A 机器的 3000 端口映射到 B 机器的 3001 服务,要求两台机器使用隧道连接而不是端口转发。隧道协议为 relay,传输类型为 mwss
链路为 A:3000 -> B:3000 -> B:3001
客户端 A
version: '3.8'
services:
gost:
image: ginuerzh/gost:latest
container_name: gost
restart: always
network_mode: "host"
command: "-L udp://:3000 -L tcp://:3000 -F relay+mwss://服务端IP地址:3000?nodelay=true"
服务端 B
version: '3.8'
services:
gost:
image: ginuerzh/gost:latest
container_name: gost
restart: always
network_mode: "host"
command: "-L relay+mwss://:3000/:3001"
场景 2
在 A 机器的 3000 端口开启带用户认证的 Socks5 服务,由 B 机器作为 Socks5 服务的流量出口。两台机器的隧道也添加用户认证。
客户端 A
version: '3.8'
services:
gost:
image: ginuerzh/gost:latest
container_name: gost
restart: always
network_mode: "host"
command: "-L socks5://S5用户名:S5密码@:3000 -F relay+mwss://隧道用户名:隧道密码@服务端IP:3000?nodelay=true"
服务端 B
version: '3.8'
services:
gost-s5:
image: ginuerzh/gost:latest
container_name: gost-s5
restart: always
network_mode: "host"
command: "-L relay+mwss://隧道用户名:隧道密码@:3000"