Linux

在 debian 上配置 BIND DNS

  • October 18, 2011

我正在嘗試配置配置 BIND 以在我的本地 Debian 機器上使用,我將使用它作為開發和測試環境。

首先,我使用的是 Debian 6.x

$$ Squeeze $$和 BIND 9. BIND 伺服器是在 Debian 安裝過程中自動設置的。 對於這個問題,假設我想創建一個名為example.com的域,我將能夠從執行 BIND 的同一台機器和我的本地網路訪問該域。

這是我到目前為止所做的:

在 /etc/bind named.conf.local(包含在 name.conf 中)中,我輸入以下內容:

zone "cms1.com" {
   type master;
   file "/etc/bind/db.example.com";
};

在 /etc/bind/db.example.com 我放了以下內容:

$TTL    3600
@   IN  SOA example.com. admin.example.com. (
           2011101601  ; Serial
           3600        ; Refresh 1h
           60      ; Retry 1m
           86400       ; Expire 1d
           600 )       ; Negative Cache TTL 1h
;
@   IN  NS  localhost.

;
example.com.    IN CNAME localhost.
example.com.    IN A 127.0.0.1

請注意,我將名稱伺服器設置為 localhost。我不知道這是對還是錯。

然後我將適當的虛擬主機指令添加到 Apache 並使用命令重新啟動 BIND /etc/init.d/bind9 restart

但是,當我 ping 或瀏覽到 example.com 時,我訪問的是 Internet 上的 example.com,而不是我機器上的那個。

我究竟做錯了什麼?


為了聽取 AlexD 的建議,我nameserver 127.0.0.1在此處顯示的 /etc/resolv.conf 中的所有其他指令之前添加了:

# Generated by NetworkManager
nameserver 127.0.0.1
domain cm.flowja.com
search cm.flowja.com
nameserver 65.183.0.76
nameserver 65.183.0.86

其他指令由 Debian 自動生成。

這是我編輯 resolve.conf 並重新啟動 BIND 後的響應。

; <<>> DiG 9.7.3 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 60115
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com.           IN  A

;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct 16 16:06:29 2011
;; MSG SIZE  rcvd: 29

現在看來,將nameserver 127.0.0.1指令添加到 resolv.conf 實際上導致 example.com 解析到我的 BIND 伺服器,但仍然出現問題。

想法?

您的原始配置:

$TTL    3600
@   IN  SOA example.com. admin.example.com. (
           2011101601  ; Serial
           3600        ; Refresh 1h
           60      ; Retry 1m
           86400       ; Expire 1d
           600 )       ; Negative Cache TTL 1h
;
@   IN  NS  localhost.

;
example.com.    IN CNAME localhost.
example.com.    IN A 127.0.0.1

應該改成這樣:

$TTL    3600
@   IN  SOA example.com. admin.example.com. (
           2011101801  ; Serial
           3600        ; Refresh 1h
           60      ; Retry 1m
           86400       ; Expire 1d
           600 )       ; Negative Cache TTL 1h
;
@   IN  NS  ns1.example.com.

;
example.com.        IN A 127.0.0.1
ns1.example.com.    IN A 127.0.0.1
www.example.com.    IN CNAME example.com.

(您是否注意到我也更改了序列號?對於您對配置所做的每一次更改,您都需要更改序列號。它的格式是 YEARMMDD 和一個從 01 開始的兩位數 ID,每次進行更改時都需要 +1 . 例如,如果您今天對配置進行了第二次更改,則應將其更改為 2011101802,第三次更改應為 2011101803,或者如果您明天進行更改,則應為 2011101901 等等。這非常重要! )

還要確保在您的網路伺服器上,您有一個配置為 example.com 的虛擬主機

檢查您的 /etc/resolv.conf 是否指向您的本地 BIND 並且首先具有 nameserver 127.0.0.1 條目。如果您在 Gnome 中使用 debian,則網路管理器可能會覆蓋 resolv.conf。一種解決方案是通過 GUI 將名稱伺服器添加到網路管理器,但要確保它在列表中的第一位。

引用自:https://serverfault.com/questions/321947