-
Notifications
You must be signed in to change notification settings - Fork 42
/
README_ZH.md
225 lines (147 loc) · 7.17 KB
/
README_ZH.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
# shadowtunnel
## 介绍
shadowtunnel 是一款可以在你本地机器和远程服务之间建立安全的加密隧道,保护你的 tcp 流量,
能高效压缩传输,流量无特征.
local machine <----> shadowtunnel <----> service on remote.
## 使用
```text
Usage of ./shadowtunnel:
-E outbound connection is encrypted
-U outbound connection is udp
-c compress traffic
-cache string
dns query cache file path (default "cache.dat")
-daemon
daemon mode
-debug
show debug info
-dns string
local dns server listen on address
-dns-hosts string
path of dns hosts file
-dns-proxy
is dns endpoint or not
-dns-server string
remote dns server to resolve domain (default "8.8.8.8:53")
-e inbound connection is encrypted
-f weight
forward address,such as : 127.0.0.1:8080 or with @weight: 127.0.0.1:8080@1
-forever
forever mode
-l string
local listen address, such as : 0.0.0.0:33000 (default ":50000")
-lb-activeafter int
host going actived after this success count (default 1)
-lb-hashtarget hash
use target address to choose parent for LB, only worked for LB's hash
method and using `-redir` (default true)
-lb-inactiveafter int
host going inactived after this fail count (default 2)
-lb-method string
load balance method when use multiple parent,can be
<roundrobin|leastconn|leasttime|hash|weight> (default "leasttime")
-lb-onlyha high availability mode
use only high availability mode to choose parent for LB
-lb-retrytime int
sleep time milliseconds after checking (default 2000)
-lb-timeout int
tcp milliseconds timeout of connecting to parent (default 3000)
-log string
logging output to file
-m string
method of encrypt/decrypt, these below are supported :
aes-128-cfb,aes-192-cfb,des-cfb,cast5-cfb,rc4-md5,chacha20,aes-256-cfb,
aes-128-ctr,aes-192-ctr,aes-256-ctr,bf-cfb,rc4-md5-6,chacha20-ietf
(default "aes-192-cfb")
-nolog
turn off logging
-p string
password of encrypt/decrypt (default "shadowtunnel")
-profiling
profiling mode, in this mode, you should stopping process
by : Ctrl+C or 'kill -s SIGHUP $PID_OF_shadowtunnel'
-redir
read target from socket's redirect opts of iptables
-t int
connection timeout seconds (default 3)
-ttl int
cache seconds of dns query , if zero , default ttl used. (default 300)
-u inbound connection is udp
-v show version
```
## 示例
1.http 代理
假设有一个 vps,它的 IP 是 2.2.2.2
首先在 2.2.2.2 启动一个 http 代理
然后下载 http 代理程序,使用 root 权限在 vps 上执行下面的命令:
wget https://github.com/snail007/goproxy/releases/download/v4.9/proxy-linux-amd64.tar.gz && tar zxfv proxy-linux-amd64.tar.gz && rm proxy-linux-amd64.tar.gz && mv proxy /usr/bin/ && proxy http -p 127.0.0.1:38080 &
2.在 vps 启动一个隧道
下载 shadowtunnel 程序,使用 root 权限在 vps 上执行下面的命令:
wget https://github.com/snail007/shadowtunnel/releases/download/v1.1/shadowtunnel-linux-amd64.tar.gz && tar zxfv shadowtunnel-linux-amd64.tar.gz && rm shadowtunnel-linux-amd64.tar.gz && mv shadowtunnel /usr/bin/
在 vps 上监听 :50000 并转发到 127.0.0.1:38080 :
`shadowtunnel -e -f 127.0.0.1:38080 -l :50000`
3.在本地机器上启动一个隧道
在本地机器上监听 :50000 并转发到 2.2.2.2:50000 :
`shadowtunnel -E -f 2.2.2.2:50000 -l :50000`
4.在 chrome 中设置 http 代理配置
设置本地 chrome 的http代理配置如下:
ip: 127.0.0.1
port: 50000
5.完成
## TCP over UDP
1.http 代理
假设有一个 vps,它的 IP 是 2.2.2.2
首先在 2.2.2.2 启动一个 http 代理
然后下载 http 代理程序,使用 root 权限在 vps 上执行下面的命令:
`wget https://github.com/snail007/goproxy/releases/download/v4.9/proxy-linux-amd64.tar.gz && tar zxfv proxy-linux-amd64.tar.gz && rm proxy-linux-amd64.tar.gz && mv proxy /usr/bin/ && proxy http -p 127.0.0.1:38080 &`
2.在 vps 启动一个隧道
下载 shadowtunnel 程序,使用 root 权限在 vps 上执行下面的命令:
`wget https://github.com/snail007/shadowtunnel/releases/download/v1.1/shadowtunnel-linux-amd64.tar.gz && tar zxfv shadowtunnel-linux-amd64.tar.gz && rm shadowtunnel-linux-amd64.tar.gz && mv shadowtunnel /usr/bin/`
在 vps 上监听UDP :50000 并转发到TCP 127.0.0.1:38080 :
`shadowtunnel -u -e -f 127.0.0.1:38080 -l :50000 -p your-password`
3.在本地机器上启动一个隧道
在本地机器上监听TCP :50000 并转发到UDP 2.2.2.2:50000 :
`shadowtunnel -U -E -f 2.2.2.2:50000 -l :50000 -p your-password`
4.在 chrome 中设置 http 代理配置
设置本地 chrome 的http代理配置如下:
ip: 127.0.0.1
port: 50000
5.完成
## Deamon & Forever & Log
-daemon:
使用参数-daemon可以让shadowtunnel脱离当前命令行,后台运行.
-forever:
使用参数-forever可以让shadowtunnel以创建并监控子进程的方式运行,
如果发生异常退出,会重启子进程,保证服务永远在线.
-log
使用参数-log可以设置日志输出到文件,而不是在命令行输出.
-nolog
使用参数-nolog可以从彻底关闭日志输出,节省CPU占用.
一般是-daemon -forever -log /tmp/st.log 三个参数联合使用,这样出问题时,也可以通过看日志发现问题原因.
实例:
`shadowtunnel -u -e -f 127.0.0.1:38080 -l :50000 -p your-password -daemon -forever -log /tmp/st.log`
## DNS服务
shadowtunnel可以在提供本地DNS查询服务,同时具有缓存功能,可以提高解析速度.
在本地启动端口转发的同时启动一个DNS服务,需要有上级配合.
-dns 参数可以设置本地DNS服务监听的IP和端口,比如:0.0.0.0:5353
-dns-server 参数可以设置最终用来解析域名的DNS服务器,要求是服务器必须支持TCP方式的DNS查询,默认是:8.8.8.8:53.
本地实例:
`shadowtunnel -E -f 2.2.2.2:50000 -l :50000 -p your-password -dns :5353 -dns-server 8.8.8.8:53`
上级实例:
如果上级是链式,那么链条中需要执行DNS代理的上级需要加上-dns-proxy参数.
`shadowtunnel -e -f 127.0.0.1:38080 -l :50000 -p your-password -dns-proxy`
## DNS缓存
-ttl 参数可以设置DNS查询结果缓存时间,单位秒,如果是0,使用查询结果的ttl.
-cache 参数设置DNS缓存文件位置,防止程序重启缓存消失,降低性能.
## 负载均衡
支持上级负载均衡,多个上级重复-f参数即可.
`shadowtunnel -E -f 2.2.2.2:50000 -f 3.3.3.3:50000 -l :50000`
### 设置重试间隔和超时时间
`shadowtunnel -E -f 2.2.2.2:50000 -f 3.3.3.3:50000 -l :50000 -lb-method leastconn -lb-retrytime 300 -lb-timeout 300`
### 设置权重
`shadowtunnel -E -f 2.2.2.2:50000@2 -f 3.3.3.3:50000@1 -l :50000 -lb-method weight -lb-retrytime 300 -lb-timeout 300`
### 使用目标地址选择上级
`shadowtunnel -E -f 2.2.2.2:50000@2 -f 3.3.3.3:50000@1 -l :50000 -lb-method hash -lb-hashtarget -lb-retrytime 300 -lb-timeout 300`
## DNS HOSTS文件
-dns-hosts参数可以设置DNS解析的时候使用的hosts文件,内容和系统的hosts文件内容格式相同.
`shadowtunnel -f 2.2.2.2:50000 -dns :5353 -dns-hosts /etc/hosts`