
GO Simple Tunnel - golangで書かれたシンプルなトンネル
Wikiサイト: v2.gost.run
Telegramディスカッショングループ: https://t.me/gogost
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は-Fで指定された順にプロキシチェーンを通じてリクエストを最終的にa.b.c.d:NNNNに転送します。各転送プロキシは任意のHTTP/HTTPS/HTTP2/SOCKS4/SOCKS5/Shadowsocksタイプのプロキシにできます。
gost -L=tcp://:2222/192.168.1.1:22 [-F=...]
ローカルのTCPポート2222のデータを(プロキシチェーン経由で)192.168.1.1:22に転送します。プロキシチェーン末尾(最後の-F引数)がSSH転送チャネルタイプの場合、gostは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=...]
ローカルのUDPポート5353のデータを(プロキシチェーン経由で)192.168.1.1:53に転送します。
各転送チャネルにはタイムアウト時間があり、この時間を超えてデータのやり取りがない場合、チャネルは閉じられます。ttlパラメータでタイムアウト時間を設定できます。デフォルト値は60秒です。
注: UDPデータを転送する際、プロキシチェーンがある場合、チェーン末尾(最後の-F引数)はgostのSOCKS5タイププロキシである必要があり、gostはUDP over TCP方式で転送します。
gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080]
172.24.10.1:2222のデータを(プロキシチェーン経由で)192.168.1.1:22に転送します。プロキシチェーン末尾(最後の-F引数)がSSH転送チャネルタイプの場合、gostは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]
172.24.10.1:5353のデータを(プロキシチェーン経由で)192.168.1.1:53に転送します。
各転送チャネルにはタイムアウト時間があり、この時間を超えてデータのやり取りがない場合、チャネルは閉じられます。ttlパラメータでタイムアウト時間を設定できます。デフォルト値は60秒です。
注: UDPデータを転送する際、プロキシチェーンがある場合、チェーン末尾(最後の-F引数)はGOSTのSOCKS5タイププロキシである必要があり、gostはUDP-over-TCP方式で転送します。
gostのHTTP2は2つのモードをサポートしています:
サーバー:
gost -L=http2://:443
クライアント:
gost -L=:8080 -F=http2://server_ip:443
サーバー:
gost -L=h2://:443
クライアント:
gost -L=:8080 -F=h2://server_ip:443
gostのQUICサポートはquic-goライブラリに基づいています。
サーバー:
gost -L=quic://:6121
クライアント:
gost -L=:8080 -F=quic://server_ip:6121
注: QUICモードはプロキシチェーンの最初のノードとしてのみ使用できます。
gostのKCPサポートはkcp-goおよびkcptunライブラリに基づいています。
サーバー:
gost -L=kcp://:8388
クライアント:
gost -L=:8080 -F=kcp://server_ip:8388
gostはカレントディレクトリのkcp.json(存在する場合)設定ファイルを自動的に読み込みます。または、手動でパラメータを指定して設定ファイルのパスを指定できます:
gost -L=kcp://:8388?c=/path/to/conf/file
注: KCPモードはプロキシチェーンの最初のノードとしてのみ使用できます。
gostのSSHは2つのモードをサポートしています:
サーバー:
gost -L=forward+ssh://:2222
クライアント:
gost -L=rtcp://:1222/:22 -F=forward+ssh://server_ip:2222
サーバー:
gost -L=ssh://:2222
クライアント:
gost -L=:8080 -F=ssh://server_ip:2222?ping=60
pingパラメータでハートビートパケットの送信間隔(秒)を設定できます。デフォルトではハートビートは送信されません。
iptablesベースの透過プロキシ。
gost -L=redirect://:12345 -F=http2://server_ip:443
この機能は@isofewによる貢献です。
サーバー:
gost -L=obfs4://:443
サーバー起動後、コンソールにクライアント用の接続アドレスが出力されます:
obfs4://:443/?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0
クライアント:
gost -L=:8888 -F='obfs4://server_ip:443?cert=4UbQjIfjJEQHPOs8vs5sagrSXx1gfrDCGdVh2hpIPSKH0nklv1e4f29r7jb91VIrq4q5Jw&iat-mode=0'
HTTPではTLSを使用して通信全体を暗号化できます。つまりHTTPSプロキシです:
サーバー:
gost -L=https://:443
クライアント:
gost -L=:8080 -F=http+tls://server_ip:443
gostのHTTP2プロキシモードは、TLS暗号化を使用したHTTP2プロトコルのみをサポートし、平文のHTTP2転送はサポートしません。
gostのHTTP2チャネルモードは、暗号化(h2)と平文(h2c)の両方のモードをサポートします。
gostは標準SOCKS5プロトコルのno-auth(0x00)およびuser/pass(0x02)方式をサポートし、これに加えてtls(0x80)およびtls-auth(0x82)の2つの方式を拡張してデータ暗号化を実現しています。
サーバー:
gost -L=socks5://:1080
クライアント:
gost -L=:8080 -F=socks5://server_ip:1080
両方のエンドがgostの場合(上記)、データ転送は暗号化されます(tlsまたはtls-auth方式をネゴシエーション)。そうでない場合は標準のSOCKS5で通信します(no-authまたはuser/pass方式)。
gostのshadowsocksサポートはshadowsocks-goライブラリに基づいています。
サーバー:
gost -L=ss://chacha20:123456@:8338
クライアント:
gost -L=:8080 -F=ss://chacha20:123456@server_ip:8338
現時点ではサーバーのみUDP Relayをサポートしています。
サーバー:
gost -L=ssu://chacha20:123456@:8338
gostには組み込みのTLS証明書が含まれています。別のTLS証明書を使用する必要がある場合、2つの方法があります:
cert.pem(公開鍵)とkey.pem(秘密鍵)の2つのファイルを配置します。gostは実行ディレクトリのcert.pemとkey.pemファイルを自動的に読み込みます。gost -L="http2://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file"
クライアント側ではsecureパラメータを使用してサーバー証明書およびドメイン名の検証を有効にできます:
gost -L=:8080 -F="http2://server_domain_name:443?secure=true"
クライアント側ではCA証明書を指定して証明書ピンニングを行うことができます:
gost -L=:8080 -F="http2://:443?ca=ca.pem"
証明書ピンニング機能は@sheerunによる貢献です。