go dns解析参数配置
// lookup_dns.go
package main
import (
"net"
"time"
"k8s.io/klog/v2"
)
func main() {
dns := "kubernetes.default"
if _, err := net.LookupHost(dns); err != nil {
klog.Errorf("lookup %s failed, err is %v", dns, err)
}
time.Sleep(time.Hour)
}
参数加在/etc/resolv.conf中options里面。
- 参数1:single-request和single-request-reopen
默认并行。
single-request或者single-request-reopen,表示串行,先A再AAAA。
single-request-reopen表示A和AAAA请求源端口不同,但一般情况下源端口不会相同。
这里的串行和并行是针对相同nameserver和相同域名,解析A和AAAA。
- 参数2:ndots
默认是1。
如果解析的域名中点的个数比ndots小,那么先拼接search解析,且解析失败后才按原域名来解析;否则,先按原域名来解析,解析失败后拼接search解析。
- 参数3:timeout
默认5s。
如果udp发生丢包,需要等待5s超时,最小可设置为1s。