欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-23 20:28:01
文章目录一、dns解析库1.1 dns查询一、dns解析库第三方dns库miekgmiekg/dns可以做dns查询、可以做local dns、可以做授权dns。由于下载不到:golang.org/x/crypto/ed25519,需要将代码中相关的代码删除掉,做dns查询时不会用到该部分代码。1.1 dns查询代码:package mainimport ( "fmt" "time" "github.com/miekg/dns")fu...

一、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

相关标签: golang dns