Code Monkey home page Code Monkey logo

dnsproxy's People

Contributors

arwmq9b6 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dnsproxy's Issues

如何能彻底关闭代理端口?

在配置中注释掉如下段落:
[proxy]
#listen = ":1480" # 将要开启的本地代理服务器的绑定地址

但dnsproxy还是会随机开一个高端口做代理,而且绑定在 0.0.0.0 的公开网络接口上。如果在公开网络环境,这个端口被扫走了,并被用来作代理,就不好了。如何能让dnsproxy完全不开这个端口?

树莓派编译报错

树莓派3B+,编译时报下面的错,老哥怎么解决呢?

root@raspberrypi:/usr/src/aaa/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy# export GOPATH=/usr/src/aaa
root@raspberrypi:/usr/src/aaa/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy# make
env GOOS=linux GOARCH=arm go build -o target/dnsproxy

github.com/ARwMq9b6/dnsproxy

../../proxyserve.go:283: r.req.URL.Hostname undefined (type *url.URL has no field or method Hostname)
../../proxyserve.go:287: r.req.URL.Hostname undefined (type *url.URL has no field or method Hostname)
Makefile:19: recipe for target 'target/dnsproxy' failed
make: *** [target/dnsproxy] Error 2
root@raspberrypi:/usr/src/aaa/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy#

怎么提示“listen tcp :53: bind: address already in use”呢?

hello.
bogon:target brite$ ls
china_domain_list.txt config.toml gfw_domain_list.txt
china_ip_list.txt dnsproxy
bogon:target brite$ ./dnsproxy
E0811 09:55:40.950978 39150 main.go:26] listen tcp :53: bind: permission denied
bogon:target brite$ sudo ./dnsproxy
Password:
E0811 09:56:00.630759 39164 main.go:26] listen tcp :53: bind: address already in use
bogon:target brite$ lsof -i:53
bogon:target brite$ sudo ./dnsproxy
E0811 09:56:37.515407 39198 main.go:26] listen tcp :53: bind: address already in use
bogon:target brite$

我运行 lsof -i:53,没有输出内容,说明53端口未被占用,怎么提示“listen tcp :53: bind: address already in use”呢?

关于内存泄露问题

感谢作者的奉献,我在使用过程中发现一些内存的问题,实测如下

线程过多

github.com/miekg/dns/server.go

for srv.isStarted() {
		m, s, err := reader.ReadUDP(l, rtimeout)
		if err != nil {
			if !srv.isStarted() {
				return nil
			}
			if netErr, ok := err.(net.Error); ok && netErr.Temporary() {
				continue
			}
			return err
		}
		if len(m) < headerSize {
			if cap(m) == srv.UDPSize {
				srv.udpPool.Put(m[:srv.UDPSize])
			}
			continue
		}
		wg.Add(1)
		go srv.serveUDPPacket(&wg, m, l, s)
	}

我在windows使用此代理,然后用200个线程去nslookup,发现线程数不断增加,貌似在"github.com/miekg/dns"库中,并没有对UDP线程数进行限制,所以需要自己写一个UDP线程数限制的server,而不能直接拿过来用。

内存泄露

libdns_utils.go

func (dt *DnsTransPort) legallySpawnExchange(req *dns.Msg) (*dns.Msg, error) {
	const spawnNum int8 = 3
	resp := make(chan *dns.Msg, spawnNum)
	lastErr := make(chan error)
	var failedTimes int32

	for range [spawnNum]struct{}{} {
		go func() {
			if r, err := dt.Exchange(req); err == nil {
				resp <- r
			} else {
				if atomic.LoadInt32(&failedTimes) == int32(spawnNum-1) {
					resp <- nil
					lastErr <- err
				} else {
					atomic.AddInt32(&failedTimes, 1)
				}
			}
		}()
	}

	if r := <-resp; r != nil {
		return r, nil
	} else {
		return nil, <-lastErr
	}
}

在libdns_utils.go文件的legallySpawnExchange文件中,起了3个线程发给同一个server,在线程比较多的情况下(我用的200个),其中1个线程返回,另外2个线程可能因为争抢资源而一直存在,导致goroutine一直增加,建议还是不要增加线程,直接在主线程中跑

一些建议

首先,感谢作者,,好用!
建议:
1,这里有一个golang systray的开源,可以参考,做成systray,隐藏运行 command 窗口 (windows下)https://github.com/getlantern/systray
2,可以开机自动运行(windows),并能够程序异常退出后重启
3,可以在systray 上点击设置,或退出
4,可以关闭自带代理服务器,避免出现代理端口被侦测等问题。以及使用自己pac 和代理的用户,可以关掉这个功能。
5,程序运行后,可以用 netsh interface ip set dns "你的网卡接口" static 127.0.0.1 来设置本地 dns 并测试是否有效,并弹出对话框,多数小白用户都根本不懂这个,会导致不能上网或dnsproxy 根本没起作用。程序退出后,netsh …… dhcp 或者恢复原接口状态
6,可以有设置所有dns 查询走 https google dns 的api ,或者所有查询走 socks 翻墙 tcp 8.8.8.8 等等
7,有日志可以查看过去dns查询,以及 socks 服务器的连接通断的心跳包

