我有個怪異的Bind DNS伺服器的問題(贈20點)

近來我裝了一部Fedora Core 11的系統,發生一個怪怪的狀況,就是當我把Bind設定完成之後,電腦一重新開機,DNS就會無法使用一段時間,大概將近一個小時左右,這段時間只要透過這台Fedora 11的主機查詢,結果都是DNS request time out,等一段時間過了,卻又都能夠查詢到了,不知道這是什麼問題,希望有經驗的前輩們能幫我看看給予指點一下!

以下是/var/log/message關於named的內容,每次開機之後大概都是這樣的循環(因為字數過多,我把每行前面的時間刪除了):

server named[1155]: adjusted limit on open files from 1024 to 1048576

server named[1155]: found 1 CPU, using 1 worker thread

server named[1155]: using up to 4096 sockets

server named[1155]: loading configuration from '/etc/named.conf'

server named[1155]: using default UDP/IPv4 port range: [1024, 65535]

server named[1155]: using default UDP/IPv6 port range: [1024, 65535]

server named[1155]: listening on IPv4 interface lo, 127.0.0.1#53

server named[1155]: listening on IPv6 interface lo, ::1#53

server named[1155]: automatic empty zone: 127.IN-ADDR.ARPA

server named[1155]: automatic empty zone: 254.169.IN-ADDR.ARPA

server named[1155]: automatic empty zone: 2.0.192.IN-ADDR.ARPA

server named[1155]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA

server named[1155]: automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA

server named[1155]: automatic empty zone: D.F.IP6.ARPA

server named[1155]: automatic empty zone: 8.E.F.IP6.ARPA

server named[1155]: automatic empty zone: 9.E.F.IP6.ARPA

server named[1155]: automatic empty zone: A.E.F.IP6.ARPA

server named[1155]: automatic empty zone: B.E.F.IP6.ARPA

server named[1155]: command channel listening on 127.0.0.1#953

server named[1155]: command channel listening on ::1#953

server named[1155]: the working directory is not writable

server named[1155]: zone 0.in-addr.arpa/IN: NS '0.in-addr.arpa' has no address records (A or AAAA)

Update:

還沒貼完:

server named[1155]: zone 0.in-addr.arpa/IN: loaded serial 0

server named[1155]: zone 1.0.0.127.in-addr.arpa/IN: NS '1.0.0.127.in-addr.arpa' has no address records (A or AAAA)

server named[1155]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0

Update 2:

server named[1155]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: NS '1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa' has no address records (A or AAAA)

Update 3:

server named[1155]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0

server named[1155]: zone localhost.localdomain/IN: loaded serial 0

server named[1155]: zone localhost/IN: loaded serial 0

server named[1155]: running

拜託各位先進幫忙指點了!

Update 4:

另外,在重開機後查詢會有以下的錯誤訊息:

Jan 25 10:37:48 server named[13354]: network unreachable resolving 'www.hinet.net/A/IN': 2001:500:2f::f#53

Jan 25 10:37:48 server named[13354]: network unreachable resolving 'dlv.isc.org/DLV/IN': 2001:500:e::1#53

等等................

Update 5:

順道問一下,跟dnsmasq這個服務有關嗎?

Update 6:

您好,感謝您的指點,我照著您的說法操作,將IPv6關閉之後還是一樣:

[root@server woodrew]# nslookup

> server 192.168.0.101

Default server: 192.168.0.101

Address: 192.168.0.101#53

> www.hinet.net

;; connection timed out; no servers could be reached

Update 7:

但如果我用nslookup並且指定server localhost,就立刻可以查詢

[root@server woodrew]# nslookup

> server localhost

> www.hinet.net

Server: localhost

Address: 127.0.0.1#53

Non-authoritative answer:

Name: www.hinet.net

Address: 203.66.88.89

Name: www.hinet.net

Address: 61.219.38.89

Update 8:

多謝您的指點

但是基本上192.168.0.101就是SERVER的IP,是直接設定的靜態虛擬IP,而且基本上ping外界或者在X Window裡開啟網頁都是沒有問題的,當然在ifconfig裡面也是看得到本機的IP就是192.168.0.101

所以您所提到的狀況基本上都是OK的!

Update 9:

另外,我的/etc/named.conf設定檔中,已經設定了以下兩個參數:

listen-on port 53 { any; };

allow-query { any; };

所以就算從外部透過ip設定dns伺服器,應該也查詢得到才對啊?

