Compare commits

...

2 Commits

Author SHA1 Message Date
79a3cc9f92
another ttl clip 2024-06-30 12:15:16 +03:00
8a2e37fa88
adjust timeouts 2024-06-30 11:51:09 +03:00
4 changed files with 15 additions and 6 deletions

6
cfg.go
View File

@ -9,12 +9,12 @@ import (
const ( const (
cfgListen = "127.0.0.1:8086" cfgListen = "127.0.0.1:8086"
cfgTtlMin uint32 = 60 cfgTtlMin uint32 = 120
cfgTtlMax uint32 = 3600 cfgTtlMax uint32 = 1800
cfgResolverEndpoint = "127.1.0.1:53" cfgResolverEndpoint = "127.1.0.1:53"
cfgResolverProto = "tcp" cfgResolverProto = "tcp"
cfgResolverTimeout = 2000 * time.Millisecond cfgResolverTimeout = 1900 * time.Millisecond
cfgNftTable = "uni" cfgNftTable = "uni"
cfgNftTableFamily = nft.TableFamilyINet cfgNftTableFamily = nft.TableFamilyINet

View File

@ -72,7 +72,7 @@ func dnsRemap(qname string, qtype uint16, orig *dns.Msg) ([]PowerDnsAnswer, erro
r := DnsAnswer{ r := DnsAnswer{
Qname: qname, Qname: qname,
Qtype: t, Qtype: t,
Ttl: rr.Header().Ttl, Ttl: dnsClipTtl(rr.Header().Ttl),
} }
switch r.Qtype { switch r.Qtype {
case dns.TypeA: case dns.TypeA:

11
dns.go
View File

@ -7,6 +7,7 @@ import (
"net" "net"
"strings" "strings"
"sync" "sync"
"time"
"github.com/miekg/dns" "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 = make([]dns.Question, 1)
req.Question[0] = dns.Question{Name: qname, Qtype: qtype, Qclass: dns.ClassINET} 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 { if err != nil {
log.Printf("resolving %v/%v (rtt %v) with error: %v", qname, qtype_s, rtt, err) log.Printf("resolving %v/%v (rtt %v) with error: %v", qname, qtype_s, rtt, err)
return nil, err return nil, err

View File

@ -1,5 +1,5 @@
launch=remote 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 consistent-backends=false
zone-cache-refresh-interval=0 zone-cache-refresh-interval=0