Go 的 Lookup 函數可以指定伺服器嗎? *
Go 的 dnsclient 函式庫無縫從 /etc/resolv 載入設定.conf,提供基本的 DNS 功能。然而,某些場景需要使用特定的 DNS 伺服器。 Go 標準函式庫是否提供了類似:
func LookupTXT(name string, dnsServer string) (txt []string, err error)
的機制,可以覆蓋預設 DNS 伺服器,同時保持 /etc/resolv.conf 的完整性?
解決方案
雖然 Go 提供的 DNS 用戶端不直接支援在 DNS 解析時指定伺服器,但還有其他方法可以實現此功能。一個可行的選擇是利用miekg 開發的綜合dns 庫:
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) } }
執行此程式碼後,您將獲得目標域的已解析IP 位址,展示了有效使用指定的DNS 伺服器,而不影響系統的預設配置。
以上是Go的標準庫可以為查找功能指定自訂DNS伺服器嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!