Skip to content

Instantly share code, notes, and snippets.

@bvk
Created February 1, 2017 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bvk/c5d2919d5ab02f3f01ccc19c42a42880 to your computer and use it in GitHub Desktop.
Save bvk/c5d2919d5ab02f3f01ccc19c42a42880 to your computer and use it in GitHub Desktop.
Resolve a hostname using a different DNS server
package main
import (
"flag"
"fmt"
"log"
"net"
"github.com/miekg/dns"
)
var server = flag.String("nameserver", "192.168.122.1",
"IPv4 Address of the DNS server.")
func main() {
flag.Parse()
if flag.NArg() == 0 {
return
}
if serverIP := net.ParseIP(*server); serverIP == nil {
log.Fatalf("could not parse nameserver ip %s", *server)
}
c := dns.Client{}
m := dns.Msg{}
for _, target := range flag.Args() {
m.SetQuestion(target+".", dns.TypeA)
r, _, err := c.Exchange(&m, *server+":53")
if err != nil {
log.Fatal(err)
}
if len(r.Answer) == 0 {
log.Fatal("No results")
}
for _, ans := range r.Answer {
Arecord := ans.(*dns.A)
fmt.Printf("%s\n", Arecord.A)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment