天天看點

Python DNS處理子產品

子產品:dnspython

功能:

支援所有的記錄類型

可以用于查詢、傳輸并動态更新ZONE資訊

支援TSIG(事務簽名)驗證消息和EDNS0(擴充DNS)

安裝:

1

2

3

4

<code>wget http:</code><code>//www</code><code>.dnspython.org</code><code>/kits/1</code><code>.9.4</code><code>/dnspython-1</code><code>.9.4.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>-zxvf dnspython-1.9.4.</code><code>tar</code><code>.gz</code>

<code>cd</code> <code>dnspython-1.9.4</code>

<code>python setup.py </code><code>install</code>

dnspython提供一個DNS解析器類——resolver,使用query()方法來實作域名的查詢功能子產品域名解析方法:

Query()方法使用:

<code>import</code> <code>dns.resolver</code>

<code>query(</code><code>self</code><code>,qname,rdtype</code><code>=</code><code>1</code><code>,rdclass</code><code>=</code><code>1</code><code>,tcp</code><code>=</code><code>False</code><code>,source</code><code>=</code><code>None</code><code>,raise_on_no_answer</code><code>=</code><code>True</code><code>,source_port</code><code>=</code><code>0</code><code>)</code>

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記錄查詢方法:

5

6

<code>dom</code><code>=</code><code>raw_input</code><code>(</code><code>'輸入域名位址:'</code><code>)</code>

<code>A</code><code>=</code><code>dns.resolver.query(dom,</code><code>'A'</code><code>) </code><code># 指定查詢類型為A的記錄</code>

<code>for</code> <code>a </code><code>in</code> <code>A.response.answer:   </code><code># 通過response.answer方法擷取查詢回應資訊</code>

<code>    </code><code>for</code> <code>b </code><code>in</code> <code>a.items:         </code><code># 周遊回應資訊</code>

<code>        </code><code>print</code><code>(b.address)</code>

MX記錄查詢方法:

<code>MX</code><code>=</code><code>dns.resolver.query(dom,</code><code>'MX'</code><code>)</code>

<code>for</code> <code>a </code><code>in</code> <code>MX:</code>

<code>    </code><code>print</code><code>(</code><code>'MX 優先權:'</code><code>,a.preference,</code><code>'mail 交換器:'</code><code>,a.exchange)</code>

NS記錄查詢方法:

<code>dom</code><code>=</code><code>raw_input</code><code>(</code><code>'輸入一級域名位址:'</code><code>)</code>

<code>NS</code><code>=</code><code>dns.resolver.query(dom,</code><code>'NS'</code><code>)</code>

<code>for</code> <code>a </code><code>in</code> <code>NS.respinse.answer:</code>

<code>    </code><code>for</code> <code>b </code><code>in</code> <code>a.items:</code>

<code>        </code><code>print</code><code>(b.to_text())</code>

CNAME記錄查詢方法:

<code>cname</code><code>=</code><code>dns.resolver.query(dom,</code><code>'CNAME'</code><code>)</code>

<code>for</code> <code>a </code><code>in</code> <code>cname.response.answer:</code>

DNS域名輪詢業務監控:

步驟:

實作域名的解析,擷取域名所有的A記錄解析IP清單

對IP清單進行HTTP級别的探測

本文轉自Grodd51CTO部落格,原文連結:http://blog.51cto.com/juispan/2050030,如需轉載請自行聯系原作者