2005年7月5日 星期二

DNS log 不能大於 2GB?

近日還有遇上一件相當奇妙的事情,話說手邊有台 DNS Server 是用 Bind 9.x,因為有些特殊需求所以前陣子打開了 DNS query log(就是哪個ip在幾點幾分向DNS Server問了哪個domain name的log),大略是像這樣在 named.conf 設定檔裡設定的:



logging {

channel query_channel {

file "/var/log/dns_query.log" versions 10 size 20m;

print-time yes;

print-category yes;

};

category queries { query_channel; };

};





剛開始的時候當然也很怕這檔案會長很快,所以都會注意一下 /var 有沒有滿,還有設了20MB應該換一個檔案,留10個檔案就好,不過沒有生效都還是一個檔案到底,後來也沒力氣去研究爲什麼沒生效,就這樣平靜地過了好一陣子,直到有一天 named 就突然掛掉了,而且最奇妙的是,下指令重新啟動的話,/var/log/messages會很正常寫入正常啟動的 log,例如Bind版本啦,在哪個ip哪個port listen啦,有哪一個zone,serial是多少啦等等的,最後還會寫一行running,也有時候沒寫完所有的zone就停了沒寫running,但不管有沒有把zone寫完有沒有寫上running,就是半點錯誤訊息都沒有,而且用ps一看,其實named根本就不見了,怎麼啟動都一樣如此,那我們這時真是非常糗大!還回想了半天最近到底有作了什麼變動,把舊的設定檔蓋回去試試看,但怎麼試都沒用,差點都要想說還好這台是slave不是master,重裝一下一兩小時也許可以恢復:~~~



最後問了一下男人(man named),突然看到參數 -f (在前景跑不要變成 daemon)和 -g(輸出全部倒到標準輸出),結果用 named -u named -fg 一跑居然可以!!??這真是太奇妙了,可是也不能這樣了事啊,所以後來又試試看用 named -u named -f,跑不起來但是吐了一句檔案超過限制大小還什麼的訊息,我才猛然想到......咦,看一下之前的dns query log長了多大好了,一看檔案大約是2GB左右,不會吧Linux還是Bind也有2GB限制嗎?移掉試試...呃...果然可以了!!!那爲什麼非得用上 -f 才要告訴我啊,messages只寫了一堆正常啟動的log,就是不寫那句檔案超過限制,誰會知道是怎麼回事:~~~



我只能說,電腦真是奇妙啊!!!