Go の Lookup は可能ですか? 関数 サーバーを指定しますか?*
Go の dnsclient ライブラリは /etc/resolv から設定をシームレスにロードします.conf は、重要な DNS 機能を提供します。ただし、特定のシナリオでは、特定の DNS サーバーの使用が必要になります。 Go 標準ライブラリは、/etc/resolv.conf の整合性を維持しながらデフォルトの DNS サーバーをオーバーライドできる次のようなメカニズムを提供していますか?
func LookupTXT(name string, dnsServer string) (txt []string, err error)
ソリューション
Go が提供する DNS クライアントは、DNS 解決中のサーバーの指定を直接サポートしていませんが、これを実現するための代替アプローチがあります。この機能。実行可能なオプションの 1 つは、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 中国語 Web サイトの他の関連記事を参照してください。