Viele netzwerkbezogene Vorgänge basieren auf DNS-Suchvorgängen, um Hostnamen in IP-Adressen und andere Informationen aufzulösen. Golang bietet im Netzpaket eine Reihe praktischer Funktionen zum Durchführen von DNS-Suchen, einschließlich LookupAddr und LookupTXT, die die entsprechenden IP-Adressen oder Texteinträge für einen bestimmten Hostnamen zurückgeben.
Eine Einschränkung dieser Funktionen besteht darin, dass sie normalerweise Verlassen Sie sich auf die Resolver des Systems, die in /etc/resolv.conf konfiguriert sind. Während dies in den meisten Fällen ausreicht, kann es vorkommen, dass Sie einen bestimmten DNS-Server angeben müssen, um die Suche durchzuführen.
Leider die Standard-Go-Bibliothek bietet derzeit keine Funktionen wie LookupAddrWithServer oder LookupTXTWithServer an, mit denen Sie einen benutzerdefinierten DNS-Server angeben können. Es gibt jedoch mehrere Bibliotheken von Drittanbietern, die diese Funktionalität bereitstellen, einschließlich der beliebten Bibliothek github.com/miekg/dns.
Das folgende modifizierte Beispiel aus der Antwort von @holys zeigt, wie Sie die Bibliothek miekg/ verwenden können. DNS-Bibliothek zum Durchführen von DNS-Suchen mit einem angegebenen Server:
package main import ( "fmt" "log" "github.com/miekg/dns" ) func main() { target := "example.com" server := "8.8.8.8" c := dns.Client{} m := dns.Msg{} m.SetQuestion(target, dns.TypeA) r, t, err := c.Exchange(&m, server+":53") if err != nil { log.Fatal(err) } fmt.Printf("Took %v", t) if len(r.Answer) == 0 { log.Fatal("No results") } for _, ans := range r.Answer { arecord := ans.(*dns.A) fmt.Printf("%s", arecord.A) } }
In diesem Beispiel wird die Bibliothek github.com/miekg/dns verwendet, um einen A-Eintrag durchzuführen Suchen Sie nach example.com mit dem angegebenen DNS-Server unter 8.8.8.8. Durch die Nutzung von Bibliotheken von Drittanbietern wie miekg/dns können Sie die von der Go-Standardbibliothek bereitgestellte Funktionalität erweitern, um Ihren spezifischen Anforderungen gerecht zu werden.
Das obige ist der detaillierte Inhalt vonWie kann ich DNS-Suchen in Go mit einem benutzerdefinierten DNS-Server durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!