2005年12月17日 星期六

DNS 偶而查詢不到?

之前在DNS 自我監控寫了script定時查詢特定FQDN,後來因為想起有人抱怨偶而就會有某個FQDN連不到,就改了一下改成向多個DNS Server查詢一個特定的FQDN,這才發現一些徵兆,除了一兩次是要查詢的FQDN負責的DNS Server查不到,所以自然會有問題的情況以外,有時向Hinet的DNS 168.95.1.1查詢竟然也會查詢不到?!雖然不確定是網路還是168.95.1.1或是其他的問題,但又想起上次參加TWNIC DNS教育課程的時候,講師也說設 forwarders 不見得會比較快,於是乾脆就把 forwarders 拿掉了,目前看起來似乎真的有比較正常,真是奇妙。



至於上次說自行重啟怕會有問題,所以現在只敢用 rndc flush 把 cache 清掉,這樣查詢不到的 negative cache 也就清掉了,不過這招似乎只對這種偶發性查不到某個特定FQDN有效就是了,若是其他問題應該不會有效果,可能還會因為清掉 cache 造成一點頻寬浪費。



以下是script:








    #!/bin/sh

    #

    # 測試特定的 FQDN 是否查詢得到,若有問題則 log 並 mail

    #

    DATE=`date "+%Y%m%d %H:%M"`

    HOST=`hostname -s`

    SERVER=`hostname -f`

    LOG=/var/log/named/fqdn_check.log

    MAIL="admin@domain.com.tw"

    TMPFILE=/tmp/`date "+%Y%m%d%H%M%S"`_fqdn_check.tmp

    MAIL_SUBJECT=""



    # 要測試的 FQDN

    FQDN="www.domian.com.tw."



    # 全部要測試的 DNS

    DNSLIST="127.0.0.1

    dns.hinet.net.

    dns.seed.net.tw."



    # 若測試任一 FQDN 有問題則設為 1,最後依此變數決定有沒有問題

    CHECK=0



    # 依序測試 DNLIST 裡的各個 FQDN

    for DNS in $DNSLIST

    do



    echo >> $TMPFILE

    echo "# host $FQDN $DNS" >> $TMPFILE

    host $FQDN $DNS| grep address >> $TMPFILE

    if [ $? -ne 0 ] ; then

    CHECK=1

    echo $DATE $HOST $FQDN dns query fail: $DNS >> $LOG

    MAIL_SUBJECT="$MAIL_SUBJECT$DNS "

    fi



    done





    # 若有任何一個 FQDN 測試有問題,則 E-mail 通知

    if [ $CHECK -eq 1 ] ; then

    MAIL_SUBJECT="[$HOST] $DATE $FQDN dns query error: $MAIL_SUBJECT"

    mail -s "$MAIL_SUBJECT" $MAIL < $TMPFILE

    host $FQDN 127.0.0.1| grep address

    if [ $? -ne 0 ] ; then

    /usr/sbin/rndc flush

    fi

    fi



    rm $TMPFILE







3 則留言:

  1. 有用你的程式來測試
    結果有出現錯誤訊息
    date: extra operand `%H:%M\241\250'
    Try `date --help' for more information.
    date: invalid date `\241\247+%Y%m%d%H%M%S\241\250'
    ./qq1.sh: line 11: unexpected EOF while looking for matching `"'
    ./qq1.sh: line 51: syntax error: unexpected end of file

    請問是否可提供修正
    一個也要管理dns的人

    謝謝喔

    回覆刪除
  2. <p>To rock:</p>
    <p>1. 你的系統 locale 是否不是 big5?date 後面的參數建議你在編輯器裡手動輸入試試</p>
    <p>2. 11行用 MAIL_SUBJECT="" 用兩個雙引號試試<br />
    3. 改掉以上的錯誤以後如果 51行的錯誤訊息還有出現,再檢查一下漏了哪個該成對的符號。</p>

    回覆刪除
  3. 感謝你的指教
    我是把“ ”
    都改成 " "
    程式才可以執行
    作業系統是FEDORA 5 中文版

    回覆刪除