Maison >développement back-end >Golang >Comment puis-je effectuer des recherches DNS dans Go avec un serveur DNS personnalisé ?
De nombreuses opérations liées au réseau s'appuient sur des recherches DNS pour résoudre les noms d'hôtes en adresses IP et autres informations. Golang fournit un ensemble de fonctions pratiques dans le package net pour effectuer des recherches DNS, notamment LookupAddr et LookupTXT, qui renvoient les adresses IP ou les enregistrements de texte correspondants pour un nom d'hôte donné.
Une limitation de ces fonctions est qu'elles sont généralement s'appuyer sur les résolveurs du système configurés dans /etc/resolv.conf. Bien que cela soit suffisant dans la plupart des cas, il peut y avoir des cas où vous devrez spécifier un serveur DNS spécifique pour effectuer la recherche.
Malheureusement, la bibliothèque Go standard n'offre actuellement pas de fonctions telles que LookupAddrWithServer ou LookupTXTWithServer qui vous permettent de spécifier un serveur DNS personnalisé. Cependant, il existe plusieurs bibliothèques tierces qui fournissent cette fonctionnalité, y compris la populaire github.com/miekg/dns.
L'exemple modifié suivant tiré de la réponse donnée par @holys montre comment vous pouvez utiliser le miekg/ Bibliothèque DNS pour effectuer des recherches DNS avec un serveur spécifié :
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) } }
Cet exemple utilise la bibliothèque github.com/miekg/dns pour effectuer une recherche d'enregistrement A. par exemple.com en utilisant le serveur DNS spécifié à l'adresse 8.8.8.8. En tirant parti de bibliothèques tierces telles que miekg/dns, vous pouvez étendre les fonctionnalités fournies par la bibliothèque standard Go pour répondre à vos besoins spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!