GOST has added support for port forwarding since version 2.1.
Usage
Port forwarding service node configuration and ordinary proxy nodes are different:
scheme://[bind_address]:port/[host]:hostport[,[host]:hostport]?ip=[host]:hostport][,[host]:hostport]]
scheme - Forward mode, local: tcp
, udp
; remote: rtcp
, rudp
; tunnel: tls
, kcp
, etc.
[bind_address]:port - Local/remote binding address.
[host]:hostport[,[host]:hostport] - (Optional, 2.6+) Comma-separated target addresses.
Parameters
ip
- (Optional, 2.8+) Comma-separated target addresses.
strategy
- (2.6+) Specify node selection strategy, round
for round-robin, random
for random selection, fifo
for top-down selection, the default is round
.
max_fails
- (2.8.1+) The maximum number of failed connections for a specified node, When the number of failed connections with a node exceeds this set value, the node will be marked as a Dead node, Dead node will not be selected to use. default value is 1.
fail_timeout
- (2.8.1+) Specify the dead node's timeout period. When a node is marked as a dead node, it will not be selected within this set time interval. After this set time interval, it will participate in node selection again.
Local TCP port forwarding
Map local TCP port A to the specified destination TCP port B. All data to port A is forwarded to port B. This feature is similar to SSH's local port forwarding feature.
gost -L=tcp://:2222/192.168.1.1:22 [-F=..]
The data of the local TCP port 2222 is forwarded to 192.168.1.1:22 (through the proxy chain if exists).
When the end of the chain (the last -F parameter) is of type forward+ssh
, GOST will directly use SSH's local port forwarding feature:
gost -L=tcp://:2222/192.168.1.1:22 -F forward+ssh://:2222
Server can be a standard SSH program, it can also be GOST's SSH forwarding mode:
gost -L forward+ssh://:2222
scheme must be forward+ssh
.
Remote TCP port forwarding
Map the specified destination TCP port B to local TCP port A. All data to port B is forwarded to port A. This feature is similar to SSH's remote port forwarding feature.
gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080]
The data of 172.24.10.1:2222 is forwarded to 192.168.1.1:22 (through the proxy chain if exists).
SOCKS5 BIND method with multiplexing enabled
SOCKS5 BIND method has added support for multiplexing since version 2.5, remote port forwarding can use this feature to improve transport efficiency.
gost -L rtcp://:8080/192.168.1.1:80 -F socks5://:1080?mbind=true
The client enables the SOCKS5 BIND multiplexing mode with the mbind=true
parameter.
SSH port forwarding mode
When the end of the chain (the last -F parameter) is of type forward+ssh
, GOST will directly use SSH's remote port forwarding feature:
gost -L=rtcp://:2222/192.168.1.1:22 -F forward+ssh://:2222
Server can be a standard SSH program, it can also be GOST's SSH forwarding mode:
gost -L forward+ssh://:2222
scheme must be forward+ssh
.
Local UDP port forwarding
Map local UDP port A to the specified destination UDP port B. All data to port A is forwarded to port B.
gost -L=udp://:5353/192.168.1.1:53?ttl=60s [-F=... -F=socks5://172.24.10.1:1080]
The data of the local UDP port 5353 is forwarded to 192.168.1.1:53 (through the proxy chain if exists).
Each different client (has different source port) corresponds to a forwarding channel, and each forwarding channel has a timeout. When the timeout is expired and there is no data interaction during this time, the channel will be closed.
The timeout value can be set by the ttl
parameter. The default value is 60 seconds.
Remote UDP port forwarding
Map the specified destination UDP port B to local UDP port A. All data to port B is forwarded to port A.
gost -L=rudp://:5353/192.168.1.1:53?ttl=60s [-F=... -F=socks5://172.24.10.1:1080]
The data of 172.24.10.1:5353 is forwarded to 192.168.1.1:53 (through the proxy chain if exists).
Each different client (has different source port) corresponds to a forwarding channel, and each forwarding channel has a timeout. When the timeout is expired and there is no data interaction during this time, the channel will be closed.
The timeout value can be set by the ttl
parameter. The default value is 60 seconds.
When forwarding UDP data, if there is a proxy chain, the protocol type of the last node of the proxy chain (the last -F parameter) must be GOST SOCKS5, the transport can be any one.
Forward Tunnel
Local TCP port forwarding can be used with transport types in version 2.5:
Server:
gost -L tls://:443/:1443 -L sni://:1443
The scheme
must be transport type only.
Client:
gost -L :8080 -F forward+tls://server_ip:443
The scheme
is forward+transport
format, The protocol type must be forward
.
Use Cases
Encryption
gost -L tls://:443/:8080 -L http://:8080
Convert the HTTP proxy service on port 8080 to the HTTPS proxy service on port 443.
Network Acceleration
gost -L kcp://:8388/:8338 -L ss://chacha20:123456@:8338
Use shadowsocks proxy service on port 8338 with KCP transport on port 8388.