乘风原创程序

  • golang:第三方库,dns解析库miekg/dns
  • 2020/11/26 15:42:35
  • 一、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记录

    本文地址:https://blog.csdn.net/kanguolaikanguolaik/article/details/110182266