GOST从2.1版本开始增加了对端口转发的支持。
使用说明
端口转发服务节点的配置与普通的代理节点有所不同:
scheme://[bind_address]:port/[host]:hostport[,[host]:hostport]?ip=[host]:hostport][,[host]:hostport]]
scheme - 端口转发模式, 本地端口转发: tcp
, udp
; 远程端口转发: rtcp
, rudp
; 转发隧道: tls
, kcp
等传输类型。
[bind_address]:port - 本地/远程绑定地址。
[host]:hostport[,[host]:hostport] - (可选, 2.6+) 目标访问地址,支持以逗号分割的多地址形式。
参数说明
ip
- (可选, 2.8+) 也可以通过此参数来指定目标地址。
strategy
- 指定节点选择策略,round
- 轮询,random
- 随机, fifo
- 自上而下。默认值为round
。
max_fails
- (2.8.1+) 指定节点连接的最大失败次数,当与一个节点建立连接失败次数超过此设定值时,此节点会被标记为死亡节点(Dead),死亡节点不会被选择使用。默认值为1。
fail_timeout
- (2.8.1+) 指定死亡节点的超时时间,当一个节点被标记为死亡节点后,在此设定的时间间隔内不会被选择使用,超过此设定时间间隔后,会再次参与节点选择。默认为30秒。
TCP本地端口转发
将本地的TCP端口A映射到指定的目标TCP端口B,所有到端口A的数据会被转发到端口B。此功能类似于SSH的本地端口转发功能。
gost -L=tcp://:2222/192.168.1.1:22 [-F=..]
将本地TCP端口2222上的数据(通过代理链)转发到192.168.1.1:22上。
当代理链末端(最后一个-F参数)为forward+ssh
类型时,GOST会直接使用SSH的本地端口转发功能:
gost -L=tcp://:2222/192.168.1.1:22 -F forward+ssh://:2222
服务端可以是标准的SSH程序,也可以是GOST的SSH转发模式:
gost -L forward+ssh://:2222
scheme必须是forward+ssh
。
TCP远程端口转发
将目标TCP端口B映射到本地TCP端口A,所有到端口B上的数据会被转发到端口A。此功能类似于SSH的远程端口转发功能。
gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080]
将172.24.10.1:2222上的数据(通过代理链)转发到192.168.1.1:22上。
SOCKS5多路复用模式
在2.5版本中,SOCKS5的BIND方法增加了对多路复用的支持,远程端口转发可以利用这个特性提高传输效率。
gost -L rtcp://:8080/192.168.1.1:80 -F socks5://:1080?mbind=true
客户端通过mbind=true
参数开启SOCKS5的BIND多路复用模式。
SSH端口转发模式
当代理链末端(最后一个-F参数)为forward+ssh
类型时,GOST会直接使用SSH的远程端口转发功能:
gost -L=rtcp://:2222/192.168.1.1:22 -F forward+ssh://:2222
服务端可以是标准的SSH程序,也可以是GOST的SSH转发模式:
gost -L forward+ssh://:2222
scheme必须是forward+ssh
。
UDP本地端口转发
将本地的UDP端口A映射到指定的目标UDP端口B,所有到端口A的数据会被转发到端口B。
gost -L=udp://:5353/192.168.1.1:53?ttl=60s [-F=... -F=socks5://172.24.10.1:1080]
将本地UDP端口5353上的数据(通过代理链)转发到192.168.1.1:53上。
每一个不同的客户端(不同的端口)对应一条转发通道,每条转发通道都有超时时间,当超过此时间且在此时间段内无任何数据交互,则此通道将关闭。
可以通过ttl
参数来设置超时时间,默认值为60秒。
UDP远程端口转发
将目标UDP端口B映射到本地UDP端口A,所有到端口B上的数据会被转发到端口A。
gost -L=rudp://:5353/192.168.1.1:53?ttl=60s [-F=... -F=socks5://172.24.10.1:1080]
将172.24.10.1:5353上的数据(通过代理链)转发到192.168.1.1:53上。
每一个不同的客户端(不同的端口)对应一条转发通道,每条转发通道都有超时时间,当超过此时间且在此时间段内无任何数据交互,则此通道将关闭。
可以通过ttl
参数来设置超时时间,默认值为60秒。
转发UDP数据时,如果有代理链,则代理链的末端(最后一个-F参数)协议必须是GOST
socks5
类型,传输层可以任意选择。2.10+后本地UDP端口转发也可以使用
ssu
进行转发。
转发隧道
在2.5版本中TCP本地端口转发可以配合传输类型一起使用:
服务端:
gost -L tls://:443/:1443 -L sni://:1443
对应的scheme
为传输类型,协议类型必须为空。
客户端:
gost -L :8080 -F forward+tls://server_ip:443
对应的scheme
为forward+transport
格式,其中协议类型必须为forward
。
使用场景
加密
gost -L tls://:443/:8080 -L http://:8080
将8080端口的HTTP代理服务转成443端口的HTTPS代理服务
加速
gost -L kcp://:8388/:8338 -L ss://chacha20:123456@:8338
将8338端口的shadowsocks代理服务转成使用KCP传输。