
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) должен быть прокси типа SOCKS5 от gost; 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) должен быть прокси типа SOCKS5 от GOST; 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
Поддержка QUIC в gost основана на библиотеке quic-go.
Сервер:
gost -L=quic://:6121
Клиент:
gost -L=:8080 -F=quic://server_ip:6121
Примечание: Режим QUIC может использоваться только в качестве первого узла прокси-цепочки.
Поддержка KCP в gost основана на библиотеках 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 задает период отправки keepalive-пакетов в секундах. По умолчанию keepalive не отправляются.
Прозрачный прокси на основе 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
Режим прокси HTTP2 в gost поддерживает только протокол HTTP2 с шифрованием TLS, передача в открытом виде не поддерживается.
Режим канала 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).
Поддержка shadowsocks в gost основана на библиотеке shadowsocks-go.
Сервер:
gost -L=ss://chacha20:123456@:8338
Клиент:
gost -L=:8080 -F=ss://chacha20:123456@server_ip:8338
В настоящее время сервер поддерживает только ретрансляцию UDP.
Сервер:
gost -L=ssu://chacha20:123456@:8338
gost имеет встроенный 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.