建议合并请求

比如已经有查询www.bbc.com的请求发给梯子,dnsserver再接到www.bbc.com的查询就别再给梯子发请求了。否则我这儿梯子不太扛得住。

莫名崩溃

Windows 10 1703,用的是64位,dns.google.com走的是goproxy,崩溃报错如下:

Exception 0xc0000005 0x0 0xffffffffffffffff 0x7ff800c6c61f
PC=0x7ff800c6c61f

syscall.Syscall6(0x7ff800c4ca40, 0x4, 0x4, 0xf013b0, 0xc04253d3d0, 0xc04253d3e0, 0x0, 0x0, 0xf227bdd7b50fb70f, 0x1295e3c05cbfdf84, ...)
        /usr/local/go/src/runtime/syscall_windows.go:174 +0x6b
syscall.CertVerifyCertificateChainPolicy(0x4, 0xf013b0, 0xc04253d3d0, 0xc04253d3e0, 0x0, 0xc0429253d8)
        /usr/local/go/src/syscall/zsyscall_windows.go:1208 +0xc1
crypto/x509.checkChainSSLServerPolicy(0xc0424a2480, 0xf013b0, 0xc04253d808, 0xf2eec0, 0xc042925548)
        /usr/local/go/src/crypto/x509/root_windows.go:117 +0xfd
