Can Go's LookupFunktionen Einen Server angeben?*
Die dnsclient-Bibliothek von Go lädt die Konfiguration nahtlos aus /etc/resolv .conf, das wesentliche DNS-Funktionalität bereitstellt. Bestimmte Szenarien erfordern jedoch die Verwendung eines bestimmten DNS-Servers. Bietet die Go-Standardbibliothek einen Mechanismus wie:
func LookupTXT(name string, dnsServer string) (txt []string, err error)
der den Standard-DNS-Server überschreiben und gleichzeitig die Integrität von /etc/resolv.conf wahren kann?
Lösung
Obwohl der von Go bereitgestellte DNS-Client die Angabe eines Servers während der DNS-Auflösung nicht direkt unterstützt, gibt es alternative Ansätze, um diese Funktionalität zu erreichen. Eine praktikable Option ist die Nutzung der umfassenden dns-Bibliothek, die von miekg entwickelt wurde:
import ( "log" "github.com/miekg/dns" ) func main() { target := "microsoft.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) } log.Printf("Took %v", t) if len(r.Answer) == 0 { log.Fatal("No results") } for _, ans := range r.Answer { Arecord := ans.(*dns.A) log.Printf("%s", Arecord.A) } }
Beim Ausführen dieses Codes erhalten Sie die aufgelösten IP-Adressen für die Zieldomäne und demonstrieren so die effektive Nutzung eines angegebenen DNS-Servers, ohne die Standardkonfiguration des Systems zu beeinträchtigen.
Das obige ist der detaillierte Inhalt vonKann die Standardbibliothek von Go einen benutzerdefinierten DNS-Server für Suchfunktionen angeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!