Python DNS处理模块
模块:dnspython
功能:
-
支持所有的记录类型
-
可以用于查询、传输并动态更新ZONE信息
-
支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)
安装:
1
2
3
4
|
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解析器类——resolver,使用query()方法来实现域名的查询功能模块域名解析方法:
Query()方法使用:
1
2
|
import dns.resolver
query( self ,qname,rdtype = 1 ,rdclass = 1 ,tcp = False ,source = None ,raise_on_no_answer = True ,source_port = 0 )
|
rdtype用来指定RR资源的类型,常用的有如下几种:qname为查询的域名。
-
A记录,将主机名转换成IP地址
-
MX记录,邮件交换记录,用于定义邮件服务器的域名
-
CNAME记录,别名记录,实现域名间的映射
-
NS记录,标记区域的域名服务器及授权子域
-
PTR记录,反向解析,与A记录相反,将IP转换成主机名
-
SOA记录,SOA标记,一个起始授权区的定义
rdclass用于指定网络类型,可选的值有:
-
IN,默认为IN
-
CH,
-
HS,
tcp用于指定查询是否启用TCP协议
source和source_port指定查询源地址与端口,默认查询设备IP和0
raise_on_no_answer用于指定当查询无应答时,是否触发异常,默认为True
A记录查询方法:
1
2
3
4
5
6
|
import dns.resolver
dom = raw_input ( '输入域名地址:' )
A = dns.resolver.query(dom, 'A' ) # 指定查询类型为A的记录
for a in A.response.answer: # 通过response.answer方法获取查询回应信息
for b in a.items: # 遍历回应信息
print (b.address)
|
MX记录查询方法:
1
2
3
4
5
|
import dns.resolver
dom = raw_input ( '输入域名地址:' )
MX = dns.resolver.query(dom, 'MX' )
for a in MX:
print ( 'MX 优先权:' ,a.preference, 'mail 交换器:' ,a.exchange)
|
NS记录查询方法:
1
2
3
4
5
6
|
import dns.resolver
dom = raw_input ( '输入一级域名地址:' )
NS = dns.resolver.query(dom, 'NS' )
for a in NS.respinse.answer:
for b in a.items:
print (b.to_text())
|
CNAME记录查询方法:
1
2
3
4
5
6
|
import dns.resolver
dom = raw_input ( '输入域名地址:' )
cname = dns.resolver.query(dom, 'CNAME' )
for a in cname.response.answer:
for b in a.items:
print (b.to_text())
|
DNS域名轮询业务监控:
步骤:
-
实现域名的解析,获取域名所有的A记录解析IP列表
-
对IP列表进行HTTP级别的探测
本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/2050030,如需转载请自行联系原作者