crypto/x509.(*Certificate).systemVerify(0xc0424a2480, 0xc042925808, 0x0, 0x0, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/x509/root_windows.go:212 +0x484
crypto/x509.(*Certificate).Verify(0xc0424a2480, 0xc042202200, 0xe, 0xc0426737d0, 0x0, 0xed151868d, 0x2e4b336c, 0xa54640, 0x0, 0x0, ...)
        /usr/local/go/src/crypto/x509/verify.go:279 +0x86c
crypto/tls.(*clientHandshakeState).doFullHandshake(0xc04253de50, 0xc042809640, 0x31)
        /usr/local/go/src/crypto/tls/handshake_client.go:300 +0x4c0
crypto/tls.(*Conn).clientHandshake(0xc042474000, 0x83e958, 0xc042474120)
        /usr/local/go/src/crypto/tls/handshake_client.go:228 +0xf97
crypto/tls.(*Conn).Handshake(0xc042474000, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1307 +0x1aa
net/http.(*Transport).dialConn.func3(0x0, 0xc042474000, 0x0, 0xc042ad2d80)
        /usr/local/go/src/net/http/transport.go:1082 +0x49
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1087 +0xff3

goroutine 1 [chan receive, 29 minutes]:
main._main(0xc042038058, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy/main.go:115 +0x776
main.main()
        /go/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy/main.go:16 +0x30

goroutine 18 [chan receive, 1 minutes]:
github.com/ARwMq9b6/dnsproxy/vendor/github.com/golang/glog.(*loggingT).flushDaemon(0xa54860)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/golang/glog/glog.go:882 +0x81
created by github.com/ARwMq9b6/dnsproxy/vendor/github.com/golang/glog.init.1
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/golang/glog/glog.go:410 +0x224

goroutine 19 [sleep, 4 minutes]:
time.Sleep(0x45d964b800)
        /usr/local/go/src/runtime/time.go:59 +0x107
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/vendors/github.com/shadowsocks/shadowsocks-go/shadowsocks.newReqList.func1(0xc04203b430)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/vendors/github.com/shadowsocks/shadowsocks-go/shadowsocks/udprelay.go:80 +0x34
created by github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/vendors/github.com/shadowsocks/shadowsocks-go/shadowsocks.newReqList
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/vendors/github.com/shadowsocks/shadowsocks-go/shadowsocks/udprelay.go:83 +0xb7

goroutine 20 [chan receive, 29 minutes, locked to thread]:
github.com/ARwMq9b6/dnsproxy/vendor/gopkg.in/xtaci/kcp-go%2ev2.(*Emitter).emitTask(0xa52000)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/gopkg.in/xtaci/kcp-go.v2/emitter.go:30 +0x11e
created by github.com/ARwMq9b6/dnsproxy/vendor/gopkg.in/xtaci/kcp-go%2ev2.(*Emitter).init
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/gopkg.in/xtaci/kcp-go.v2/emitter.go:22 +0x73

goroutine 21 [select, 29 minutes]:
github.com/ARwMq9b6/dnsproxy/vendor/gopkg.in/xtaci/kcp-go%2ev2.(*updateHeap).updateTask(0xa54460)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/gopkg.in/xtaci/kcp-go.v2/updater.go:81 +0x4de
created by github.com/ARwMq9b6/dnsproxy/vendor/gopkg.in/xtaci/kcp-go%2ev2.init.4
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/gopkg.in/xtaci/kcp-go.v2/updater.go:13 +0xbc

goroutine 9 [select, 10 minutes]:
github.com/ARwMq9b6/dnsproxy/vendor/github.com/patrickmn/go-cache.(*janitor).Run(0xc042008b50, 0xc04200c180)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/patrickmn/go-cache/cache.go:1037 +0x178
created by github.com/ARwMq9b6/dnsproxy/vendor/github.com/patrickmn/go-cache.runJanitor
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/patrickmn/go-cache/cache.go:1056 +0x94

goroutine 10 [select, 10 minutes]:
github.com/ARwMq9b6/dnsproxy/vendor/github.com/patrickmn/go-cache.(*janitor).Run(0xc042008b60, 0xc04200c1c0)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/patrickmn/go-cache/cache.go:1037 +0x178
created by github.com/ARwMq9b6/dnsproxy/vendor/github.com/patrickmn/go-cache.runJanitor
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/patrickmn/go-cache/cache.go:1056 +0x94

goroutine 35 [IO wait, 29 minutes]:
net.runtime_pollWait(0x2d22580, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc0424541a0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc042454060, 0x828869, 0x8, 0xc04243c0a0, 0xc0424541c0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).acceptOne(0xc042454000, 0xc04246a000, 0x2, 0x2, 0xc042454060, 0x9e1020, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:591 +0x1ae
net.(*netFD).accept(0xc042454000, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:621 +0x10a
net.(*TCPListener).accept(0xc042466000, 0x0, 0x9e1020, 0xc042440120)
        /usr/local/go/src/net/tcpsock_posix.go:136 +0x35
net.(*TCPListener).Accept(0xc042466000, 0x3, 0x0, 0x0, 0x9e28e0)
        /usr/local/go/src/net/tcpsock.go:228 +0x50
github.com/ARwMq9b6/dnsproxy.serveProxy(0x0, 0x0, 0xc04243a1e0, 0xc04243a240, 0x0, 0xc04243a240)
        /go/src/github.com/ARwMq9b6/dnsproxy/proxyserve.go:38 +0x210
github.com/ARwMq9b6/dnsproxy.ServeProxy(0x0, 0x0, 0xc04243a1e0, 0xc04243a240, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/proxyserve.go:22 +0x6d
main._main.func2(0xc042084300, 0xc04243a120)
        /go/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy/main.go:102 +0x120
created by main._main
        /go/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy/main.go:107 +0x702

goroutine 36 [chan receive, 29 minutes]:
github.com/ARwMq9b6/dnsproxy.serveDNS(0xc0421ac0d0, 0xc, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:30 +0x2c0
github.com/ARwMq9b6/dnsproxy.ServeDNS(0xc0421ac0d0, 0xc, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:16 +0x59
main._main.func3(0xc042084300, 0xc04243a120)
        /go/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy/main.go:109 +0x43
created by main._main
        /go/src/github.com/ARwMq9b6/dnsproxy/cmd/dnsproxy/main.go:114 +0x734

goroutine 37 [IO wait]:
net.runtime_pollWait(0x2d22640, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc0424601a0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc042460060, 0x829a47, 0xb, 0x83e280, 0x1, 0xc042443b50, 0x42897f)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).readFrom(0xc042460000, 0xc0421b6200, 0x200, 0x200, 0x0, 0x0, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:481 +0x161
net.(*UDPConn).readFrom(0xc042462000, 0xc0421b6200, 0x200, 0x200, 0x200, 0xc0421b6200, 0x1008468, 0x77359401)
        /usr/local/go/src/net/udpsock_posix.go:47 +0x71
net.(*UDPConn).ReadFrom(0xc042462000, 0xc0421b6200, 0x200, 0x200, 0x4f258f, 0xc042443d18, 0x43ebb2, 0x200, 0x79a100)
        /usr/local/go/src/net/udpsock.go:109 +0x7c
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.ReadFromSessionUDP(0xc042462000, 0xc0421b6200, 0x200, 0x200, 0x200, 0x200, 0xc042464000, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/udp_windows.go:16 +0x63
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).readUDP(0xc04244c000, 0xc042462000, 0x77359400, 0x6fb95c, 0x451eb0, 0xc042443de8, 0xc042443df0, 0xc042443de0, 0x6fb95c)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:649 +0xf9
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*defaultReader).ReadUDP(0xc042462008, 0xc042462000, 0x77359400, 0x9e1060, 0xc0426e4120, 0x9ddce0, 0xc042112040, 0xc042b1e000, 0x25)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:254 +0x4d
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).serveUDP(0xc04244c000, 0xc042462000, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:522 +0x142
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).ListenAndServe(0xc04244c000, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:371 +0x406
github.com/ARwMq9b6/dnsproxy.serveDNS.func1(0xc04243a180, 0xc04244c000)
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:27 +0x32
created by github.com/ARwMq9b6/dnsproxy.serveDNS
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:28 +0x264

goroutine 38 [IO wait, 29 minutes]:
net.runtime_pollWait(0x2d22700, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc04244e1a0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc04244e060, 0x828869, 0x8, 0xc042002380, 0xc04244e1c0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).acceptOne(0xc04244e000, 0xc042456000, 0x2, 0x2, 0xc04244e060, 0x41d739, 0xc042015228, 0x1d0001)
        /usr/local/go/src/net/fd_windows.go:591 +0x1ae
net.(*netFD).accept(0xc04244e000, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:621 +0x10a
net.(*TCPListener).accept(0xc042004038, 0xc042445dc0, 0x4104bd, 0xc042004040)
        /usr/local/go/src/net/tcpsock_posix.go:136 +0x35
net.(*TCPListener).Accept(0xc042004038, 0xc04244c0d0, 0xc042004038, 0xc04244e000, 0x0)
        /usr/local/go/src/net/tcpsock.go:228 +0x50
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).serveTCP(0xc04244c0d0, 0x9e28e0, 0xc042004038, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:479 +0x145
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).ListenAndServe(0xc04244c0d0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:335 +0x22e
github.com/ARwMq9b6/dnsproxy.serveDNS.func1(0xc04243a180, 0xc04244c0d0)
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:27 +0x32
created by github.com/ARwMq9b6/dnsproxy.serveDNS
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:28 +0x264

goroutine 13 [select, 29 minutes]:
net/http.(*persistConn).roundTrip(0xc0423a4120, 0xc04245a160, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc042080000, 0xc0423c4000, 0xc042086180, 0x5f, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc042080000, 0x1, 0xc042050240, 0x11, 0xc042075d60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0420d6120, 0x9de360, 0xc042080000, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0420d6120, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0420d6120, 0xc04243a360, 0xc04203a1f0, 0xc04243a3c0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 163 [select, 29 minutes]:
net/http.(*persistConn).writeLoop(0xc0423a4120)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 162 [IO wait, 29 minutes]:
net.runtime_pollWait(0x2d22040, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc0421f01a0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc0421f0060, 0x8285d3, 0x7, 0x83e248, 0xc0425cf6d8, 0xc0425cf770, 0x42a2f2)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc0421f0000, 0xc042226c00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc042062020, 0xc042226c00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc0422080b0, 0xc042226c00, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc042206510, 0x9ddb20, 0xc0422080b0, 0x5, 0xc0422080b0, 0xc042298000)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc042476000, 0x83e917, 0xc042476120, 0xa831c66d983e5152)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc042476000, 0xc0421d4000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc0423a4120, 0xc0421d4000, 0x1000, 0x1000, 0x0, 0x0, 0xc0425cfb80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc042551500)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc042551500, 0x1, 0xc042551680, 0xc0425cfc80, 0x23, 0x40, 0x80)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc0423a4120)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 144 [select, 29 minutes]:
net/http.(*persistConn).writeLoop(0xc0421e0900)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 90 [select, 29 minutes]:
net/http.(*persistConn).roundTrip(0xc0421e0900, 0xc0421de640, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc0425242d0, 0xc0421c0400, 0xc042528380, 0x62, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc0425242d0, 0x1, 0xc042506040, 0x1c, 0xc04246fd60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc04251a090, 0x9de360, 0xc0425242d0, 0xc04243e580, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc04251a090, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc04251a090, 0xc04243b320, 0xc042396fd8, 0xc04243b380)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15469 [select]:
net/http.(*persistConn).writeLoop(0xc043446120)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 143 [IO wait, 29 minutes]:
net.runtime_pollWait(0x3234e40, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc042454c20, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc042454ae0, 0x8285d3, 0x7, 0x83e248, 0xa4506ceb90befffa, 0xc67178f2bef9a3f7, 0xc04267d888)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc042454a80, 0xc0425d9800, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc042004058, 0xc0425d9800, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc0424ca2c0, 0xc0425d9800, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc0421ff410, 0x9ddb20, 0xc0424ca2c0, 0x5, 0xc0424ca2c0, 0x4ed8aa4a391c0cb3)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc04248f880, 0x83e917, 0xc04248f9a0, 0x10)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc04248f880, 0xc04268c000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc0421e0900, 0xc04268c000, 0x1000, 0x1000, 0x0, 0x0, 0xc04267db80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc042674e40)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc042674e40, 0x1, 0xc042674fc0, 0xc04267dc80, 0x7bfb20, 0xc042658420, 0xc042658420)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc0421e0900)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 15468 [IO wait]:
net.runtime_pollWait(0x3234d80, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc0426a61a0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc0426a6060, 0x8285d3, 0x7, 0x83e248, 0xc04322f700, 0x10, 0x45b517)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc0426a6000, 0xc0427aac00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc042a56008, 0xc0427aac00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc042208160, 0xc0427aac00, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc042e6e270, 0x9ddb20, 0xc042208160, 0x5, 0xc042208160, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc042474700, 0x83e917, 0xc042474820, 0x1e)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc042474700, 0xc0426be000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc043446120, 0xc0426be000, 0x1000, 0x1000, 0x0, 0x0, 0xc04322fb80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc042216480)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc042216480, 0x1, 0xc0421ea120, 0xc04322fc80, 0x0, 0x0, 0x0)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc043446120)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 15294 [IO wait]:
net.runtime_pollWait(0x1019590, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc0421f1860, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc0421f1720, 0x8285d3, 0x7, 0x83e248, 0xc043869700, 0x10, 0x45b517)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc0421f16c0, 0xc0427aa400, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc042cda0b0, 0xc0427aa400, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc0425a7600, 0xc0427aa400, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc042e6e150, 0x9ddb20, 0xc0425a7600, 0x5, 0xc0425a7600, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc042474380, 0x83e917, 0xc0424744a0, 0x1e)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc042474380, 0xc0426bf000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc042d467e0, 0xc0426bf000, 0x1000, 0x1000, 0x0, 0x0, 0xc043869b80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc042216060)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc042216060, 0x1, 0xc0422164e0, 0xc043869c80, 0x0, 0x0, 0x0)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc042d467e0)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 15356 [select]:
net/http.(*persistConn).roundTrip(0xc042de8360, 0xc042b1c2c0, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc0425240f0, 0xc042000700, 0xc042904660, 0x5a, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc0425240f0, 0x1, 0xc042b1c040, 0x14, 0xc04332dd60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0424fe000, 0x9de360, 0xc0425240f0, 0xc042cc0540, 0xc042cc0480, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0424fe000, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0424fe000, 0xc042904060, 0xc04240c020, 0xc0429040c0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15354 [chan receive]:
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange(0xc042440000, 0xc0424fe000, 0x10, 0x10, 0x6d006fd100)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:245 +0x12c
github.com/ARwMq9b6/dnsproxy.handleDnsRequest.func1(0xc0424fe000, 0x0, 0xc0421bda00, 0x83e968)
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:73 +0xa77
github.com/ARwMq9b6/dnsproxy.handleDnsRequest(0x9e6ae0, 0xc042064200, 0xc0424fe000)
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:176 +0x3c
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.HandlerFunc.ServeDNS(0x83d760, 0x9e6ae0, 0xc042064200, 0xc0424fe000)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:84 +0x4b
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*ServeMux).ServeDNS(0xc042112040, 0x9e6ae0, 0xc042064200, 0xc0424fe000)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:210 +0x6c
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).serve(0xc04244c000, 0x9e1060, 0xc0427fc000, 0x9ddce0, 0xc042112040, 0xc042b1f200, 0x25, 0x200, 0xc042462000, 0xc04250a000, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:579 +0x302
created by github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).serveUDP
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:533 +0x2dc

