Heim >Backend-Entwicklung >Golang >Wie führe ich einen LookupTXT in Golang durch, ohne /etc/resolv.conf zu ändern?

Wie führe ich einen LookupTXT in Golang durch, ohne /etc/resolv.conf zu ändern?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-03 12:58:11246Durchsuche

How to Perform a LookupTXT in Golang Without Changing /etc/resolv.conf?

LookupTXT-Funktion in Golang ohne Änderung von /etc/resolv.conf

Die Standard-Golang-Bibliothek bietet keine direkte Funktion, die LookupTXT entspricht ermöglicht die Angabe eines benutzerdefinierten DNS-Servers. Der Grund dafür ist, dass der DNS-Client für DNS-Serverinformationen auf die Konfiguration aus /etc/resolv.conf angewiesen ist.

Es gibt jedoch mehrere Optionen, um das zu erreichen, was Sie benötigen, und gleichzeitig die Anforderung einzuhalten, keine Änderungen vorzunehmen /etc/resolv.conf.

Verwendung eines benutzerdefinierten DNS-Resolvers:

Ein Ansatz besteht darin, Verwenden Sie eine benutzerdefinierte DNS-Resolver-Bibliothek, die die Angabe eines bestimmten DNS-Servers unterstützt. Beispielsweise bietet die Bibliothek github.com/miekg/dns die Flexibilität, eine benutzerdefinierte Server-IP im dns.Client-Objekt festzulegen. Der folgende Code demonstriert die Verwendung dieser Bibliothek:

import (
    "log"
    "net"

    "github.com/miekg/dns"
)

func main() {
    target := "microsoft.com"
    server := "8.8.8.8"

    // Create a new DNS client with a custom server.
    c := dns.Client{Net: "udp", Server: server}

    // Build a request message.
    m := dns.Msg{}
    m.SetQuestion(target+".", dns.TypeTXT)

    // Exchange the request and receive the response.
    r, _, err := c.Exchange(&m, server+":53")
    if err != nil {
        log.Fatal(err)
    }

    // Process the response.
    if len(r.Answer) == 0 {
        log.Fatal("No results")
    }
    for _, ans := range r.Answer {
        TXTrecord := ans.(*dns.TXT)
        for _, txt := range TXTrecord.Txt {
            log.Println(txt)
        }
    }
}

Das obige ist der detaillierte Inhalt vonWie führe ich einen LookupTXT in Golang durch, ohne /etc/resolv.conf zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn