Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melakukan Carian DNS dalam Go dengan Pelayan DNS Tersuai?

Bagaimanakah Saya Boleh Melakukan Carian DNS dalam Go dengan Pelayan DNS Tersuai?

DDD
DDDasal
2024-11-30 19:16:10247semak imbas

How Can I Perform DNS Lookups in Go with a Custom DNS Server?

Fungsi Carian dalam Go

Banyak operasi berkaitan rangkaian bergantung pada carian DNS untuk menyelesaikan nama hos kepada alamat IP dan maklumat lain. Golang menyediakan satu set fungsi mudah dalam pakej bersih untuk melaksanakan carian DNS, termasuk LookupAddr dan LookupTXT, yang mengembalikan alamat IP atau rekod teks yang sepadan untuk nama hos yang diberikan.

Satu had bagi fungsi ini ialah ia biasanya bergantung pada penyelesai sistem yang dikonfigurasikan dalam /etc/resolv.conf. Walaupun ini mencukupi dalam kebanyakan kes, mungkin terdapat keadaan di mana anda perlu menentukan pelayan DNS tertentu untuk melakukan carian.

Fungsi Carian dengan Pelayan DNS Tersuai

Malangnya, pustaka Go standard pada masa ini tidak menawarkan fungsi seperti LookupAddrWithServer atau LookupTXTWithServer yang membolehkan anda menentukan pelayan DNS tersuai. Walau bagaimanapun, terdapat beberapa perpustakaan pihak ketiga yang menyediakan fungsi ini, termasuk github.com/miekg/dns yang popular.

Contoh diubah suai berikut daripada jawapan yang diberikan oleh @holys menunjukkan cara anda boleh menggunakan miekg/ perpustakaan dns untuk melakukan carian DNS dengan pelayan tertentu:

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

Contoh ini menggunakan github.com/miekg/dns perpustakaan untuk melakukan carian rekod A contohnya.com menggunakan pelayan DNS yang ditentukan di 8.8.8.8. Dengan memanfaatkan perpustakaan pihak ketiga seperti miekg/dns, anda boleh melanjutkan fungsi yang disediakan oleh perpustakaan standard Go untuk memenuhi keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Carian DNS dalam Go dengan Pelayan DNS Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn