
GO Simple Tunnel - um túnel simples escrito em golang
Site Wiki: v2.gost.run
Grupo de discussão Telegram: https://t.me/gogost
Grupo de discussão 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
O gost encaminha as solicitações através da cadeia de proxies na ordem definida por -F, eventualmente enviando para a.b.c.d:NNNN. Cada proxy de encaminhamento pode ser de qualquer tipo: HTTP/HTTPS/HTTP2/SOCKS4/SOCKS5/Shadowsocks.
gost -L=tcp://:2222/192.168.1.1:22 [-F=...]
Encaminha os dados da porta TCP local 2222 (através da cadeia de proxies) para 192.168.1.1:22. Quando o final da cadeia (último argumento -F) é do tipo túnel de encaminhamento SSH, o gost utiliza diretamente a funcionalidade de encaminhamento de porta local do 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=...]
Encaminha os dados da porta UDP local 5353 (através da cadeia de proxies) para 192.168.1.1:53. Cada canal de encaminhamento possui um tempo limite; se esse tempo for excedido sem qualquer troca de dados, o canal será fechado. O parâmetro ttl define o tempo limite; o padrão é 60 segundos.
Nota: Ao encaminhar dados UDP, se houver uma cadeia de proxies, o final da cadeia (último argumento -F) deve ser um proxy do tipo gost SOCKS5; o gost utilizará UDP over TCP para encaminhamento.
gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080]
Encaminha os dados de 172.24.10.1:2222 (através da cadeia de proxies) para 192.168.1.1:22. Quando o final da cadeia (último argumento -F) é do tipo túnel de encaminhamento SSH, o gost utiliza diretamente a funcionalidade de encaminhamento de porta remota do 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]
Encaminha os dados de 172.24.10.1:5353 (através da cadeia de proxies) para 192.168.1.1:53. Cada canal de encaminhamento possui um tempo limite; se esse tempo for excedido sem qualquer troca de dados, o canal será fechado. O parâmetro ttl define o tempo limite; o padrão é 60 segundos.
Nota: Ao encaminhar dados UDP, se houver uma cadeia de proxies, o final da cadeia (último argumento -F) deve ser um proxy do tipo GOST SOCKS5; o gost utilizará UDP-over-TCP para encaminhamento.
O suporte HTTP2 do gost possui dois modos:
Servidor:
gost -L=http2://:443
Cliente:
gost -L=:8080 -F=http2://server_ip:443
Servidor:
gost -L=h2://:443
Cliente:
gost -L=:8080 -F=h2://server_ip:443
O suporte QUIC do gost é baseado na biblioteca quic-go.
Servidor:
gost -L=quic://:6121
Cliente:
gost -L=:8080 -F=quic://server_ip:6121
Nota: O modo QUIC só pode ser usado como primeiro nó da cadeia de proxies.
O suporte KCP do gost é baseado nas bibliotecas kcp-go e kcptun.
Servidor:
gost -L=kcp://:8388
Cliente:
gost -L=:8080 -F=kcp://server_ip:8388
O gost carrega automaticamente o arquivo de configuração kcp.json (se existir) no diretório de trabalho atual, ou você pode especificar manualmente o caminho com um parâmetro:
gost -L=kcp://:8388?c=/path/to/conf/file
Nota: O modo KCP só pode ser usado como primeiro nó da cadeia de proxies.
O suporte SSH do gost possui dois modos:
Servidor:
gost -L=forward+ssh://:2222
Cliente:
gost -L=rtcp://:1222/:22 -F=forward+ssh://server_ip:2222
Servidor:
gost -L=ssh://:2222
Cliente:
gost -L=:8080 -F=ssh://server_ip:2222?ping=60
O parâmetro ping define o intervalo de envio de heartbeats, em segundos. Por padrão, nenhum heartbeat é enviado.
Proxy transparente baseado em iptables.
gost -L=redirect://:12345 -F=http2://server_ip:443
Este recurso foi contribuído por @isofew.
Servidor:
gost -L=obfs4://:443
Quando o servidor é executado, ele imprime o endereço de conexão no console para uso pelo cliente:
obfs4://:443/?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0
Cliente:
gost -L=:8888 -F='obfs4://server_ip:443?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0'
Para HTTP, pode-se usar TLS para criptografar toda a comunicação, ou seja, proxy HTTPS:
Servidor:
gost -L=https://:443
Cliente:
gost -L=:8080 -F=http+tls://server_ip:443
O modo proxy HTTP2 do gost suporta apenas o protocolo HTTP2 criptografado com TLS, não suporta transmissão HTTP2 em texto claro.
O modo túnel HTTP2 do gost suporta os modos criptografado (h2) e texto claro (h2c).
O gost suporta os métodos no-auth (0x00) e user/pass (0x02) do protocolo SOCKS5 padrão, e estende com dois métodos adicionais: tls (0x80) e tls-auth (0x82), para criptografia de dados.
Servidor:
gost -L=socks5://:1080
Cliente:
gost -L=:8080 -F=socks5://server_ip:1080
Se ambas as extremidades forem gost (como acima), a transmissão de dados será criptografada (negociando métodos tls ou tls-auth); caso contrário, a comunicação usará SOCKS5 padrão (métodos no-auth ou user/pass).
O suporte a Shadowsocks do gost é baseado na biblioteca shadowsocks-go.
Servidor:
gost -L=ss://chacha20:123456@:8338
Cliente:
gost -L=:8080 -F=ss://chacha20:123456@server_ip:8338
Atualmente, apenas o servidor suporta UDP Relay.
Servidor:
gost -L=ssu://chacha20:123456@:8338
O gost possui certificados TLS embutidos. Se precisar usar outros certificados TLS, existem dois métodos:
Coloque os arquivos cert.pem (chave pública) e key.pem (chave privada) no diretório de execução do gost; ele os carregará automaticamente.
Use parâmetros para especificar o caminho do arquivo de certificado:
gost -L="http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file"
Para o cliente, o parâmetro secure pode ser usado para habilitar a verificação do certificado do servidor e do nome de domínio:
gost -L=:8080 -F="http2://server_domain_name:443?secure=true"
Para o cliente, é possível especificar um certificado CA para fixação de certificado (Certificate Pinning):
gost -L=:8080 -F="http2://:443?ca=ca.pem"
O recurso de fixação de certificado foi contribuído por @sheerun.