
GO Simple Tunnel - un túnel simple escrito en golang
Sitio Wiki: v2.gost.run
Grupo de discusión en Telegram: https://t.me/gogost
Grupo de discusión en 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 reenvía la solicitud a través de la cadena de proxies según el orden establecido con -F, hasta que finalmente es procesada por a.b.c.d:NNNN. Cada proxy de reenvío puede ser cualquier tipo de proxy HTTP/HTTPS/HTTP2/SOCKS4/SOCKS5/Shadowsocks.
gost -L=tcp://:2222/192.168.1.1:22 [-F=...]
Reenvía los datos del puerto TCP local 2222 (a través de la cadena de proxies) a 192.168.1.1:22. Cuando el último nodo de la cadena de proxies (último parámetro -F) es un túnel de reenvío SSH, gost utiliza directamente la función de reenvío de puertos local de 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=...]
Reenvía los datos del puerto UDP local 5353 (a través de la cadena de proxies) a 192.168.1.1:53.
Cada canal de reenvío tiene un tiempo de espera. Si se supera este tiempo sin intercambio de datos, el canal se cerrará. Se puede configurar el tiempo de espera mediante el parámetro ttl; el valor predeterminado es 60 segundos.
Nota: Al reenviar datos UDP, si hay una cadena de proxies, el último nodo (último parámetro -F) debe ser un proxy gost SOCKS5; gost utilizará el método UDP sobre TCP para el reenvío.
gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080]
Reenvía los datos de 172.24.10.1:2222 (a través de la cadena de proxies) a 192.168.1.1:22. Cuando el último nodo de la cadena de proxies (último parámetro -F) es un túnel de reenvío SSH, gost utiliza directamente la función de reenvío de puertos remoto de 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]
Reenvía los datos de 172.24.10.1:5353 (a través de la cadena de proxies) a 192.168.1.1:53.
Cada canal de reenvío tiene un tiempo de espera. Si se supera este tiempo sin intercambio de datos, el canal se cerrará. Se puede configurar el tiempo de espera mediante el parámetro ttl; el valor predeterminado es 60 segundos.
Nota: Al reenviar datos UDP, si hay una cadena de proxies, el último nodo (último parámetro -F) debe ser un proxy GOST SOCKS5; gost utilizará el método UDP-over-TCP para el reenvío.
El soporte HTTP2 de gost tiene dos 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
El soporte QUIC de gost se basa en la biblioteca quic-go.
Servidor:
gost -L=quic://:6121
Cliente:
gost -L=:8080 -F=quic://server_ip:6121
Nota: El modo QUIC solo puede usarse como el primer nodo de la cadena de proxies.
El soporte KCP de gost se basa en las bibliotecas kcp-go y kcptun.
Servidor:
gost -L=kcp://:8388
Cliente:
gost -L=:8080 -F=kcp://server_ip:8388
gost cargará automáticamente el archivo de configuración kcp.json (si existe) en el directorio de trabajo actual, o se puede especificar manualmente la ruta del archivo de configuración mediante parámetros:
gost -L=kcp://:8388?c=/path/to/conf/file
Nota: El modo KCP solo puede usarse como el primer nodo de la cadena de proxies.
El soporte SSH de gost tiene dos 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
Se puede configurar el período de envío de paquetes de heartbeat mediante el parámetro ping, en segundos. Por defecto no se envían heartbeats.
Proxy transparente basado en iptables.
gost -L=redirect://:12345 -F=http2://server_ip:443
Esta funcionalidad fue contribuida por @isofew.
Servidor:
gost -L=obfs4://:443
Cuando el servidor se ejecuta, imprime en la consola la dirección de conexión para que el cliente la use:
obfs4://:443/?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0
Cliente:
gost -L=:8888 -F='obfs4://server_ip:443?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0'
Para HTTP se puede usar TLS para cifrar toda la comunicación, es decir, proxy HTTPS:
Servidor:
gost -L=https://:443
Cliente:
gost -L=:8080 -F=http+tls://server_ip:443
El modo proxy HTTP2 de gost solo admite el protocolo HTTP2 cifrado con TLS, no la transmisión HTTP2 en texto plano.
El modo canal HTTP2 de gost admite dos modos: cifrado (h2) y texto plano (h2c).
gost admite los métodos no-auth (0x00) y user/pass (0x02) del protocolo SOCKS5 estándar, y extiende dos métodos adicionales: tls (0x80) y tls-auth (0x82) para cifrado de datos.
Servidor:
gost -L=socks5://:1080
Cliente:
gost -L=:8080 -F=socks5://server_ip:1080
Si ambos extremos son gost (como arriba), la transmisión de datos se cifra (negociando el uso del método tls o tls-auth); de lo contrario, se comunica usando SOCKS5 estándar (método no-auth o user/pass).
El soporte de shadowsocks en gost se basa en la biblioteca shadowsocks-go.
Servidor:
gost -L=ss://chacha20:123456@:8338
Cliente:
gost -L=:8080 -F=ss://chacha20:123456@server_ip:8338
Actualmente solo el servidor soporta UDP Relay.
Servidor:
gost -L=ssu://chacha20:123456@:8338
gost incluye certificados TLS integrados. Si se desea usar otros certificados TLS, hay dos métodos:
gost -L="http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file"
Para el cliente, se puede habilitar la verificación del certificado del servidor y del nombre de dominio mediante el parámetro secure:
gost -L=:8080 -F="http2://server_domain_name:443?secure=true"
Para el cliente, se puede especificar un certificado CA para fijación de certificados (Certificate Pinning):
gost -L=:8080 -F="http2://:443?ca=ca.pem"
La funcionalidad de fijación de certificados fue contribuida por @sheerun