dnspython是python實現的一個DNS的工具包,可以用於查詢、傳輸並動態 更新ZONE資訊,支援TSIG(事務簽名)驗證訊息和EDNS0(擴充DNS)。在系統管理方面,我們可以利用查詢功能來實現DNS服務監控以及解析結果的校正。
dnspython模組的安裝
wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gz
tar -zxvf dnspython-1.9.4.tar.gz
cd dnspython-1.9.4
python setup.py install
dnspython提供大量關於DNS的處理方法,最常用的是網域名稱查詢。dnspython提供了一個DNS解析類resolver,使用它的query方法來實現網域名稱的查詢功能。
query(self, qname, rdtype = 1, rdclass = 1, tcp = False, source = None, raise_on_no_answer = True, source_port = 0)
qname參數為查詢的網域名稱,rdtype參數用來指定RR資源。
A記錄:將主機名稱轉換成IP地址
MX記錄:郵件交換記錄,定義郵件伺服器的網域名稱
CNAME記錄:別名記錄,實現網域名稱間的映射
NS記錄:標記地區的網域名稱伺服器及授權子域
PTR記錄:反向解析,與A記錄相反,將IP地址轉換為主機名稱
SOA記錄:SOA標記,一個起始授權區的定義
rdclass指定網路類型,IN,CH,HS, IN預設
tcp指定查詢是否啟用TCP協議(預設不啟用)
source 與source_port指定查詢源的地址與連接埠,預設為查詢裝置的IP地址和0
raise_on_no_answer指定查詢無應答時是否觸發異常,預設為True
A記錄
`
import dns.resolver
domain = raw_input(‘Please input an domain:’)
A = dns.resolver.query(domain, ‘A’)
for i in A.response.answer:
for j in i.items:
print j.address
`
MX記錄
import dns.resolver
domain = raw_input('Please input a domain')
MX = dns.resolver.query(domain, 'MX')
for i in MX:
print 'MX preference =', i.preference, 'mail exchanger =', i.exchange
NS記錄
import dns.resolver
domain = raw_input('Please input a domain')
NS = dns.resolver.query(domain, 'NS')
for i in NS.response.answer:
for j in i.items:
print j.to_text()
只限輸入頂層網域
CNAME記錄
import dns.resolver
domain = raw_input('please input a domain:')
CNAME = dns.resolver.query(domain,'CNAME')
for i in CNAME.response.answer:
for j in i.items:
print j.to_text()