一款超強的統計DNS查詢的工具--DNSTOP(轉)

post0發表於2007-08-11
一款超強的統計DNS查詢的工具--DNSTOP(轉)[@more@]

在維護DNS伺服器時,偶們希望知道到底是哪些使用者在使用偶們的DNS伺服器,同時也希望能對DNS查詢做一個統計。一般情況下,偶們可以使用tcpdump –i eth0 port 53來檢視DNS查詢包,不過tcpdump的輸出可不是那麼友好,尤其是當訪問量大的時候,偶就頭暈了 icon_sad.gif ~~當然了可以把輸出重定向到檔案,如果熟悉shell程式設計的話還可以做個指令碼來分析;至於查詢統計嘛,可以使用rndc stats(bind9)來獲取,但是這可不是實時的,當然了你也可以使用at,cron來自動執行,不幸的事,這些偶都不太會 icon_redface.gif ,because 偶是菜鳥 of linux/unix。沒關係,今天偶來介紹一款超強統計DNS查詢的工具。(不好意思廢話有點多,就當熱身嘛,呵呵 icon_smile.gif )BTW:多謝bbgun網友提供資訊 icon_exclaim.gif 。

剛才裝了一下DNSTOP,還是有一點麻煩,好了,要上洗手間趕快去;衝咖啡的搞快點了囉。各就各位,Let’s go! icon_arrow.gif

首先申明一下,偶是在redhat8+bind9下實現的,如果你的系統不是linux的話,請參考原始碼包裡的相關說明。

1、下載原始碼

開啟瀏覽器,進入,可以看到DNSTOP的相關介紹。如果你的系統沒有 libpcap庫的話(用find / -name “libpcap*”搜一下就知道有沒有了),在安裝DNSTOP前還需要安裝libpcap庫。不管三七二十一,先把這兩個原始碼包下載下來再說:

libpcap-0.7.2.tar.gz

dnstop-20030929.tar.gz

src/dnstop-20030929.tar.gz

2、編譯安裝libpcap庫

假設libpcap-0.7.2.tar.gz是放置在/home/andy目錄下的。步驟如下:

[root@t113 /]# cd /home/andy

[root@t113 andy]#gunzip libpcap-0.7.2.tar.gz

[root@t113 andy]# tar -xvf libpcap-0.7.2.tar

[root@t113 andy]# cd libpcap-0.7.2

[root@t113 libpcap-0.7.2]#

注意了(大聲的說~~),在這兒編譯時是編譯成靜態函式庫,但是等會兒你編譯DNSTOP時卻是需要共享函式庫(動態函式庫)。所以偶們要修改一下libpcap-0.7.2目錄下的Makefile.in檔案,開啟檔案找到如下語句:

程式碼:

all: libpcap.a(第96行)

libpcap.a: $(OBJ)

@rm -f $@

ar rc $@ $(OBJ)

$(RANLIB) $@

修改為:

程式碼:

all: libpcap.so

libpcap.so: $(OBJ)

@rm -f $@

# ar rc $@ $(OBJ)

gcc $(OBJ) -shared -o libpcap.so

# $(RANLIB) $@

再找到如下語句:

程式碼:

install:(第139行)

[ -d $(DESTDIR)$(libdir) ] ||

(mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir))

$(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a

$(RANLIB) $(DESTDIR)$(libdir)/libpcap.a

修改為:

程式碼:

install:

# [ -d $(DESTDIR)$(libdir) ] ||

# (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir))

# $(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a

# $(RANLIB) $(DESTDIR)$(libdir)/libpcap.a

cp libpcap.so /usr/lib/

搞定!開始編譯:

[root@t113 libpcap-0.7.2]# ./configure --prefix=/usr

[root@t113 libpcap-0.7.2]# make

[root@t113 libpcap-0.7.2]# make install

到這兒,偶們可以鬆口氣了。下面安裝DNSTOP就很easy了。

3、編譯DNSTOP

步驟如下:

[root@t113 libpcap-0.7.2]# cd ..

[root@t113 andy]# gunzip dnstop-20030929.tar.gz

[root@t113 andy]# tar -xvf dnstop-20030929.tar

[root@t113 andy]# make

到這一步,偶就要恭喜各位:DNSTOP已經編譯完成了。

接下來look一下DNSTOP到底是什麼東東(s後面的引數是需要監聽的網路卡介面):

[root@t113 andy]# ./dnstop -s eth0

效果如下:

0 new queries, 6 total queries Mon Nov 5 07:54:35 2007

Sources count %

---------------- --------- ------

192.168.0.113 4 66.7

192.168.0.144 1 16.7

192.168.0.40 1 16.7

不錯吧^_^,在執行DNSTOP的過程中,可以敲入如下命令:

S,D,T,1,2,^R(ctrl+R),^X(ctrl+X),?

來顯示不同的統計資訊。比如敲入1,顯示結果如下:

0 new queries, 7 total queries Mon Nov 5 07:57:17 2007

TLD count %

-------------------- --------- ------

com 4 57.1

cn 2 28.6

arpa 1 14.3

偶也是才接觸DNSTOP,上面的介紹只能是給大家拋磚引玉了,有錯誤或者不足的地方,請發站內簡訊或者跟貼。覺得不錯的,頂一下了^_^,多謝!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945033/,如需轉載,請註明出處,否則將追究法律責任。

相關文章