第三方dns库miekg
miekg/dns
可以做dns查询、可以做local dns、可以做授权dns。
由于下载不到:golang.org/x/crypto/ed25519,需要将代码中相关的代码删除掉,做dns查询时不会用到该部分代码。
代码:
package main
import (
"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 []string
for _, 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记录