DNS“視圖”和使用 TSIG 控制區域傳輸
執行綁定 9.8.2。我已經使用 DNS 主伺服器/伺服器對成功設置了“視圖”的 TSIG 密鑰。對於每個視圖,區域傳輸在 2 個伺服器之間按預期工作。在我們將其投入生產之前,我需要澄清一些事情。我們的產品伺服器還允許區域傳輸到從伺服器之外的其他一些伺服器。我們有一個看起來與此類似的 acl 設置:
other_xfer_allowed { x.x.x.x; // This is our Secondary DNS server 127.0.0.1; // localhost can make zone transfers x.x.x.x/24; // Corporate server farm range is allowed to make zone-transfers x.x.x.x/24; // NAT pool for internal DNS server Zone Transfers }; // end of "other_xfer_allowed" ACL
在“允許傳輸”語句中,我們已經包含了該 ACL。我的問題是:
既然我們正在使用 TSIG,我是否需要與所有這些其他伺服器的管理員聯繫並向他們提供我的 TSIG 密鑰,以便他們可以請求區域傳輸?我認為需要做類似的事情,因為它需要在從伺服器上配置,但我不確定。
下一個,
我設置了視圖,以便“內部”網路上的客戶端在請求記錄時會顯示與外部客戶端不同的記錄。目前只有一個區域需要有不同的記錄。但是,我的理解是,由於視圖是基於源 IP 的,如果我只在我的“內部”視圖中包含一個區域,如果從同一個 IP 請求另一個區域的記錄,他們可能會得到一個 nxdomain回答,因為該 IP 僅限於該一種觀點。
所以,我的問題是,我是否需要在兩個視圖中都包含所有區域,以便所有客戶端都能獲得結果,即使我(目前)只有一個指向兩個不同區域文件的區域?兩個視圖中的所有其他視圖都將指向同一個區域文件,除非當然還有另一個區域我們需要為內部客戶端呈現不同的視圖。
現在,最後一個問題。
我擔心允許查詢語句。在我們的生產伺服器上,我們有一個 ACL 列表,我們稱之為“允許”。我們在全域選項中有一條允許查詢語句,僅允許來自允許 ACL 中 IP 的查詢。然而,我們在 conf 文件中的每一個區域條目也都有一個“allow-query { any; }; 語句。這難道不是違背了為查詢使用“允許”ACL 的目的嗎?這是不好的設計嗎?不是嗎? zone 聲明優先於 global 聲明?
既然我們正在使用 TSIG,我是否需要與所有這些其他伺服器的管理員聯繫並向他們提供我的 TSIG 密鑰,以便他們可以請求區域傳輸?我認為需要做類似的事情,因為它需要在從伺服器上配置,但我不確定。
首先,關於“向他們提供我的 TSIG 密鑰”:不,只生成一個密鑰並與參與設置的每個人共享它沒有多大意義。
我會說每個派對創建一個密鑰,畢竟您可以擁有任意數量的密鑰。這樣,您可以向不同的各方授予不同的訪問權限,並撤銷一方的訪問權限,而無需撤銷每個人的訪問權限。
此外,對某些事情使用 TSIG 並不一定意味著對所有事情都使用 TSIG(儘管通常更可取),如果這適用於您的場景,則可以混合使用基於 IP 和基於密鑰的訪問控制。
所以,我的問題是,我是否需要在兩個視圖中都包含所有區域,以便所有客戶端都能獲得結果,即使我(目前)只有一個指向兩個不同區域文件的區域?兩個視圖中的所有其他視圖都將指向同一個區域文件,除非當然還有另一個區域我們需要為內部客戶端呈現不同的視圖。
每個查詢只會命中一個視圖(匹配的第一個視圖)。
這意味著,如果數據在客戶端查詢命中的視圖中不可用,無論是在該視圖的區域中還是通過遞歸(如果客戶端可以使用遞歸併且他們請求它),他們就無法獲得數據。
您完全有可能需要在視圖之間複製更多區域。
我擔心允許查詢語句。在我們的生產伺服器上,我們有一個 ACL 列表,我們稱之為“允許”。我們在全域選項中有一條允許查詢語句,僅允許來自允許 ACL 中 IP 的查詢。然而,我們在 conf 文件中的每一個區域條目也都有一個“allow-query { any; }; 語句。這難道不是違背了為查詢使用“允許”ACL 的目的嗎?這是不好的設計嗎?不是嗎? zone 聲明優先於 global 聲明?
是的,
allow-query
在 a 中指定的zone
將覆蓋全域allow-query
值。對於與您的區域匹配的查詢,這意味著不使用全域設置,但是如果啟用了遞歸,那麼您還將處理與您的任何區域都不匹配的查詢。請參閱
allow-*
手冊中的設置以了解這些設置如何相互作用。