diff --git a/README.md b/README.md index 00a739b..5b16872 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,6 @@ Listen (local proxy server): - TCP tunnel - UDP tunnel - UDP over TCP tunnel -- DNS Tunnel(udp2tcp) Forward (local proxy client/upstream proxy server): - Socks5 proxy(tcp&udp) @@ -131,10 +130,9 @@ Available Schemes: tcptun: tcp tunnel udptun: udp tunnel uottun: udp over tcp tunnel - dnstun: listen on udp port and forward all dns requests to remote dns server via forwarders(tcp) Available schemes for different modes: - listen: mixed ss socks5 http redir tcptun udptun uottun dnstun + listen: mixed ss socks5 http redir tcptun udptun uottun forward: ss socks5 http ssr vmess tls ws SS scheme: @@ -230,7 +228,7 @@ Examples: glider -listen socks5://:1080 -listen http://:8080 -forward ss://method:pass@1.1.1.1:8443 -listen on :1080 as socks5 server, :8080 as http proxy server, forward all requests via remote ss server. - glider -listen redir://:1081 -listen dnstun://:53=8.8.8.8:53 -forward ss://method:pass@server1:port1,ss://method:pass@server2:port2 + glider -listen redir://:1081 -dns://:53 -dnsserver://8.8.8.8:53 -forward ss://method:pass@server1:port1,ss://method:pass@server2:port2 -listen on :1081 as transparent redirect server, :53 as dns server, use forward chain: server1 -> server2. glider -listen socks5://:1080 -forward ss://method:pass@server1:port1 -forward ss://method:pass@server2:port2 -strategy rr diff --git a/conf.go b/conf.go index da15edf..936cc76 100644 --- a/conf.go +++ b/conf.go @@ -170,11 +170,10 @@ func usage() { fmt.Fprintf(os.Stderr, " tcptun: tcp tunnel\n") fmt.Fprintf(os.Stderr, " udptun: udp tunnel\n") fmt.Fprintf(os.Stderr, " uottun: udp over tcp tunnel\n") - fmt.Fprintf(os.Stderr, " dnstun: listen on udp port and forward all dns requests to remote dns server via forwarders(tcp)\n") fmt.Fprintf(os.Stderr, "\n") fmt.Fprintf(os.Stderr, "Available schemes for different modes:\n") - fmt.Fprintf(os.Stderr, " listen: mixed ss socks5 http redir tcptun udptun uottun dnstun\n") + fmt.Fprintf(os.Stderr, " listen: mixed ss socks5 http redir tcptun udptun uottun\n") fmt.Fprintf(os.Stderr, " forward: ss socks5 http ssr vmess tls ws\n") fmt.Fprintf(os.Stderr, "\n") @@ -284,7 +283,7 @@ func usage() { fmt.Fprintf(os.Stderr, " "+app+" -listen socks5://:1080 -listen http://:8080 -forward ss://method:pass@1.1.1.1:8443\n") fmt.Fprintf(os.Stderr, " -listen on :1080 as socks5 server, :8080 as http proxy server, forward all requests via remote ss server.\n") fmt.Fprintf(os.Stderr, "\n") - fmt.Fprintf(os.Stderr, " "+app+" -listen redir://:1081 -listen dnstun://:53=8.8.8.8:53 -forward ss://method:pass@server1:port1,ss://method:pass@server2:port2\n") + fmt.Fprintf(os.Stderr, " "+app+" -listen redir://:1081 -dns://:53 -dnsserver://8.8.8.8:53 -forward ss://method:pass@server1:port1,ss://method:pass@server2:port2\n") fmt.Fprintf(os.Stderr, " -listen on :1081 as transparent redirect server, :53 as dns server, use forward chain: server1 -> server2.\n") fmt.Fprintf(os.Stderr, "\n") fmt.Fprintf(os.Stderr, " "+app+" -listen socks5://:1080 -forward ss://method:pass@server1:port1 -forward ss://method:pass@server2:port2 -strategy rr\n") diff --git a/config/README.md b/config/README.md index 89da5d8..0d67287 100644 --- a/config/README.md +++ b/config/README.md @@ -14,9 +14,6 @@ verbose # listen on 8443, serve as http/socks5 proxy on the same port. listen=:8443 -# listen on udp port 5353, forward dns requests via tcp protocol -listen=dnstun://:5353=8.8.8.8:53 - # upstream forward proxy forward=socks5://192.168.1.10:1080 diff --git a/config/examples/8.transparent_proxy_with_dnsmasq/README.md b/config/examples/8.transparent_proxy_with_dnsmasq/README.md index 3cffa0c..9f4aeef 100644 --- a/config/examples/8.transparent_proxy_with_dnsmasq/README.md +++ b/config/examples/8.transparent_proxy_with_dnsmasq/README.md @@ -1,14 +1,15 @@ ## 8. Transparent Proxy with dnsmasq -#### Setup a redirect proxy and a dnstunnel with glider +#### Setup a redirect proxy and a dns server with glider glider.conf ```bash verbose=True listen=redir://:1081 -listen=dnstun://:5353=8.8.8.8:53 forward=http://forwarder1:8080,socks5://forwarder2:1080 forward=http://1.1.1.1:8080 +dns=:5353 +dnsserver=8.8.8.8:53 strategy=rr checkwebsite=www.apple.com checkduration=30 diff --git a/config/examples/8.transparent_proxy_with_dnsmasq/glider.conf b/config/examples/8.transparent_proxy_with_dnsmasq/glider.conf index 161e66c..491c4f2 100644 --- a/config/examples/8.transparent_proxy_with_dnsmasq/glider.conf +++ b/config/examples/8.transparent_proxy_with_dnsmasq/glider.conf @@ -3,11 +3,14 @@ verbose=True listen=redir://:1081 -listen=dnstun://:5353=8.8.8.8:53 forward=http://forwarder1:8080,socks5://forwarder2:1080 forward=http://1.1.1.1:8080 +dns=:5353 +dnsserver=8.8.8.8:53 + + strategy=rr checkwebsite=www.apple.com checkduration=30 diff --git a/config/glider.conf.example b/config/glider.conf.example index 46a52d6..eb66d62 100644 --- a/config/glider.conf.example +++ b/config/glider.conf.example @@ -55,12 +55,6 @@ listen=socks5://:1080 # listen on 1084 as a udp over tcp tunnel, all requests to :1084 will be forward to 1.1.1.1:53 # listen=uottun://:1084=1.1.1.1:53 -# a dnstun is a special dns forwarder server with a fixed remote dns -# listen on udp port 5353, act as a local dns server, -# forward all requests to 8.8.8.8:53 via tcp protocol -# listen=dnstun://:5353=8.8.8.8:53 - - # FORWARDERS # ---------- # Forwarders, we can setup multiple forwarders. diff --git a/main.go b/main.go index 36bb28f..d84b352 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,6 @@ import ( "github.com/nadoo/glider/dns" "github.com/nadoo/glider/proxy" - // _ "github.com/nadoo/glider/proxy/dnstun" _ "github.com/nadoo/glider/proxy/http" _ "github.com/nadoo/glider/proxy/mixed" _ "github.com/nadoo/glider/proxy/socks5" @@ -26,7 +25,7 @@ import ( ) // VERSION . -const VERSION = "0.6.3" +const VERSION = "0.6.5" func dialerFromConf() proxy.Dialer { // global forwarders in xx.conf diff --git a/proxy/dnstun/dnstun.go b/proxy/dnstun/dnstun.go deleted file mode 100644 index d167c76..0000000 --- a/proxy/dnstun/dnstun.go +++ /dev/null @@ -1,64 +0,0 @@ -// https://tools.ietf.org/html/rfc1035 - -package dnstun - -import ( - "net/url" - "strings" - - "github.com/nadoo/glider/common/log" - "github.com/nadoo/glider/dns" - "github.com/nadoo/glider/proxy" - "github.com/nadoo/glider/proxy/tcptun" -) - -// DNSTun struct -type DNSTun struct { - dialer proxy.Dialer - addr string - - raddr string - - dns *dns.DNS - tcp *tcptun.TCPTun -} - -func init() { - proxy.RegisterServer("dnstun", NewDNSTunServer) -} - -// NewDNSTun returns a dns tunnel forwarder. -func NewDNSTun(s string, dialer proxy.Dialer) (*DNSTun, error) { - - u, err := url.Parse(s) - if err != nil { - log.F("parse err: %s", err) - return nil, err - } - - addr := u.Host - d := strings.Split(addr, "=") - addr, raddr := d[0], d[1] - - p := &DNSTun{ - dialer: dialer, - addr: addr, - raddr: raddr, - } - - p.dns, _ = dns.NewDNS(addr, raddr, dialer, true) - - return p, nil -} - -// NewDNSTunServer returns a dns tunnel server. -func NewDNSTunServer(s string, dialer proxy.Dialer) (proxy.Server, error) { - return NewDNSTun(s, dialer) -} - -// ListenAndServe . -func (s *DNSTun) ListenAndServe() { - if s.dns != nil { - go s.dns.ListenAndServe() - } -}