dns: add dnsalwaystcp config. #49

This commit is contained in:
nadoo 2018-08-26 22:36:14 +08:00
parent 2f239d60f1
commit 529786acf6
4 changed files with 12 additions and 12 deletions

View File

@ -50,6 +50,7 @@ func confInit() {
flag.StringVar(&conf.RulesDir, "rules-dir", "", "rule file folder")
flag.StringVar(&conf.DNS, "dns", "", "dns forwarder server listen address")
flag.BoolVar(&conf.DNSConfig.AlwaysTCP, "dnsalwaystcp", false, "always use tcp to query upstream dns servers no matter there's a forwarder or not")
flag.StringSliceUniqVar(&conf.DNSConfig.Servers, "dnsserver", []string{"8.8.8.8:53"}, "remote dns server")
flag.IntVar(&conf.DNSConfig.Timeout, "dnstimeout", 3, "timeout value used in multiple dnsservers switch(seconds)")
flag.IntVar(&conf.DNSConfig.MaxTTL, "dnsmaxttl", 1800, "maximum TTL value for entries in the CACHE(seconds)")

View File

@ -23,6 +23,7 @@ type Config struct {
MaxTTL int
MinTTL int
Records []string
AlwaysTCP bool
}
// Client is a dns client struct
@ -133,7 +134,7 @@ func (c *Client) exchange(qname string, reqBytes []byte, preferTCP bool) (server
}
// If client uses udp and no forwarders specified, use udp
if !preferTCP && dialer.Addr() == "DIRECT" {
if !preferTCP && !c.config.AlwaysTCP && dialer.Addr() == "DIRECT" {
network = "udp"
}

View File

@ -89,7 +89,7 @@ func (f *Forwarder) Dial(network, addr string) (c net.Conn, err error) {
f.IncFailures()
if f.Failures() >= f.MaxFailures() {
f.Disable()
log.F("[forwarder] %s reaches maxfailures, set to disabled", f.addr)
log.F("[forwarder] %s reaches maxfailures, set to DISABLED", f.addr)
}
}

View File

@ -165,16 +165,14 @@ func (d *Dialer) onStatusChanged(fwdr *proxy.Forwarder) {
defer d.mu.Unlock()
if fwdr.Enabled() {
log.F("[strategy] %s changed from Disabled to Enabled ", fwdr.Addr())
log.F("[strategy] %s changed status from Disabled to Enabled ", fwdr.Addr())
if fwdr.Priority() == d.Priority() {
d.available = append(d.available, fwdr)
} else if fwdr.Priority() > d.Priority() {
d.initAvailable()
}
}
if !fwdr.Enabled() {
log.F("[strategy] %s changed from Enabled to Disabled", fwdr.Addr())
} else {
log.F("[strategy] %s changed status from Enabled to Disabled", fwdr.Addr())
for i, f := range d.available {
if f == fwdr {
d.available[i], d.available = d.available[len(d.available)-1], d.available[:len(d.available)-1]