LISEZMOI en anglais
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
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 transmettra éventuellement la demande à abcd:NNNN pour traitement via la chaîne de proxy dans l'ordre défini par -F. Chaque proxy de transfert peut être n'importe quel proxy de type HTTP/HTTPS/HTTP2/SOCKS4/SOCKS5/Shadowsocks.
gost -L=tcp://:2222/192.168.1.1:22 [-F = ...]
Transférez les données sur le port TCP local 2222 (via la chaîne proxy) vers 192.168.1.1:22. Lorsque la fin de la chaîne proxy (le dernier paramètre -F) est un type de canal de transfert SSH, gost utilisera directement la fonction de transfert de port 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 = ...]
Transférez les données sur le port UDP local 5353 (via la chaîne proxy) vers 192.168.1.1:53. Chaque canal de transfert a un délai d'attente. Lorsque ce délai est dépassé et qu'il n'y a aucune interaction de données pendant cette période, le canal sera fermé. Le délai d'attente peut être défini via le paramètre ttl
et la valeur par défaut est de 60 secondes.
Remarque : lors du transfert de données UDP, s'il existe une chaîne proxy, la fin de la chaîne proxy (le dernier paramètre -F) doit être un proxy de type gost SOCKS5, et gost utilisera UDP sur TCP pour le transfert.
gost -L=rtcp://:2222/192.168.1.1:22 [-F = ... -F = socks5://172.24.10.1:1080]
Transférez les données sur 172.24.10.1:2222 (via la chaîne proxy) vers 192.168.1.1:22. Lorsque la fin de la chaîne proxy (le dernier paramètre -F) est un type de canal de transfert SSH, gost utilisera directement la fonction de transfert de port distant 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]
Transférez les données sur 172.24.10.1:5353 (via la chaîne proxy) vers 192.168.1.1:53. Chaque canal de transfert a un délai d'attente. Lorsque ce délai est dépassé et qu'il n'y a aucune interaction de données pendant cette période, le canal sera fermé. Le délai d'attente peut être défini via le paramètre ttl
et la valeur par défaut est de 60 secondes.
Remarque : lors du transfert de données UDP, s'il existe une chaîne proxy, la fin de la chaîne proxy (le dernier paramètre -F) doit être un proxy de type GOST SOCKS5, et gost utilisera UDP-over-TCP pour le transfert.
Le HTTP2 de Gost prend en charge deux modes :
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
la prise en charge de QUIC par gost est basée sur la bibliothèque quic-go.
Serveur:
gost -L=quic://:6121
Client:
gost -L=:8080 -F=quic://server_ip:6121
Remarque : le mode QUIC ne peut être utilisé que comme premier nœud de la chaîne proxy.
La prise en charge de KCP par Gost est basée sur les bibliothèques kcp-go et kcptun.
Serveur:
gost -L=kcp://:8388
Client:
gost -L=:8080 -F=kcp://server_ip:8388
gost chargera 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 les paramètres :
gost -L=kcp://:8388 ? c=/path/to/conf/file
Remarque : le mode KCP ne peut être utilisé que comme premier nœud de la chaîne proxy.
Le SSH de Gost prend en charge deux modes :
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
Vous pouvez définir la période d'envoi du paquet de battement de cœur via le paramètre ping
, en secondes. Les paquets Heartbeat ne sont pas envoyés par défaut.
Proxy transparent basé sur iptables.
gost -L=redirect://:12345 -F=http2://server_ip:443
Cette fonctionnalité a été contribuée par @isofew.
Serveur:
gost -L=obfs4://:443
Lorsque le serveur est en cours d'exécution, l'adresse de connexion sera imprimée sur la console pour que le client puisse l'utiliser :
obfs4://:443/?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0
Client:
gost -L=:8888 -F='obfs4://server_ip:443?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0'
Pour HTTP, TLS peut être utilisé pour chiffrer l'ensemble du processus de communication, c'est-à-dire le proxy HTTPS :
Serveur:
gost -L=https://:443
Client:
gost -L=:8080 -F=http+tls://server_ip:443
Le mode proxy HTTP2 de Gost prend uniquement en charge le protocole HTTP2 utilisant le cryptage TLS et ne prend pas en charge la transmission HTTP2 en texte brut.
Le mode canal HTTP2 de Gost prend en charge les modes de cryptage (h2) et de texte brut (h2c).
gost prend en charge les méthodes no-auth (0x00) et user/pass (0x02) du protocole standard SOCKS5, et en étend deux sur cette base : tls (0x80) et tls-auth (0x82) pour le cryptage 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), la transmission des données sera cryptée (négociation utilisant la méthode tls ou tls-auth), sinon le standard SOCKS5 sera utilisé pour la communication (méthode sans authentification ou utilisateur/pass).
la prise en charge de gost pour shadowsocks est basée 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 dispose d'un certificat TLS intégré. Si vous devez utiliser d'autres certificats TLS, il existe deux méthodes :
gost -L= " http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file "
Pour le client, vous pouvez activer la vérification du certificat de serveur et du nom de domaine via secure
:
gost -L=:8080 -F= " http2://server_domain_name:443?secure=true "
Pour le client, vous pouvez spécifier le certificat CA pour l'épinglage de certificat (Certificate Pinning) :
gost -L=:8080 -F= " http2://:443?ca=ca.pem "
Fonctionnalité d'épinglage de certificat fournie par @sheerun