![使用 Ubuntu Server 20.04 正確綁定內部和外部網路的 DNS 配置](https://rvso.com/image/762124/%E4%BD%BF%E7%94%A8%20Ubuntu%20Server%2020.04%20%E6%AD%A3%E7%A2%BA%E7%B6%81%E5%AE%9A%E5%85%A7%E9%83%A8%E5%92%8C%E5%A4%96%E9%83%A8%E7%B6%B2%E8%B7%AF%E7%9A%84%20DNS%20%E9%85%8D%E7%BD%AE.png)
我在小學教育辦公室工作,我正在使用 Ubuntu Server 20.04 設定本地伺服器以供內部和外部使用。所有學校和辦公室都屬於國家網路「.sch.gr」。網路已為我們的辦公室分配了網域 dipe****.sch.gr,我們的外部 IP 為 81.186.21.**。外面的一切都正常。伺服器的內部ip是10.145.252.10。我希望來自 LAN 的電腦在輸入 dipe****.sch.gr 時解析為內部 IP 10.145.252.10。這可能嗎?我為此安裝了 Bind,但找不到正確的配置。有人可以幫忙嗎?
答案1
是的,這是可能的。 ISC BIND 有一個特殊功能,稱為「視圖」。例如,參見這裡和這裡。
基本上您執行以下操作。
您需要兩個區域文件,一個用於「外部」用戶端,另一個用於「內部」用戶端。我假設您已經為“外部”客戶端配置了它。比方說,配置是這樣的:
zone "dipe****.sch.gr" IN {
type master;
file "pri/dipe****.sch.gr.zone";
};
你把它改成:
view "internal" {
match-clients { 10.0.0.0/8; };
zone "dipe****.sch.gr" IN {
type master;
file "pri/dipe****.sch.gr.zone_int";
};
};
view "external" {
match-clients { any; };
recursion no;
zone "dipe****.sch.gr" IN {
type master;
file "pri/dipe****.sch.gr.zone";
};
};
請注意,您目前的區域配置已移轉到外部視圖。另請注意,視圖的順序很重要,內部視圖必須出現在外部視圖之前,因為外部視圖定義在匹配客戶端中有一個通配符包羅萬象。
然後,來自 10.xxx 的 DNS 查詢將從檔案「dipe****.sch.gr.zone_int」得到回應,這是您配置私人位址的位置。來自與 10.xxx 不符的客戶端的所有查詢都將從「dipe****.sch.gr.zone」(用於公共位址)得到答覆。
如果您的內部用戶端也存在於其他網路(192.168.xx、172.16.xx)中,請將它們新增至match-clients
內部視圖。您也可以設定 acl 並將其放入 match-clients 中,而不是直接在視圖中指定它們。