端口转发

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

对应的schemeforward+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传输。