一、dns解析库miekg/dns

第三方dns库miekg
miekg/dns
可以做dns查询、可以做local dns、可以做授权dns。

由于下载不到:golang.org/x/crypto/ed25519,需要将代码中相关的代码删除掉,做dns查询时不会用到该部分代码。

1.1 dns查询

代码:

package mainimport ("fmt""time""github.com/miekg/dns"
)func main() {c := dns.Client{Timeout: 5 * time.Second,}m := dns.Msg{}m.SetQuestion("www.baidu.com.", dns.TypeA)r, _, err := c.Exchange(&m, "192.168.220.2:53")if err != nil {fmt.Println("dns error")return}var dst []stringfor _, ans := range r.Answer {record, isType := ans.(*dns.A)if isType {fmt.Println("type A:", record.A)dst = append(dst, record.A.String())}record1, isType := ans.(*dns.CNAME)if isType {fmt.Println("type cname:", record1.Target)}}for _, v := range dst {fmt.Println("ok:", v)}
}

运行结果:

[root@localhost src]# go run test
type cname: www.a.shifen.com.
type A: 220.181.38.149
type A: 220.181.38.150
ok: 220.181.38.149
ok: 220.181.38.150

参考资料:dns解析的方法:
在Golang中获取DNS记录