Domain-Name-System

在 BIND 中遞歸前向一個區域

  • September 21, 2012

我有一個設置了 BIND 的 VPS。它可以很好地工作幾個月。

最近我想設置另一個 DNS 程序來管理foo.example.org這個 VPS 上的子域。我在 dns.he.net 中設置了這些:

foo.example.org。在 NS vps.exmaple.org 中。
vps.example.org。在一個 xx.xx.xx.xx

由於 BIND 偵聽 53/udp,因此我將其配置為偵聽埠 5353 和named.conf

區域“foo.example.org”{
向前輸入;
轉發器{ 127.0.0.1 埠 5353; };
};

我認為此配置會將所有查詢轉發*.foo.example.org到第二個 DNS 程序。但是當我測試它…

在 VPS 本身上:

dig bar.foo.example.org @127.0.0.1 -p5353效果很好。

dig bar.foo.example.org @127.0.0.1效果很好。

在我的筆記型電腦上:

dig bar.foo.example.org @vps.example.org -p5353效果很好。

dig bar.foo.example.org @vps.example.org效果很好。

dig foo.example.org @8.8.8.8 -t ns效果很好。

dig bar.foo.example.org @8.8.8.8返回SERVFAIL

將 8.8.8.8 替換為其他 DNS 伺服器得到相同的結果,並且 TTL 沒有任何問題。

有人知道我的配置有什麼問題嗎?這是更多資訊:

其他 BIND9 配置:

選項 {
目錄“/var/cache/bind”;
通知是;
允許轉移 { xx.xx.xx.xx; };
dnssec-啟用是;
dnssec 驗證自動;
auth-nxdomain 沒有;# 符合 RFC1035
聽 V6 { 任何; };
遞歸是的;
允許遞歸{任何;};
};

而且,具體來說,“第二個 DNS 程序”是 iodine,它通過 DNS 查詢建立 IP 隧道。我按照本指南在 BIND9 後面設置它:http: //dev.kryo.se/iodine/wiki/TipsAndTricks#RunningiodinebehindBIND9

PS:我嘗試了另一台設置了 dnsmasq 的伺服器並server=/foo.example.org/127.0.0.1#5353用於測試。仍然會出錯。

有人可以幫忙嗎?提前致謝。

首先,我建議您使用 5353 以外的其他埠作為 DNS 伺服器的備用埠。5353 與 zeroconf/mDNS 衝突。

它僅在您用作遞歸解析器時才起作用的原因vps.example.org是因為這是唯一被告知需要轉到埠 5353 上的特殊 DNS 伺服器才能找到的遞歸伺服器foo.example.org

因為您不能在NS記錄中指定埠號,所以通常不可能在 53 以外的埠上擁有權威伺服器。世界上所有的遞歸名稱伺服器都會找到相關域的 NS 記錄,並且將嘗試在埠 53 上聯繫該伺服器。如果您希望它們使用不同的埠,則必須為它們中的每一個配置指向埠 5353 的轉發區域。

順便說一句,不清楚為什麼要foo.example.org在不同埠(或 IP 地址)上的單獨名稱伺服器上託管。為什麼不將該foo.example.org區域添加到服務的同一個權威名稱伺服器example.org

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