English README
Wiki網站: v2.gost.run
Telegram討論群: https://t.me/gogost
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依照-F設定的順序透過代理鏈將請求最終轉發給abcd: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支援兩種模式:
服務端:
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支援兩種模式:
服務端:
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),用於資料加密。
服務端:
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證書,有兩種方法:
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憑證進行憑證鎖定(Certificate Pinning):
gost -L=:8080 -F= " http2://:443?ca=ca.pem "
證書鎖定功能由@sheerun貢獻