goroutine 15466 [IO wait]:
net.runtime_pollWait(0x33252c8, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc042ce01a0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc042ce0060, 0x8285d3, 0x7, 0x83e248, 0xc0432276d8, 0xc043227770, 0x42a29d)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc042ce0000, 0xc042df7400, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc0424660c8, 0xc042df7400, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc0424cbb80, 0xc042df7400, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc0426724e0, 0x9ddb20, 0xc0424cbb80, 0x5, 0xc0424cbb80, 0x28)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc042b5f180, 0x83e917, 0xc042b5f2a0, 0xa831c66d983e5152)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc042b5f180, 0xc042ce3000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc042de9c20, 0xc042ce3000, 0x1000, 0x1000, 0x0, 0x0, 0xc043227b80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc042039200)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc042039200, 0x1, 0xc042039380, 0xc043227c80, 0x23, 0x40, 0x80)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc042de9c20)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 15483 [IO wait]:
net.runtime_pollWait(0x3324908, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc0421f16a0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc0421f1560, 0x8285d3, 0x7, 0x83e248, 0xc0433276d8, 0xc043327770, 0x42a29d)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc0421f1500, 0xc042df7c00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc042a56000, 0xc042df7c00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc042208000, 0xc042df7c00, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc0426725d0, 0x9ddb20, 0xc042208000, 0x5, 0xc042208000, 0x28)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc042b5f500, 0x83e917, 0xc042b5f620, 0xa831c66d983e5152)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc042b5f500, 0xc042ce2000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc042d465a0, 0xc042ce2000, 0x1000, 0x1000, 0x0, 0x0, 0xc043327b80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc0427d20c0)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc0427d20c0, 0x1, 0xc0427d2240, 0xc043327c80, 0x23, 0x40, 0x80)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc042d465a0)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 15539 [IO wait]:
net.runtime_pollWait(0x1018150, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc0421f0360, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc0421f0220, 0x8285d3, 0x7, 0x83e248, 0xc04332d700, 0x10, 0x45b517)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc0421f01c0, 0xc042490400, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc04250a010, 0xc042490400, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc0421ca000, 0xc042490400, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc04343e690, 0x9ddb20, 0xc0421ca000, 0x5, 0xc0421ca000, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc042b5e000, 0x83e917, 0xc042b5e120, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc042b5e000, 0xc0423c2000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc04244a240, 0xc0423c2000, 0x1000, 0x1000, 0x0, 0x0, 0xc04332db80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc042216fc0)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc042216fc0, 0x1, 0xc0422171a0, 0xc04332dc80, 0x0, 0x0, 0x0)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc04244a240)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 15542 [select]:
net/http.(*persistConn).writeLoop(0xc042de8360)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 15484 [select]:
net/http.(*persistConn).writeLoop(0xc042d465a0)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 15544 [select]:
net/http.(*persistConn).writeLoop(0xc042de85a0)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 15487 [select]:
net/http.(*persistConn).roundTrip(0xc04206c6c0, 0xc042e543a0, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc0420801e0, 0xc04229a600, 0xc042b4e600, 0x5a, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc0420801e0, 0x1, 0xc0426bc140, 0x14, 0xc042bc1d60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0423b4090, 0x9de360, 0xc0420801e0, 0x451fd0, 0xc042bc1f48, 0x2)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0423b4090, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0423b4090, 0xc0427d22a0, 0xc0424100a8, 0xc0427d2300)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15543 [IO wait]:
net.runtime_pollWait(0x3324848, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc04244e8a0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc04244e760, 0x8285d3, 0x7, 0x83e248, 0xc042c536d8, 0xc042c53770, 0x42a29d)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc04244e700, 0xc042491400, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc04250a018, 0xc042491400, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc0421ca0b0, 0xc042491400, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc04343e780, 0x9ddb20, 0xc0421ca0b0, 0x5, 0xc0421ca0b0, 0x28)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc042b5e380, 0x83e917, 0xc042b5e4a0, 0xa831c66d983e5152)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc042b5e380, 0xc0430ae000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc042de85a0, 0xc0430ae000, 0x1000, 0x1000, 0x0, 0x0, 0xc042c53b80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc042ce4420)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc042ce4420, 0x1, 0xc042905200, 0xc042c53c80, 0x23, 0x40, 0x80)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc042de85a0)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 15357 [select]:
net/http.(*persistConn).roundTrip(0xc042de8120, 0xc042b1c160, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc042524000, 0xc042000600, 0xc0429041e0, 0x5a, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc042524000, 0x1, 0xc042b1c040, 0x14, 0xc042a6dd60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0424fe000, 0x9de360, 0xc042524000, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0424fe000, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0424fe000, 0xc042904060, 0xc04240c020, 0xc0429040c0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15490 [select]:
net/http.(*persistConn).roundTrip(0xc042d467e0, 0xc042b1dfa0, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc042080690, 0xc04238f000, 0xc0426f7e60, 0x56, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc042080690, 0x1, 0xc042dfa570, 0x10, 0xc042557d60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0423b5a70, 0x9de360, 0xc042080690, 0xc042438500, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0423b5a70, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0423b5a70, 0xc0426f7da0, 0xc042dfa568, 0xc0426f7e00)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15355 [select]:
net/http.(*persistConn).roundTrip(0xc04206c240, 0xc042e540c0, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc0420800f0, 0xc04229a100, 0xc042b4e060, 0x5a, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc0420800f0, 0x1, 0xc042b1c040, 0x14, 0xc0426cdd60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0424fe000, 0x9de360, 0xc0420800f0, 0xc042ce4180, 0xc042ce40c0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0424fe000, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0424fe000, 0xc042904060, 0xc04240c020, 0xc0429040c0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15508 [select]:
net/http.(*persistConn).writeLoop(0xc04206c6c0)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 15485 [chan receive]:
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange(0xc042440000, 0xc0423b4090, 0x10, 0x10, 0x6d00000000)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:245 +0x12c
github.com/ARwMq9b6/dnsproxy.handleDnsRequest.func1(0xc0423b4090, 0x0, 0xc042a24340, 0x83e968)
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:73 +0xa77
github.com/ARwMq9b6/dnsproxy.handleDnsRequest(0x9e6ae0, 0xc04243e280, 0xc0423b4090)
        /go/src/github.com/ARwMq9b6/dnsproxy/dnsserve.go:176 +0x3c
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.HandlerFunc.ServeDNS(0x83d760, 0x9e6ae0, 0xc04243e280, 0xc0423b4090)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:84 +0x4b
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*ServeMux).ServeDNS(0xc042112040, 0x9e6ae0, 0xc04243e280, 0xc0423b4090)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:210 +0x6c
github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).serve(0xc04244c000, 0x9e1060, 0xc0426e4120, 0x9ddce0, 0xc042112040, 0xc042b1e000, 0x25, 0x200, 0xc042462000, 0xc042462010, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:579 +0x302
created by github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns.(*Server).serveUDP
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/miekg/dns/server.go:533 +0x2dc

goroutine 15486 [select]:
net/http.(*persistConn).roundTrip(0xc042de85a0, 0xc042b1c420, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc0425241e0, 0xc042000800, 0xc042904ae0, 0x5a, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc0425241e0, 0x1, 0xc0426bc140, 0x14, 0xc0425bfd60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0423b4090, 0x9de360, 0xc0425241e0, 0x451fd0, 0xc0425bff48, 0x2)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0423b4090, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0423b4090, 0xc0427d22a0, 0xc0424100a8, 0xc0427d2300)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15488 [select]:
net/http.(*persistConn).roundTrip(0xc04244a240, 0xc0426bc2a0, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc042b780f0, 0xc04238e000, 0xc0427d2360, 0x5a, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc042b780f0, 0x1, 0xc0426bc140, 0x14, 0xc04337dd60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0423b4090, 0x9de360, 0xc042b780f0, 0xc04278e580, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0423b4090, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0423b4090, 0xc0427d22a0, 0xc0424100a8, 0xc0427d2300)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15507 [IO wait]:
net.runtime_pollWait(0x10191d0, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc0424546e0, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0x0, 0x0, 0xc042a0b6e8, 0xc042c4ca50, 0x0, 0xc042454640, 0xc042454670, 0xc042454688)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0x0, 0x0, 0x0, 0xc042a0b7d8, 0x4e2f32, 0x3, 0xc042014050)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c

