Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
G
gost
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
gost
Commits
b5f499e5
Commit
b5f499e5
authored
Nov 22, 2015
by
ginuerzh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update README.md
parent
0d51f206
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
49 additions
and
33 deletions
+49
-33
README.md
README.md
+49
-33
No files found.
README.md
View file @
b5f499e5
gost - GO Simple Tunnel
====
====
==
### GO语言实现的安全隧道
#### 特性
特性
------
*
可同时监听多端口
*
可设置转发代理,支持多级转发(转发链)
*
兼容标准http(s)/socks5代理协议
...
...
@@ -17,9 +18,9 @@ Google讨论组: https://groups.google.com/d/forum/go-gost
在gost中,gost与其他代理服务都被看作是代理节点,gost可以自己处理请求,或者将请求转发给任意一个或多个代理节点。
####
参数说明
####
#
-L和-F参数格式
参数说明
------
#### -L和-F参数格式
```
bash
[
scheme://][user:pass@host]:port
```
...
...
@@ -39,7 +40,7 @@ protocol: 代理协议类型(http, socks5, shadowsocks), transport: 数据传输
> ss - 作为shadowsocks服务,ss://aes-256-cfb:123456@:8080
####
#
开启日志
#### 开启日志
> -logtostderr : 输出到控制台
...
...
@@ -48,9 +49,9 @@ protocol: 代理协议类型(http, socks5, shadowsocks), transport: 数据传输
> -log_dir=. : 输出到目录
####
使用方法
####
#
不设置转发代理
使用方法
------
#### 不设置转发代理
<img
src=
"https://ginuerzh.github.io/images/gost_01.png"
/>
...
...
@@ -69,7 +70,7 @@ gost -L=admin:123456@localhost:8080
gost
-L
=
http+tls://:443
-L
=
socks://:1080
-L
=
ss://aes-128-cfb:123456@:8338
```
####
#
设置转发代理
#### 设置转发代理
<img
src=
"https://ginuerzh.github.io/images/gost_02.png"
/>
```
bash
...
...
@@ -81,7 +82,7 @@ gost -L=:8080 -F=192.168.1.1:8081
gost
-L
=
:8080
-F
=
http://admin:123456@192.168.1.1:8081
```
####
#
设置多级转发代理(转发链)
#### 设置多级转发代理(转发链)
<img
src=
"https://ginuerzh.github.io/images/gost_03.png"
/>
```
bash
...
...
@@ -89,53 +90,68 @@ gost -L=:8080 -F=http+tls://192.168.1.1:443 -F=socks+ws://192.168.1.2:1080 -F=ss
```
gost按照-F设置顺序通过转发链将请求最终转发给a.b.c.d:NNNN处理,每一个转发代理可以是任意http(s)/socks5/shadowsocks类型代理。
##### 加密机制
加密机制
------
#### HTTP
对于http可以使用tls加密整个通讯过程,即https代理:
对于http或socks5都可以使用tls加密整个通讯过程:
http:
服务端:
```
bash
gost
-L
=
http+tls://:
8080
gost
-L
=
http+tls://:
443
```
socks5:
客户端:
```
bash
gost
-L
=
socks+tls://:8080
gost
-L
=
:8080
-F
=
http+tls://server_ip:443
```
gost针对socks5额外提供了协商的tls传输方法,与上面的不同之处在于socks5最开始的方法选择(method selection)过程是非加密的。
如果连接方是gost则后续的通讯使用tls加密,否则使用标准socks5进行通讯(未加密)。
也就是说如果连接方也是gost,使用以下方法:
#### SOCKS5
gost支持标准socks5协议的no-auth(0x00)和user/pass(0x02)方法,并在此基础上扩展了两个:tls(0x80)和tls-auth(0x82),用于数据加密。
服务端:
```
bash
gost
-L
=
socks://:1080
```
客户端:
```
bash
gost
-L
=
socks://:8
080
gost
-L
=
:8080
-F
=
socks://server_ip:1
080
```
数据也会被加密传输,这时就不需要使用socks+tls(数据会被双重加密传输)模式了
。
如果两端都是gost(如上)则数据传输会被加密(使用tls或tls-auth方法),否则使用标准socks5进行通讯(no-auth或user/pass方法)
。
gost内置了tls证书,如果需要使用其他的tls证书,在gost目录放置key.pem(公钥)和cert.pem(私钥)两个文件即可。
#### shadowsocks
gost对shadowsocks的支持是基于
[
shadowsocks-go
](
https://github.com/shadowsocks/shadowsocks-go
)
库。
#### SOCKS5 UDP数据处理
服务端:
```
bash
gost
-L
=
ss://aes-128-cfb:123456@:8338
```
客户端:
```
bash
gost
-L
=
:8080
-F
=
ss://aes-128-cfb:123456@server_ip:8338
```
gost内置了tls证书,如果需要使用其他tls证书,在gost目录放置key.pem(公钥)和cert.pem(私钥)两个文件即可。
##### 不设置转发代理
SOCKS5 UDP数据处理
------
#### 不设置转发代理
<img
src=
"https://ginuerzh.github.io/images/udp01.png"
height=
100
/>
gost作为标准socks5代理处理UDP数据
####
#
设置转发代理
#### 设置转发代理
<img
src=
"https://ginuerzh.github.io/images/udp02.png"
height=
100
/>
####
#
设置多个转发代理(转发链)
#### 设置多个转发代理(转发链)
<img
src=
"https://ginuerzh.github.io/images/udp03.png"
height=
200
/>
当设置转发代理时,gost会使用UDP-Over-TCP方式转发UDP数据。proxy1 - proxyN可以为任意http/socks5类型代理。
##### 限制条件
当设置转发代理时,gost会使用UDP-Over-TCP方式转发UDP数据。proxy1 - proxyN可以为任意http(s)/socks5/shadowsocks类型代理。
限制条件
------
转发链中的http代理必须支持CONNECT方法。
如果要转发socks5的BIND和UDP请求,转发链的末端(最后一个-F参数)必须是gost socks5类型代理。
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment