
GO Simple Tunnel - un tunnel simple écrit en golang
Site Wiki : v2.gost.run
Groupe de discussion Telegram : https://t.me/gogost
Groupe de discussion 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 transfère finalement la requête à a.b.c.d:NNNN via la chaîne de proxy dans l'ordre défini par -F. Chaque proxy de transfert peut être de n'importe quel type : HTTP/HTTPS/HTTP2/SOCKS4/SOCKS5/Shadowsocks.
gost -L=tcp://:2222/192.168.1.1:22 [-F=...]
Transfère les données du port TCP local 2222 (via la chaîne de proxy) vers 192.168.1.1:22. Lorsque l'extrémité de la chaîne de proxy (le dernier paramètre -F) est de type canal de transfert SSH, gost utilise directement la fonction de transfert de port local 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=...]
Transfère les données du port UDP local 5353 (via la chaîne de proxy) vers 192.168.1.1:53. Chaque canal de transfert a un délai d'expiration ; si aucun échange de données n'a lieu pendant cette période, le canal est fermé. Le paramètre ttl permet de définir ce délai, la valeur par défaut est de 60 secondes.
Note : Lors du transfert de données UDP, s'il y a une chaîne de proxy, l'extrémité de la chaîne (le dernier paramètre -F) doit être un proxy de type gost SOCKS5, et gost utilisera la méthode UDP over TCP pour le transfert.
gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080]
Transfère les données de 172.24.10.1:2222 (via la chaîne de proxy) vers 192.168.1.1:22. Lorsque l'extrémité de la chaîne de proxy est de type canal de transfert SSH, gost utilise directement la fonction de transfert de port distant 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]
Transfère les données de 172.24.10.1:5353 (via la chaîne de proxy) vers 192.168.1.1:53. Chaque canal de transfert a un délai d'expiration ; si aucun échange de données n'a lieu pendant cette période, le canal est fermé. Le paramètre ttl permet de définir ce délai, la valeur par défaut est de 60 secondes.
Note : Lors du transfert de données UDP, s'il y a une chaîne de proxy, l'extrémité de la chaîne (le dernier paramètre -F) doit être un proxy de type GOST SOCKS5, et gost utilisera la méthode UDP-over-TCP pour le transfert.
gost prend en charge deux modes pour HTTP2 :
Serveur :
gost -L=http2://:443
Client :
gost -L=:8080 -F=http2://server_ip:443
Serveur :
gost -L=h2://:443
Client :
gost -L=:8080 -F=h2://server_ip:443
Le support de QUIC par gost est basé sur la bibliothèque quic-go.
Serveur :
gost -L=quic://:6121
Client :
gost -L=:8080 -F=quic://server_ip:6121
Note : Le mode QUIC ne peut être utilisé que comme premier nœud de la chaîne de proxy.
Le support de KCP par gost est basé sur les bibliothèques kcp-go et kcptun.
Serveur :
gost -L=kcp://:8388
Client :
gost -L=:8080 -F=kcp://server_ip:8388
gost charge automatiquement le fichier de configuration kcp.json (s'il existe) dans le répertoire de travail actuel, ou vous pouvez spécifier manuellement le chemin du fichier de configuration via un paramètre :
gost -L=kcp://:8388?c=/path/to/conf/file
Note : Le mode KCP ne peut être utilisé que comme premier nœud de la chaîne de proxy.
gost prend en charge deux modes pour SSH :
Serveur :
gost -L=forward+ssh://:2222
Client :
gost -L=rtcp://:1222/:22 -F=forward+ssh://server_ip:2222
Serveur :
gost -L=ssh://:2222
Client :
gost -L=:8080 -F=ssh://server_ip:2222?ping=60
Le paramètre ping permet de définir la période d'envoi des paquets keepalive, en secondes. Par défaut, aucun paquet keepalive n'est envoyé.
Proxy transparent basé sur iptables.
gost -L=redirect://:12345 -F=http2://server_ip:443
Cette fonctionnalité est fournie par @isofew.
Serveur :
gost -L=obfs4://:443
Une fois le serveur démarré, l'adresse de connexion est affichée dans la console pour que le client l'utilise :
obfs4://:443/?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0
Client :
gost -L=:8888 -F='obfs4://server_ip:443?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0'
Pour HTTP, il est possible d'utiliser TLS pour chiffrer l'ensemble de la communication, c'est-à-dire un proxy HTTPS :
Serveur :
gost -L=https://:443
Client :
gost -L=:8080 -F=http+tls://server_ip:443
Le mode proxy HTTP2 de gost ne prend en charge que le protocole HTTP2 chiffré avec TLS, pas le transport HTTP2 en clair.
Le mode canal HTTP2 de gost prend en charge les modes chiffré (h2) et en clair (h2c).
gost prend en charge les méthodes no-auth (0x00) et user/pass (0x02) du protocole SOCKS5 standard, et les étend avec deux méthodes supplémentaires : tls (0x80) et tls-auth (0x82), pour le chiffrement des données.
Serveur :
gost -L=socks5://:1080
Client :
gost -L=:8080 -F=socks5://server_ip:1080
Si les deux extrémités sont gost (comme ci-dessus), les données sont chiffrées (en négociant l'utilisation de la méthode tls ou tls-auth). Sinon, la communication utilise le SOCKS5 standard (méthode no-auth ou user/pass).
Le support de shadowsocks par gost est basé sur la bibliothèque shadowsocks-go.
Serveur :
gost -L=ss://chacha20:123456@:8338
Client :
gost -L=:8080 -F=ss://chacha20:123456@server_ip:8338
Actuellement, seul le serveur prend en charge le relais UDP.
Serveur :
gost -L=ssu://chacha20:123456@:8338
gost intègre des certificats TLS. Si vous souhaitez utiliser d'autres certificats TLS, il y a deux méthodes :
gost -L="http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file"
Pour le client, le paramètre secure permet d'activer la vérification du certificat serveur et du nom de domaine :
gost -L=:8080 -F="http2://server_domain_name:443?secure=true"
Pour le client, il est possible de spécifier un certificat CA pour effectuer un verrouillage de certificat (Certificate Pinning) :
gost -L=:8080 -F="http2://:443?ca=ca.pem"
La fonctionnalité de verrouillage de certificat est fournie par @sheerun