diff --git a/cfg.go b/cfg.go index 99c9197..021e81c 100644 --- a/cfg.go +++ b/cfg.go @@ -9,12 +9,12 @@ import ( const ( cfgListen = "127.0.0.1:8086" - cfgTtlMin uint32 = 60 - cfgTtlMax uint32 = 3600 + cfgTtlMin uint32 = 120 + cfgTtlMax uint32 = 1800 cfgResolverEndpoint = "127.1.0.1:53" cfgResolverProto = "tcp" - cfgResolverTimeout = 2000 * time.Millisecond + cfgResolverTimeout = 1900 * time.Millisecond cfgNftTable = "uni" cfgNftTableFamily = nft.TableFamilyINet diff --git a/dns.go b/dns.go index 0659110..e19db57 100644 --- a/dns.go +++ b/dns.go @@ -7,6 +7,7 @@ import ( "net" "strings" "sync" + "time" "github.com/miekg/dns" ) @@ -51,7 +52,15 @@ func dnsCustomResolve(qname string, qtype uint16) (*dns.Msg, error) { req.Question = make([]dns.Question, 1) req.Question[0] = dns.Question{Name: qname, Qtype: qtype, Qclass: dns.ClassINET} - resp, rtt, err := c.Exchange(req, cfgResolverEndpoint) + var resp *dns.Msg + var rtt time.Duration + var err error + for i := 0; i < 2; i++ { + resp, rtt, err = c.Exchange(req, cfgResolverEndpoint) + if err == nil { + break + } + } if err != nil { log.Printf("resolving %v/%v (rtt %v) with error: %v", qname, qtype_s, rtt, err) return nil, err diff --git a/example-conf/pdns.conf b/example-conf/pdns.conf index cce803c..f2f6c2d 100644 --- a/example-conf/pdns.conf +++ b/example-conf/pdns.conf @@ -1,5 +1,5 @@ launch=remote -remote-connection-string=http:url=http://127.0.0.1:8086/dns,post,post_json,timeout=3000 +remote-connection-string=http:url=http://127.0.0.1:8086/dns,post,post_json,timeout=5000 consistent-backends=false zone-cache-refresh-interval=0