>백엔드 개발 >Golang >/etc/resolv.conf를 변경하지 않고 Golang에서 LookupTXT를 수행하는 방법은 무엇입니까?

/etc/resolv.conf를 변경하지 않고 Golang에서 LookupTXT를 수행하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-03 12:58:11246검색

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

/etc/resolv.conf를 수정하지 않고 Golang에서 LookupTXT 함수

표준 Golang 라이브러리는 LookupTXT와 동등한 직접적인 기능을 제공하지 않습니다. 사용자 정의 DNS 서버를 지정할 수 있습니다. 그 이유는 DNS 클라이언트가 DNS 서버 정보에 대해 /etc/resolv.conf의 구성에 의존하기 때문입니다.

그러나 수정하지 않는다는 요구 사항을 준수하면서 필요한 것을 달성할 수 있는 몇 가지 옵션이 있습니다. /etc/resolv.conf.

사용자 정의 DNS 확인자 사용:

하나 접근 방식은 특정 DNS 서버 지정을 지원하는 사용자 지정 DNS 확인자 라이브러리를 사용하는 것입니다. 예를 들어, github.com/miekg/dns 라이브러리는 dns.Client 객체에 사용자 정의 서버 IP를 설정할 수 있는 유연성을 제공합니다. 다음 코드는 이 라이브러리를 사용하는 방법을 보여줍니다.

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)
        }
    }
}

위 내용은 /etc/resolv.conf를 변경하지 않고 Golang에서 LookupTXT를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.