
GO Simple Tunnel - un semplice tunnel scritto in golang
Sito Wiki: v2.gost.run
Gruppo Telegram: https://t.me/gogost
Gruppo Google: https://groups.google.com/d/forum/go-gost
GOST v3 https://gost.run
https://github.com/ginuerzh/gost/releases
git clone https://github.com/ginuerzh/gost.git
cd gost/cmd/gost
go build
docker run --rm ginuerzh/gost -V
brew install gost
sudo snap install core
sudo snap install gost
gost -L=:8080
gost -L=admin:123456@localhost:8080
gost -L=http2://:443 -L=socks5://:1080 -L=ss://aes-128-cfb:123456@:8338
gost -L=:8080 -F=192.168.1.1:8081
gost -L=:8080 -F=http://admin:[email protected]:8081
gost -L=:8080 -F=quic://192.168.1.1:6121 -F=socks5+wss://192.168.1.2:1080 -F=http2://192.168.1.3:443 ... -F=a.b.c.d:NNNN
gost inoltra la richiesta attraverso la catena di proxy nell'ordine impostato da -F, che viene infine gestita da a.b.c.d:NNNN. Ogni proxy di inoltro può essere di qualsiasi tipo: HTTP/HTTPS/HTTP2/SOCKS4/SOCKS5/Shadowsocks.
gost -L=tcp://:2222/192.168.1.1:22 [-F=...]
Inoltra i dati dalla porta TCP locale 2222 a 192.168.1.1:22 (attraverso la catena di proxy). Quando l'ultimo nodo della catena di proxy (ultimo parametro -F) è di tipo tunnel SSH, gost utilizza direttamente la funzione di inoltro porte locale di SSH:
gost -L=tcp://:2222/192.168.1.1:22 -F forward+ssh://:2222
gost -L=udp://:5353/192.168.1.1:53?ttl=60 [-F=...]
Inoltra i dati dalla porta UDP locale 5353 a 192.168.1.1:53 (attraverso la catena di proxy). Ogni canale di inoltro ha un timeout; se superato senza scambio di dati, il canale viene chiuso. È possibile impostare il timeout tramite il parametro ttl; il valore predefinito è 60 secondi.
Nota: Quando si inoltrano dati UDP e se è presente una catena di proxy, l'ultimo nodo della catena (ultimo parametro -F) deve essere un proxy gost di tipo SOCKS5; gost utilizzerà UDP over TCP per l'inoltro.
gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080]
Inoltra i dati da 172.24.10.1:2222 a 192.168.1.1:22 (attraverso la catena di proxy). Quando l'ultimo nodo della catena (ultimo parametro -F) è di tipo tunnel SSH, gost utilizza direttamente la funzione di inoltro porte remoto di SSH:
gost -L=rtcp://:2222/192.168.1.1:22 -F forward+ssh://:2222
gost -L=rudp://:5353/192.168.1.1:53?ttl=60 [-F=... -F=socks5://172.24.10.1:1080]
Inoltra i dati da 172.24.10.1:5353 a 192.168.1.1:53 (attraverso la catena di proxy). Ogni canale di inoltro ha un timeout; se superato senza scambio di dati, il canale viene chiuso. È possibile impostare il timeout tramite il parametro ttl; il valore predefinito è 60 secondi.
Nota: Quando si inoltrano dati UDP e se è presente una catena di proxy, l'ultimo nodo della catena (ultimo parametro -F) deve essere un proxy GOST di tipo SOCKS5; gost utilizzerà UDP-over-TCP per l'inoltro.
Il supporto HTTP2 di gost ha due modalità:
Server:
gost -L=http2://:443
Client:
gost -L=:8080 -F=http2://server_ip:443
Server:
gost -L=h2://:443
Client:
gost -L=:8080 -F=h2://server_ip:443
Il supporto QUIC di gost è basato sulla libreria quic-go.
Server:
gost -L=quic://:6121
Client:
gost -L=:8080 -F=quic://server_ip:6121
Nota: La modalità QUIC può essere utilizzata solo come primo nodo della catena di proxy.
Il supporto KCP di gost è basato sulle librerie kcp-go e kcptun.
Server:
gost -L=kcp://:8388
Client:
gost -L=:8080 -F=kcp://server_ip:8388
gost carica automaticamente il file di configurazione kcp.json nella directory di lavoro corrente (se presente), oppure è possibile specificare manualmente il percorso del file di configurazione tramite parametro:
gost -L=kcp://:8388?c=/path/to/conf/file
Nota: La modalità KCP può essere utilizzata solo come primo nodo della catena di proxy.
Il supporto SSH di gost ha due modalità:
Server:
gost -L=forward+ssh://:2222
Client:
gost -L=rtcp://:1222/:22 -F=forward+ssh://server_ip:2222
Server:
gost -L=ssh://:2222
Client:
gost -L=:8080 -F=ssh://server_ip:2222?ping=60
Tramite il parametro ping è possibile impostare l'intervallo di invio dei pacchetti heartbeat, in secondi. Per impostazione predefinita, non vengono inviati heartbeat.
Proxy trasparente basato su iptables.
gost -L=redirect://:12345 -F=http2://server_ip:443
Questa funzionalità è stata contribuita da @isofew.
Server:
gost -L=obfs4://:443
All'avvio del server, sulla console viene stampato l'indirizzo di connessione per il client:
obfs4://:443/?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0
Client:
gost -L=:8888 -F='obfs4://server_ip:443?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0'
Per HTTP è possibile crittografare l'intera comunicazione utilizzando TLS, ovvero un proxy HTTPS:
Server:
gost -L=https://:443
Client:
gost -L=:8080 -F=http+tls://server_ip:443
La modalità proxy HTTP2 di gost supporta solo il protocollo HTTP2 crittografato con TLS; non supporta la trasmissione HTTP2 in chiaro.
La modalità tunnel HTTP2 di gost supporta sia la modalità crittografata (h2) che quella in chiaro (h2c).
gost supporta i metodi standard del protocollo SOCKS5: no-auth (0x00) e user/pass (0x02), e ha esteso con due metodi aggiuntivi: tls (0x80) e tls-auth (0x82), per la crittografia dei dati.
Server:
gost -L=socks5://:1080
Client:
gost -L=:8080 -F=socks5://server_ip:1080
Se entrambi gli endpoint sono gost (come sopra), la trasmissione dei dati sarà crittografata (negoziando l'uso del metodo tls o tls-auth); altrimenti, la comunicazione avviene tramite SOCKS5 standard (metodo no-auth o user/pass).
Il supporto di shadowsocks in gost è basato sulla libreria shadowsocks-go.
Server:
gost -L=ss://chacha20:123456@:8338
Client:
gost -L=:8080 -F=ss://chacha20:123456@server_ip:8338
Attualmente solo il server supporta UDP Relay.
Server:
gost -L=ssu://chacha20:123456@:8338
gost dispone di un certificato TLS integrato. Se si desidera utilizzare un altro certificato TLS, ci sono due metodi:
gost -L="http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file"
Per il client, è possibile abilitare la verifica del certificato del server e del nome di dominio tramite il parametro secure:
gost -L=:8080 -F="http2://server_domain_name:443?secure=true"
Per il client è possibile specificare un certificato CA per il blocco del certificato (Certificate Pinning):
gost -L=:8080 -F="http2://:443?ca=ca.pem"
La funzionalità di blocco del certificato è stata contribuita da @sheerun