Skip to content

Commit 44c30df

Browse files
committed
doc: update description for tls
1 parent 5a43cf8 commit 44c30df

File tree

7 files changed

+76
-52
lines changed

7 files changed

+76
-52
lines changed

README.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ glider v0.6.9 usage:
121121
-config string
122122
config file path
123123
-dns string
124-
dns forwarder server listen address
124+
local dns server listen address
125125
-dnsalwaystcp
126126
always use tcp to query upstream dns servers no matter there is a forwarder or not
127127
-dnsmaxttl int
@@ -131,7 +131,7 @@ glider v0.6.9 usage:
131131
-dnsrecord value
132132
custom dns record, format: domain/ip
133133
-dnsserver value
134-
remote dns server
134+
remote dns server address
135135
-dnstimeout int
136136
timeout value used in multiple dnsservers switch(seconds) (default 3)
137137
-forward value
@@ -191,15 +191,24 @@ VMess scheme:
191191
Available securities for vmess:
192192
none, aes-128-gcm, chacha20-poly1305
193193

194-
TLS scheme:
194+
TLS client scheme:
195195
tls://host:port[?skipVerify=true]
196196

197-
TLS with a specified proxy protocol:
197+
Proxy over tls client:
198198
tls://host:port[?skipVerify=true],scheme://
199199
tls://host:port[?skipVerify=true],http://[user:pass@]
200200
tls://host:port[?skipVerify=true],socks5://[user:pass@]
201201
tls://host:port[?skipVerify=true],vmess://[security:]uuid@?alterID=num
202202

203+
TLS server scheme:
204+
tls://host:port?cert=PATH&key=PATH
205+
206+
Proxy over tls server:
207+
tls://host:port?cert=PATH&key=PATH,scheme://
208+
tls://host:port?cert=PATH&key=PATH,http://
209+
tls://host:port?cert=PATH&key=PATH,socks5://
210+
tls://host:port?cert=PATH&key=PATH,ss://method:pass@
211+
203212
Websocket scheme:
204213
ws://host:port[/path]
205214

