当前位置: 首页 > 工具软件 > DNS Go > 使用案例 >

golang:第三方库,dns解析库miekg/dns

丰辰沛
2023-12-01

一、dns解析库miekg/dns

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

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

1.1 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记录

 类似资料: