Bind

DN_小號Dñ小號DNS乙_ñD9乙一世ñD9BIND9客戶端請求外部域名時轉發到外部IP

  • March 5, 2019

所以,我有一些 dns,我為我的域 yyy.com 設置了許多內部區域。而且我需要將記錄添加到提供商伺服器(主機 - 帶有要下載的配置文件,這不是像 googleDNS 8.8.8.8 這樣的 DNS)。因為他的設備請求使用域名 xxx.5060.com 或 xxy.5060.com 進行配置。我認為這很容易(在 BIND8 中是)。

所以我將配置添加到主區域文件:

xxx.5060.com. IN A a.b.c.d
xxy.5060.com. IN A a.b.c.d

但命名檢查區返回警告: ignoring out-of-zone data 當然 DNS 不希望接收 IP 請求域。所以我開始搜尋並嘗試新的配置,例如:

xxx.5060.com. IN CNAME helper
xxy.5060.com. IN CNAME helper
helper        IN A     a.b.c.d

警告是一樣的,在Google中找到的另一個解決方案是編輯named.conf.local並添加“區域”:

zone "xxx.5060.com" {
   type forward;
   forwarders {
       a.b.c.d;
   }
}    
zone "xxx.5060.com" {
   type forward;
   forwarders {
       a.b.c.d;
   }
}
zone "yyy.com" {
   type master;
   file "/etc/bind/zones/db.yyy.com";
   allow-transfer { 10.e.e.e;
                    10.e.e.f; };
...

但是DNS沒有反應。

哦…我嘗試添加到上層配置forward only;。一樣的反應。

有什麼建議我做錯了什麼或設置了什麼?

僅轉發區域應指向能夠回答有關給定區域的請求的名稱伺服器地址。

因此,如果您希望您的名稱伺服器解析xxx.5060.com,您需要指定一個指向 的名稱伺服器的轉發區域5060.com,如下所示:

zone 5060.com {
   type forward;
   forward only;
   forwarders {
       172.247.252.11;
       115.29.220.216;
   };
};

這裡有一個小說明:我不知道該區域5060.com是否應該只是一個範例,還是您嘗試解析的實際域。如果它只是一個範例,那麼您很不幸,因為5060.com確實存在,並且上面範例中的 IP 地址已註冊為名稱伺服器。

如果您嘗試解析的主機確實存在,上面的範例應該可以工作。如果沒有,那麼這不是實現您想要的“好”方式。您不能將主機名“注入”到您不擁有的域中。您的選擇如下:

您可以將您的名稱伺服器設置為5060.com.

這樣,您可以在該區域中定義您想要的任何主機。這有幾個缺點:

  1. 您定義的主機將僅對使用您的伺服器(並且只有該伺服器)作為 DNS 伺服器的電腦可見。您的更改(自然)不會傳播到其他 DNS 伺服器。
  2. 您的區域文件中不存在的任何主機定義都將消失:您不能“添加”主機名並使您的 DNS 伺服器向“真實”伺服器詢問其餘的主機名。
  3. 如果您的伺服器可以從 Internet 訪問,您必須注意不要將虛假配置傳播給毫無戒心的客戶端。

定義一個虛擬域

您可以做的另一件事是定義一個以 開頭5060.com但實際上是您的內部域的虛擬域,例如5060.com.ismine. 在此域中定義您想要的主機,並將客戶端電腦中的 DNS 搜尋後綴設置為ismine. 這樣,如果通過“官方”DNS 伺服器找不到主機,客戶端將嘗試保留帶有.ismine後綴的主機名,您的 DNS 伺服器可以為他們提供您喜歡的主機名。這種方法也有一些缺點:

  1. 與之前的方法一樣,主機名只能由使用您的 DNS 伺服器的客戶端訪問。如果他們有備用 DNS,它將無法工作(至少在他們詢問其他 DNS 伺服器時不會)。
  2. 您不能重新定義主機名,因為客戶端將首先嘗試註冊的名稱伺服器,並且只有在未找到主機名時才會嘗試應用後綴。
  3. 您必須能夠更改客戶端的 DNS 解析配置。
  4. 如果您的伺服器是可從 Internet 訪問的 DNS 伺服器,您可能不希望將內部區域傳播到外部客戶端。

如果我正確理解您的文章,則您無法修改hosts設備上的本地文件,因此如果上述方法對您不起作用,那麼您或多或少不走運。

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