golang如何獲取域名ip?dns信息
Go語言查找DNS A記錄
A (Address) 記錄是用來指定主機名(或域名)對應(yīng)的IP地址記錄. 用戶可以將該域名下的網(wǎng)站服務(wù)器指向到自己的web server上. 同時也可以設(shè)置您域名的二級域名.
使用 Go 語言的標(biāo)準(zhǔn)庫 net.LookupIP() 接受域名的字符串參數(shù),返回 net.IP的切片. 這個 net.IP 對象包含IPv4地址和IPv6地址.
package main
import (
"fmt"
"net"
)
func main() {
iprecords, _ := net.LookupIP("mojotv.cn")
for _, ip := range iprecords {
fmt.Println(ip)
}
}上面代碼返回的facebook域名的IPv4和IPv6地址:
C:\golang\mojotv.cn>go run golang_dns_example.go 2a03:2880:f12f:83:face:b00c:0:25de 31.13.79.35
Go語言查找DNSCNAME記錄
CNAME(縮寫canonical name)記錄,即:別名記錄.這種記錄允許您將多個名字映射到同一臺計算機. 通常用于同時提供WWW和MAIL服務(wù)的計算機.例如,有一臺計算機名為“host.mydomain.com”(A記錄). 它同時提供WWW和MAIL服務(wù),為了便于用戶訪問服務(wù).可以為該計算機設(shè)置兩個別名(CNAME):WWW和MAIL.
使用Go語言標(biāo)準(zhǔn)庫net.LookupCNAME()根據(jù)域名字符串查詢DNS CNAME 記錄值.
package main
import (
"fmt"
"net"
)
func main() {
cname, _ := net.LookupCNAME("m.facebook.com")
fmt.Println(cname)
}返回m.facebook.com 的 DNS CNAME 記錄值出輸結(jié)果如下:
C:\golang\mojotv.cn>go run dns_cname_example.go star-mini.c10r.facebook.com.
Go語言查找DNS PTR記錄
PTR記錄,是電子郵件系統(tǒng)中的郵件交換記錄的一種;另一種郵件交換記錄是A記錄(在IPv4協(xié)議中)或AAAA記錄(在IPv6協(xié)議中).PTR記錄常被用于反向地址解析. 根據(jù)一個IP值,查找映射的域名值,不一定沒有ip地址都回生效,DNS的IP地址可以查到.
DNS PTR用途
- PTR記錄被用于電子郵件發(fā)送過程中的反向地址解析.
- 當(dāng)正向域名解析完成后,還應(yīng)當(dāng)向您的線路接入商(ISP)申請做反向地址解析,以減少被國外機構(gòu)退信的可能性.
使用Go語言標(biāo)準(zhǔn)庫net.LookupAddr()函數(shù)對地址執(zhí)行反向查找,并返回映射到給定地址的名稱列表.
package main
import (
"fmt"
"net"
)
func main() {
ptr, err := net.LookupAddr("114.114.114.114")
if err != nil {
fmt.Println(err)
}
for _, ptrvalue := range ptr {
fmt.Println(ptrvalue)
}
}查找dns的返回值如下
C:\golang\dns>go run example3.go public1.114dns.com.
Go語言查找DNS NS記錄
NS記錄此記錄指定負(fù)責(zé)此DNS區(qū)域的權(quán)威名稱服務(wù)器. A記錄和NS記錄的區(qū)別是,A記錄直接給出目的IP, NS記錄將DNS解析任務(wù)交給特定的服務(wù)器, NS記錄中記錄的IP即為該特定服務(wù)器的IP地址.
使用Go語言標(biāo)準(zhǔn)庫net.LookupNS()函數(shù)對域名執(zhí)行反向查找,并返回負(fù)責(zé)此域名DNS-NS記錄切片.
package main
import (
"fmt"
"net"
)
func main() {
nameserver, _ := net.LookupNS("baidu.com")
for _, ns := range nameserver {
fmt.Println(ns)
}
}結(jié)果如下
C:\golang\mojotv.cn>go run dsn_ns_example.go
&{ns3.baidu.com.}
&{ns4.baidu.com.}
&{ns7.baidu.com.}
&{dns.baidu.com.}
&{ns2.baidu.com.}Go語言查找DNS MX記錄
郵件交換記錄 (MX record)是域名系統(tǒng)(DNS)中的一種資源記錄類型,用于指定負(fù)責(zé)處理發(fā)往收件人域名的郵件服務(wù)器. MX記錄允許設(shè)置一個優(yōu)先級,當(dāng)多個郵件服務(wù)器可用時,會根據(jù)該值決定投遞郵件的服務(wù)器.簡單郵件傳輸協(xié)議(SMTP)會根據(jù)MX記錄的值來決定郵件的路由過程.
使用Go語言標(biāo)準(zhǔn)庫 net.LookupMX 函數(shù)將域名作為字符串,并返回按首選項排序的MX 結(jié)構(gòu)體的切片. MX結(jié)構(gòu)由主機作為string組成,Pref是uint16.
package main
import (
"fmt"
"net"
)
func main() {
mxrecords, _ := net.LookupMX("baidu.com")
for _, mx := range mxrecords {
fmt.Println(mx.Host, mx.Pref)
}
}域名(baidu.com)的輸出列表MX記錄
C:\golang\mojotv.cn>go run golang_dns_mx_example.go mx.maillb.baidu.com. 10 mx.n.shifen.com. 15 mx1.baidu.com. 20 jpmx.baidu.com. 20 mx50.baidu.com. 20
Go語言查找DNS SRV記錄
SRV記錄(英語:Service Record,中文又名服務(wù)定位記錄)是域名系統(tǒng)中用于指定服務(wù)器提供服務(wù)的位置(如主機名和端口)數(shù)據(jù).此數(shù)據(jù)于RFC 2782中定義,類型代碼為33. 部分協(xié)議,如會話發(fā)起協(xié)議(SIP)及可擴展消息與存在協(xié)議(XMPP)通常需要服務(wù)記錄的支持.
Go語言標(biāo)準(zhǔn)庫LookupSRV函數(shù)嘗試指定服務(wù)的SRV查詢,協(xié)議和域名的SRV查詢. 第二個參數(shù)是“tcp”或“udp”. 返回的記錄按優(yōu)先級排序,并按優(yōu)先級在權(quán)重隨機分配.
package main
import (
"fmt"
"net"
)
func main() {
cname, srvs, err := net.LookupSRV("xmpp-server", "tcp", "golang.org")
if err != nil {
panic(err)
}
fmt.Printf("\ncname: %s \n\n", cname)
for _, srv := range srvs {
fmt.Printf("%v:%v:%d:%d\n", srv.Target, srv.Port, srv.Priority, srv.Weight)
}
}下面的輸出演示了CNAME返回,后跟SRV記錄目標(biāo),端口,優(yōu)先級和由冒號分隔的權(quán)重.
C:\golang\mojotv.cn>go run golang_dns_srv_example.go cname: _xmpp-server._tcp.golang.org.
Go語言查找DNS TXT記錄
TXT記錄用來保存域名的附加文本信息,TXT記錄的內(nèi)容按照一定的格式編寫,最常用的是SPF格式,SPF用于登記某個域名擁有的用來外發(fā)郵件的所有ip地址. MX記錄的作用是給寄信者指明某個域名的郵件服務(wù)器有哪些,SPF格式的TXT記錄的作用跟MX記錄相反,它向收信者表明,哪些郵件服務(wù)器是經(jīng)過某個域名認(rèn)可發(fā)送郵件的. SPF的作用主要是反垃圾郵件,主要針對那些發(fā)信人偽造域名的垃圾郵件.按照SPF格式在DNS中增加一條TXT類型的記錄,將提高該域名的信譽度,同時可以防止垃圾郵件偽造該域的發(fā)件人發(fā)送垃圾郵件.
Go語言標(biāo)準(zhǔn)庫 net.LookupTXT 函數(shù)將域名(baidu.com)作為字符串,并返回DNS TXT記錄列表作為字符串片段.
package main
import (
"fmt"
"net"
)
func main() {
txtrecords, _ := net.LookupTXT("baidu.com")
for _, txt := range txtrecords {
fmt.Println(txt)
}
}baidu.com的txt值如下
C:\golang\mojotv>go run golang_dns_txt.go v=spf1 include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com a mx ptr -all google-site-verification=GHb98-6msqyx_qqjGl5eRatD3QTHyVB6-xQ3gJB5UwM
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Go?Web實戰(zhàn)之創(chuàng)建項目及增加日志功能
這篇文章主要為大家詳細(xì)介紹了Go?Web項目中如何實現(xiàn)創(chuàng)建項目及增加日志功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-11-11
詳解Golang如何優(yōu)雅判斷interface是否為nil
這篇文章主要為大家詳細(xì)介紹了Golang如何優(yōu)雅判斷interface是否為nil的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解下2024-01-01
深入淺出Go語言:手把手教你高效生成與解析JSON數(shù)據(jù)
本文將帶你一步步走進Go語言的世界,教你如何高效生成與解析JSON數(shù)據(jù),無論你是初學(xué)者還是經(jīng)驗豐富的開發(fā)者,都能在本文中找到實用的技巧和靈感,本文內(nèi)容簡潔明了,示例豐富,讓你在閱讀的過程中輕松掌握Go語言生成與解析JSON數(shù)據(jù)的技巧,需要的朋友可以參考下2024-02-02
Golang TCP網(wǎng)絡(luò)編程的具體實現(xiàn)
go語言是一門功能強大的編程語言,它提供了眾多的網(wǎng)絡(luò)編程庫,其中包括tcp/ip,本文主要介紹了Golang TCP網(wǎng)絡(luò)編程的具體實現(xiàn),具有一定的參考價值,感興趣的可以來了解一下2024-06-06
go語言搬磚之go jmespath實現(xiàn)查詢json數(shù)據(jù)
這篇文章主要為大家介紹了go語言搬磚之go jmespath實現(xiàn)查詢json數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
golang協(xié)程設(shè)計及調(diào)度原理
這篇文章主要介紹了golang協(xié)程設(shè)計及調(diào)度原理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-06-06

