DN_小號Dñ小號DNS乙_ñD9乙一世ñD9BIND9客戶端請求外部域名時轉發到外部IP
所以,我有一些 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
.這樣,您可以在該區域中定義您想要的任何主機。這有幾個缺點:
- 您定義的主機將僅對使用您的伺服器(並且只有該伺服器)作為 DNS 伺服器的電腦可見。您的更改(自然)不會傳播到其他 DNS 伺服器。
- 您的區域文件中不存在的任何主機定義都將消失:您不能“添加”主機名並使您的 DNS 伺服器向“真實”伺服器詢問其餘的主機名。
- 如果您的伺服器可以從 Internet 訪問,您必須注意不要將虛假配置傳播給毫無戒心的客戶端。
定義一個虛擬域
您可以做的另一件事是定義一個以 開頭
5060.com
但實際上是您的內部域的虛擬域,例如5060.com.ismine
. 在此域中定義您想要的主機,並將客戶端電腦中的 DNS 搜尋後綴設置為ismine
. 這樣,如果通過“官方”DNS 伺服器找不到主機,客戶端將嘗試保留帶有.ismine
後綴的主機名,您的 DNS 伺服器可以為他們提供您喜歡的主機名。這種方法也有一些缺點:
- 與之前的方法一樣,主機名只能由使用您的 DNS 伺服器的客戶端訪問。如果他們有備用 DNS,它將無法工作(至少在他們詢問其他 DNS 伺服器時不會)。
- 您不能重新定義主機名,因為客戶端將首先嘗試註冊的名稱伺服器,並且只有在未找到主機名時才會嘗試應用後綴。
- 您必須能夠更改客戶端的 DNS 解析配置。
- 如果您的伺服器是可從 Internet 訪問的 DNS 伺服器,您可能不希望將內部區域傳播到外部客戶端。
如果我正確理解您的文章,則您無法修改
hosts
設備上的本地文件,因此如果上述方法對您不起作用,那麼您或多或少不走運。