Why golang Lookup*** function can't provide a server parameter?

后端 未结 5 1280
心在旅途
心在旅途 2020-12-14 18:11

For nslookup command, it has nslookup somewhere.com some.dns.server.

However, it seems that golang dnsclient only load config from /

5条回答
  •  北荒
    北荒 (楼主)
    2020-12-14 19:03

    Since a little while you can set the Dial for the Resolver, where you can define your nameserver in the DialContext

    var resolver *net.Resolver
    
    if nameserver != "" {
        resolver = &net.Resolver{
            PreferGo: true,
            Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
                d := net.Dialer{}
                return d.DialContext(ctx, "udp", net.JoinHostPort(nameserver, "53"))
            },
        }
    } else {
        resolver = net.DefaultResolver
    }
    

    After that you can go as you're used to:

    ips, err := resolver.LookupIPAddr(context.Background(), "www.example.com")
    

提交回复
热议问题