goroutine 15295 [select]:
net/http.(*persistConn).writeLoop(0xc042d467e0)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 15440 [select]:
net/http.(*Transport).getConn(0xc0421aac30, 0xc0422021e0, 0x0, 0xc042038540, 0x5, 0xc042202200, 0x12, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:913 +0xb99
net/http.(*Transport).RoundTrip(0xc0421aac30, 0xc042c18f00, 0xc042038540, 0x56, 0x0)
        /usr/local/go/src/net/http/transport.go:378 +0x593
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc0421aac30, 0x1, 0xc042dfa570, 0x10, 0xc0426c9d60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0423b5a70, 0x9de360, 0xc0421aac30, 0xc042b56600, 0xc042b56540, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0423b5a70, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0423b5a70, 0xc0426f7da0, 0xc042dfa568, 0xc0426f7e00)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15538 [select]:
net/http.(*persistConn).writeLoop(0xc04206c240)
        /usr/local/go/src/net/http/transport.go:1704 +0x441
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1118 +0xa61

goroutine 15462 [chan receive]:
net/http.(*Transport).dialConn(0xc0421aac30, 0x9e2e20, 0xc04203a2b0, 0x0, 0xc042038540, 0x5, 0xc042202200, 0x12, 0x0, 0xc042038480, ...)
        /usr/local/go/src/net/http/transport.go:1088 +0x1035