conf.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ func confInit() {
4747
flag.StringSliceUniqVar(&conf.RuleFile, "rulefile", nil, "rule file path")
4848
flag.StringVar(&conf.RulesDir, "rules-dir", "", "rule file folder")
4949

50-
flag.StringVar(&conf.DNS, "dns", "", "dns forwarder server listen address")
51-
flag.StringSliceUniqVar(&conf.DNSConfig.Servers, "dnsserver", []string{"8.8.8.8:53"}, "remote dns server")
50+
flag.StringVar(&conf.DNS, "dns", "", "local dns server listen address")
51+
flag.StringSliceUniqVar(&conf.DNSConfig.Servers, "dnsserver", []string{"8.8.8.8:53"}, "remote dns server address")
5252
flag.BoolVar(&conf.DNSConfig.AlwaysTCP, "dnsalwaystcp", false, "always use tcp to query upstream dns servers no matter there is a forwarder or not")
5353
flag.IntVar(&conf.DNSConfig.Timeout, "dnstimeout", 3, "timeout value used in multiple dnsservers switch(seconds)")
5454
flag.IntVar(&conf.DNSConfig.MaxTTL, "dnsmaxttl", 1800, "maximum TTL value for entries in the CACHE(seconds)")
@@ -154,17 +154,28 @@ func usage() {
154154
fmt.Fprintf(os.Stderr, " none, aes-128-gcm, chacha20-poly1305\n")
155155
fmt.Fprintf(os.Stderr, "\n")
156156

157-
fmt.Fprintf(os.Stderr, "TLS scheme:\n")
157+
fmt.Fprintf(os.Stderr, "TLS client scheme:\n")
158158
fmt.Fprintf(os.Stderr, " tls://host:port[?skipVerify=true]\n")
159159
fmt.Fprintf(os.Stderr, "\n")
160160

161-
fmt.Fprintf(os.Stderr, "TLS with a specified proxy protocol:\n")
161+
fmt.Fprintf(os.Stderr, "Proxy over tls client:\n")
162162
fmt.Fprintf(os.Stderr, " tls://host:port[?skipVerify=true],scheme://\n")
163163
fmt.Fprintf(os.Stderr, " tls://host:port[?skipVerify=true],http://[user:pass@]\n")
164164
fmt.Fprintf(os.Stderr, " tls://host:port[?skipVerify=true],socks5://[user:pass@]\n")
165165
fmt.Fprintf(os.Stderr, " tls://host:port[?skipVerify=true],vmess://[security:]uuid@?alterID=num\n")
166166
fmt.Fprintf(os.Stderr, "\n")
167167

168+
fmt.Fprintf(os.Stderr, "TLS server scheme:\n")
169+
fmt.Fprintf(os.Stderr, " tls://host:port?cert=PATH&key=PATH\n")
170+
fmt.Fprintf(os.Stderr, "\n")
171+
172+
fmt.Fprintf(os.Stderr, "Proxy over tls server:\n")
173+
fmt.Fprintf(os.Stderr, " tls://host:port?cert=PATH&key=PATH,scheme://\n")
174+
fmt.Fprintf(os.Stderr, " tls://host:port?cert=PATH&key=PATH,http://\n")
175+
fmt.Fprintf(os.Stderr, " tls://host:port?cert=PATH&key=PATH,socks5://\n")
176+
fmt.Fprintf(os.Stderr, " tls://host:port?cert=PATH&key=PATH,ss://method:pass@\n")
177+
fmt.Fprintf(os.Stderr, "\n")
178+
168179
fmt.Fprintf(os.Stderr, "Websocket scheme:\n")
169180
fmt.Fprintf(os.Stderr, " ws://host:port[/path]\n")
170181
fmt.Fprintf(os.Stderr, "\n")

config/README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,6 @@ dns=:53
4040
# global remote dns server (you can specify different dns server in rule file)
4141
dnsserver=8.8.8.8:53
4242

43-
# Create and manage ipset on linux based on destinations in rule files
44-
# - add ip/cidrs in rule files on startup
45-
# - add resolved ips for domains in rule files by dns forwarder server
46-
# Usually used in transparent proxy mode on linux
47-
ipset=glider
48-
4943
# RULE FILES
5044
rules-dir=rules.d
5145
#rulefile=office.rule
@@ -69,6 +63,14 @@ checkduration=30
6963
# DNS SERVER for domains in this rule file
7064
dnsserver=208.67.222.222:53
7165

66+
# IPSET MANAGEMENT
67+
# ----------------
68+
# Create and mange ipset on linux based on destinations in rule files
69+
# - add ip/cidrs in rule files on startup
70+
# - add resolved ips for domains in rule files by dns forwarding server
71+
# Usually used in transparent proxy mode on linux
72+
ipset=glider
73+
7274
# YOU CAN SPECIFY DESTINATIONS TO USE THE ABOVE FORWARDERS
7375
# matches abc.com and *.abc.com
7476
domain=abc.com

config/examples/9.transparent_proxy_without_dnsmasq/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@ listen=redir://:1081
2727
dns=:53
2828
dnsserver=8.8.8.8:53
2929

30-
# as a ipset manager
31-
ipset=glider
32-
3330
# specify rule files
3431
rules-dir=rules.d
3532
```
@@ -46,6 +43,9 @@ checkduration=30
4643
# specify a different dns server(if need)
4744
dnsserver=208.67.222.222:53
4845

46+
# as a ipset manager
47+
ipset=glider
48+
4949
# specify destinations
5050
include=office.list
5151

config/glider.conf.example

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,13 @@ listen=socks5://:1080
5555
# listen on 1084 as a udp over tcp tunnel, all requests to :1084 will be forward to 1.1.1.1:53
5656
# listen=uottun://:1084=1.1.1.1:53
5757

58-
# listen on 443 with tls security layer and serve as http proxy server (HTTPS proxy)
58+
# http over tls (HTTPS proxy)
5959
# listen=tls://:443?cert=crtFilePath&key=keyFilePath,http://
6060

61-
# listen on unix domain socket and serve as socks5 server
61+
# ss over tls
62+
# listen=tls://:443?cert=crtFilePath&key=keyFilePath,ss://AEAD_CHACHA20_POLY1305:pass@
63+
64+
# socks5 over unix domain socket
6265
# listen=unix:///tmp/glider.socket,socks5://
6366

6467
# FORWARDERS
@@ -107,6 +110,9 @@ listen=socks5://:1080
107110
# forward=tls://1.1.1.1:443,ws://,vmess://5a146038-0b56-4e95-b1dc-5c6f5a32cd98@?alterID=2
108111
# forward=tls://1.1.1.1:443,ws://@/path,vmess://5a146038-0b56-4e95-b1dc-5c6f5a32cd98@?alterID=2
109112

113+
# ss over tls
114+
# forward=tls://1.1.1.1:443,ss://AEAD_CHACHA20_POLY1305:pass@
115+
110116
# socks5 over unix domain socket
111117
# forward=unix:///tmp/glider.socket,socks5://
112118

proxy/redir/redir_linux.go

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -80,43 +80,40 @@ func (s *RedirProxy) ListenAndServe() {
8080
continue
8181
}
8282

83-
go func() {
84-
defer c.Close()
85-
86-
if c, ok := c.(*net.TCPConn); ok {
87-
c.SetKeepAlive(true)
88-
}
89-
90-
tgt, err := getOrigDst(c, s.ipv6)
91-
if err != nil {
92-
log.F("[redir] failed to get target address: %v", err)
93-
return
94-
}
95-
96-
rc, err := s.dialer.Dial("tcp", tgt.String())
97-
if err != nil {
98-
log.F("[redir] failed to connect to target: %v", err)
99-
return
100-
}
101-
defer rc.Close()
102-
103-
log.F("[redir] %s <-> %s", c.RemoteAddr(), tgt)
104-
105-
_, _, err = conn.Relay(c, rc)
106-
if err != nil {
107-
if err, ok := err.(net.Error); ok && err.Timeout() {
108-
return // ignore i/o timeout
109-
}
110-
log.F("[redir] relay error: %v", err)
111-
}
112-
113-
}()
83+
go s.Serve(c)
11484
}
11585
}
11686

11787
// Serve .
11888
func (s *RedirProxy) Serve(c net.Conn) {
119-
log.F("[redir] func Serve: can not be called directly")
89+
defer c.Close()
90+
91+
if c, ok := c.(*net.TCPConn); ok {
92+
c.SetKeepAlive(true)
93+
}
94+
95+
tgt, err := getOrigDst(c, s.ipv6)
96+
if err != nil {
97+
log.F("[redir] failed to get target address: %v", err)
98+
return
99+
}
100+
101+
rc, err := s.dialer.Dial("tcp", tgt.String())
102+
if err != nil {
103+
log.F("[redir] failed to connect to target: %v", err)
104+
return
105+
}
106+
defer rc.Close()
107+
108+
log.F("[redir] %s <-> %s", c.RemoteAddr(), tgt)
109+
110+
_, _, err = conn.Relay(c, rc)
111+
if err != nil {
112+
if err, ok := err.(net.Error); ok && err.Timeout() {
113+
return // ignore i/o timeout
114+
}
115+
log.F("[redir] relay error: %v", err)
116+
}
120117
}
121118

122119
// Get the original destination of a TCP connection.

rule/rule.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ func (rd *Dialer) AddDomainIP(domain, ip string) error {
121121
log.F("[rule] add ip=%s, based on rule: domain=%s & domain/ip: %s/%s\n", ip, pDomain, domain, ip)
122122
}
123123
}
124-
125124
}
126125
return nil
127126
}

0 commit comments

Comments
 (0)