Bind 9 -- 使用named-checkzone的SOA及NS錯誤訊息

  在Bind 9中有一個named-checkzone的指令,有網友反應使用後會出現錯誤訊息:

  例如:
[root@dns1 ~]# cd /var/named/chroot/var/named/
[root@dns1 named]# named-checkzone -d named.abc.com.tw named.abc.com.tw
......
zone named.abc.com.tw/IN: has 0 SOA records
zone named.abc.com.tw/IN: has no NS records
  原本很直覺得反應,應該是設定檔(/etc/named.conf或/var/named/chroot/var/named/named.abc.com.tw)有問題,一般來說Bind 9的DNS問題不外乎這是從這兩個地方下手。還很認真的看著網友的設定檔。但有個小奇怪的地方,網友反應,雖然有錯誤訊息,但Bind 9載入named.abc.com.tw執行確正常。

  在我的Linux上重覆測試,測了三台不同的Linux版本的Bind 9,從設定檔/etc/named.conf到zonefile(named.abc.com.tw),怪了,測不出來有什麼問題!上網搜尋了一下,看到國內外好多人有同樣的問題,但都沒有解決之道,奇了,這是什麼問題?

  但有發現一個現象,三台Linux中只要使用named-checkzone都出現一樣的錯誤訊息。這是怎麼了,怎麼可能?我想,那問題應該是出在named-checkzone?那就來好好的man一下吧!

[root@dns1 named]#man named-checkzone

OPTIONS
-d
  Enable debugging. # 啟動除錯

-q
  Quiet mode - exit code only. # 安靜模式

-j
  When loading the zone file read the journal if it exists.
  # 如果*.jnl存在,在載入zone檔案讀取*.jnl

-c class
  Specify the class of the zone. If not specified "IN" is assumed.
  # 如果你的zone檔案沒使用IN語法,例如:「IN A 192.168.10.1」,但你使用簡寫 「A 192.168.10.1」,請下這個參數。

zonename
  The domain name of the zone being checked.

filename
  The name of the zone file.
  玩一玩參數,有幾個比較重要參數的我列出來。但問題還是沒解決。又找了ISC原始指令文件,嗯,跟man一樣,但我也注意到了一個地方,原本在測試時,只是將網友的指令Copy起來,直接paste到putty中測試,也沒多想什麼,但為什麼named-checkzone中一定要下「兩次」路徑呢?

  想著,看著Monitor:zonename、filename、zonename、filename???ㄝ,我想通了,文件其實有交代清楚,只是我們沒了解清楚。
zonename
  指定一個在zone裡的domain name來開始檢查。

filename
  指定zone檔案的名稱。
  測試後,BingGo,正確解答,正確指令如下:
錯誤指令:
[root@dns1 named]# named-checkzone -d named.abc.com.tw named.abc.com.tw
正確指令:
[root@dns1 named]# named-checkzone -d abc.com.tw named.abc.com.tw
  第一個zone指的是「domain name」不是單純的file anme。這樣了解嗎?

  我又再一次見證了男人(man)的實力。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。