net/http.(*Transport).getConn.func4(0xc0421aac30, 0x9e2e20, 0xc04203a2b0, 0xc042672330, 0xc0420385a0)
        /usr/local/go/src/net/http/transport.go:908 +0x7f
created by net/http.(*Transport).getConn
        /usr/local/go/src/net/http/transport.go:910 +0x3aa

goroutine 15474 [select]:
net/http.(*persistConn).roundTrip(0xc042d465a0, 0xc042b1dde0, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/http/transport.go:1898 +0x97b
net/http.(*Transport).RoundTrip(0xc0420805a0, 0xc04238ef00, 0xc0426f7920, 0x56, 0x0)
        /usr/local/go/src/net/http/transport.go:391 +0x753
github.com/ARwMq9b6/dnsproxy/dns_over_https/google.Query(0x9de360, 0xc0420805a0, 0x1, 0xc0423f12c0, 0x10, 0xc0426c7d60, 0x1, 0x1, 0x0, 0x0, ...)
        /go/src/github.com/ARwMq9b6/dnsproxy/dns_over_https/google/lib.go:67 +0x645
github.com/ARwMq9b6/dnsproxy.MsgExchangeOverGoogleDOH(0xc0420d6cf0, 0x9de360, 0xc0420805a0, 0xc042518380, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:48 +0x196
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).Exchange(0xc042440000, 0xc0420d6cf0, 0x0, 0x0, 0x0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:264 +0x130
github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange.func1(0xc042440000, 0xc0420d6cf0, 0xc042ad2780, 0xc0423f120c, 0xc042ad27e0)
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:232 +0x40
created by github.com/ARwMq9b6/dnsproxy.(*dnsTransport).legallySpawnExchange
        /go/src/github.com/ARwMq9b6/dnsproxy/libdns_utils.go:242 +0xe6

goroutine 15537 [IO wait]:
net.runtime_pollWait(0x1019290, 0x72, 0x9dc2e8)
        /usr/local/go/src/runtime/netpoll.go:164 +0x60
net.(*pollDesc).wait(0xc042454520, 0x72, 0x9dc2e8, 0x0)
        /usr/local/go/src/net/fd_poll_runtime.go:75 +0x3f
net.(*ioSrv).ExecIO(0xc042004028, 0xc0424543e0, 0x8285d3, 0x7, 0x83e248, 0xc0426eb6d8, 0xc0426eb770, 0x42a29d)
        /usr/local/go/src/net/fd_windows.go:196 +0xfe
net.(*netFD).Read(0xc042454380, 0xc0425d8c00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/fd_windows.go:452 +0x13d
net.(*conn).Read(0xc042cda008, 0xc0425d8c00, 0x400, 0x400, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:181 +0x77
github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost.(*ProxyConn).Read(0xc0424ca0b0, 0xc0425d8c00, 0x400, 0x400, 0x7fa700, 0x0, 0x9ddb20)
        /go/src/github.com/ARwMq9b6/dnsproxy/vendor/github.com/ARwMq9b6/libgost/conn.go:228 +0x58
crypto/tls.(*block).readFromUntil(0xc0427fc9f0, 0x9ddb20, 0xc0424ca0b0, 0x5, 0xc0424ca0b0, 0x28)
        /usr/local/go/src/crypto/tls/conn.go:488 +0x9f
crypto/tls.(*Conn).readRecord(0xc04206e700, 0x83e917, 0xc04206e820, 0xa831c66d983e5152)
        /usr/local/go/src/crypto/tls/conn.go:590 +0xcb
crypto/tls.(*Conn).Read(0xc04206e700, 0xc0421ee000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1134 +0x124
net/http.(*persistConn).Read(0xc04206c240, 0xc0421ee000, 0x1000, 0x1000, 0x0, 0x0, 0xc0426ebb80)
        /usr/local/go/src/net/http/transport.go:1316 +0x152
bufio.(*Reader).fill(0xc042216d80)
        /usr/local/go/src/bufio/bufio.go:97 +0x11e
bufio.(*Reader).Peek(0xc042216d80, 0x1, 0xc042216f00, 0xc0426ebc80, 0x23, 0x40, 0x80)
        /usr/local/go/src/bufio/bufio.go:129 +0x6e
net/http.(*persistConn).readLoop(0xc04206c240)
        /usr/local/go/src/net/http/transport.go:1474 +0x19d
created by net/http.(*Transport).dialConn
        /usr/local/go/src/net/http/transport.go:1117 +0xa3c
rax     0x31459439a0c71313
rbx     0x0
rcx     0x0
rdi     0x40
rsi     0xc042925408
rbp     0x285fd59
rsp     0x285fcf0
r8      0x285fd40
r9      0x285fd50
r10     0xf013b0
r11     0x285fcc0
r12     0x0
r13     0x0
r14     0x0
r15     0x0
rip     0x7ff800c6c61f
rflags  0x10256
cs      0x33
fs      0x53
gs      0x2b

建议增加ip到ipset列表的功能

dnsproxy的设计确实很巧妙,的确能兼顾查询质量与速度。
我现在的使用方式是dnsproxy+gost+shadowsocks,gost被定向到shadowsocks,然后浏览器设置socks5代理到1480端口,这个不方便的地方是浏览器要设置代理。
能否添加以下的功能:
dnsproxy查询到ip后,如果不是国内IP,就放到ipset的gfwlist列表里,iptables会将gfwlist重写向到shadowsocks,这样路由器下的所有设备都可以自动翻墙,也能兼顾查询质量和速度,并且浏览器也不需要设置代理了。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.