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中文网其他相关文章!