我還測試了將iptable關閉,依然無法再重開機之後立刻查詢Domain,總是出現

;; connection timed out; no servers could be reached

Update 10:

謝AYO

我已經將SELinux和iptables都關閉了

但測試的結果依然一樣.............

resolv.conf設定的是我們So-net的dns 61.64.127.1及61.64.127.2

至於hosts裡面要設定什麼?裡面只有127.0.0.1對應localhost的最原始設定,我要怎麼設定192.168.0.101(這個ip是fedora 11這台主機的虛擬ip)?

Update 11:

另外,之前我用的版本是Fedora 6,完全相同的設定方式都沒有出過這樣的問題~

Update 12:

換了Fedora 12,問題竟然就沒了..............

是Fedora 11的Bind有bug吧?

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    您好,誠摯的來回答您的問題 :

    您的問題在下看過了,

    當然也看了您貼的 /var/log/message log,

    在下建議您這麼做,

    您根本沒有設定 IPv6 Address,

    所以直接把 IPv6 關掉即可!!

    反正 IPv6 很少人用!!

    對您根本不影響!!

    這樣您的 DNS Server 就好了!!

    如此而已!!

    想知道 IPv4 & IPv6 差別 & 應用等等相關,

    請您參照 AYO阿佑 以下的這篇教學

    IPv4 IPv6 & 虛擬IP 和 真實IP 應用方式_釋疑

    http://tw.myblog.yahoo.com/kain-0913/article?mid=2...

    以上 AYO 阿佑

    2010-01-28 11:25:40 補充:

    看過您延伸的問題了!!

    一整個囧呀~~~~~

    您有看到您問題當中說的關鍵嗎??

    但如果我用nslookup並且指定server localhost,就立刻可以查詢

    表示啥呢??

    DNS 確實已經 OK .... 這是毫無疑問的!!!

    那您的罩門在哪??

    localhost = 127.0.0.1 又叫做 loop 本機端迴路

    那您的這個 IP 192.168.0.101,是否有設定好呢??

    應該要在 IPv4 的 ifconfig 查詢當中 有查的到這個 IP 喔!!

    亦或者問您,您的網路是否是通的??

    以上 AYO 阿佑

    2010-01-28 13:45:52 補充:

    看過您的問題了!!

    您有足夠的功力~~~

    那在下就可以說明其他的幾個問題點 :

    A. 請確認 SELinux,甚至乾脆直接關閉這個

    B. 進行測試的時候,iptables 直接做關閉測試

    C. 您的 /etc/hosts 這個檔案當中,是否有加上 192.168.0.101 相關的設定

    D. 因為您 nslookup 指向的 Server 是 192.168.0.101,

    有可能直接就找 /etc/hosts 因為這個檔案又叫做 本機端 DNS

    E. 您再看一下 /etc/resolv.conf 這個檔案,

    設定的指向 DNS 為何 ??

    2010-01-28 13:45:55 補充:

    既然 ip 有設定對,就不需要查了,

    您的

    listen-on port 53 { any; };

    allow-query { any; };

    當然也是沒有問題的!!

    由於您的功力夠~~~ 在下才有辦法講延伸的這些,

    因為很多網友們 問 Linux 的問題時,姑且不論 功力是否足夠!!

    很多連自己想問什麼都搞不清楚!!

    因此 AYO阿佑 回答的時候,只能以概略方向說明,

    您功力夠的話,請看看 A ~ E 項,去確認一下

    在下手上 多台 DNS 伺服器 (皆營運伺服器),

    您的問題,在下倒是 很少看!! 您確實遭遇到有點囧的狀況~~~ 噁噁~~

    以上 AYO 阿佑

    Source(s): 自己+業界多年經驗+電腦週邊急救團, 自己+業界多年經驗, 自己+業界多年經驗, 自己+業界多年經驗
  • ayu
    Lv 5
    1 decade ago

    很多UNIX AP會預設優先嘗試ipv6 connection, 失敗後再嘗試改用ipv4,

    由於一般家用/企業用網路根本不具備IPv6, 最好是將OS的IPv6關掉,

    這個問題在幾年前很嚴重, 現在大多改良過, 不會忘記去找v4而直接time-out.

    建議你把 resolv.conf 只設一筆 nameserver 127.0.0.1

    以避免可能轉到 so-net 去查而混淆了線索.

    版大以前用FC6時也有 the working directory is not writable 訊息嗎?

Still have questions? Get your answers by asking now.