在維護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、下載源代碼
打開浏覽器,進入http://dnstop.measurement-factory.com/,可以看到DNSTOP的相關介紹。如果你的系統沒有 libpcap庫的話(用find / -name “libpcap*”搜一下就知道有沒有了),在安裝DNSTOP前還需要安裝libpcap庫。不管三七二十一,先把這兩個源碼包下載下來再說:
libpcap-0.7.2.tar.gz
http://www.tcpdump.org/release/libpcap-0.7.2.tar.gz
dnstop-20030929.tar.gz
http://dnstop.measurement-factory.com/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,上面的介紹只能是給大家拋磚引玉了,有錯誤或者不足的地方,請發站內短信或者跟貼。覺得不錯的,頂一下了^_^,多謝!!!
com 4 57.1
cn 2 28.6
arpa 1 14.3
偶也是才接觸DNSTOP,上面的介紹只能是給大家拋磚引玉了,有錯誤或者不足的地方,請發站內短信或者跟貼。覺得不錯的,頂一下了^_^,多謝!!!