Ubuntu部署DNS服務器
引言
管理服務器配置和基礎設施的一個重要部分包括通過建立正確的域名系統(DNS) ,維護一種按名稱查找網絡接口和 IP 地址的簡單方法。 使用全限定域名(fqdn)而不是 IP 地址來指定網絡地址可以簡化服務和應用程序的配置,並提高配置文件的可維護性。 為您的專用網絡設置您自己的 DNS 是改進服務器管理的好方法。
在本教程中,我們將介紹如何使用 Ubuntu 18.04上的 BIND 名稱服務器軟件(BIND9)設置內部 DNS 服務器,這些服務器可以用來解析私有主機名和私有 IP 地址。 這提供了一種管理內部主機名和私有 IP 地址的核心方法,當您的環境擴展到多個主機時,這是必不可少的。
本教程的 CentOS 版本可以在這里找到。
先決條件
要完成本教程,您將需要以下基礎結構。 在同一個數據中心創建每個服務器,並啟用私有網絡:
- 18.04服務器作為主 DNS 服務器,ns1
- (推薦)第二個 Ubuntu 18.04服務器作為輔助 DNS 服務器,ns2
- 將使用您的 DNS 服務器的同一數據中心中的其他服務器
在這些服務器上,通過遵循我們的 Ubuntu 18.04初始服務器安裝指南,配置通過 sudo 用戶和防火牆的管理訪問。
如果您不熟悉 DNS 概念,建議您至少閱讀我們的管理 DNS 介紹的前三部分。
基礎設施和目標示例
為了本文的目的,我們假設以下內容:
- 我們有兩個服務器,這將被指定為我們的 DNS 名稱服務器。 在本指南中,我們將其稱為 ns1和 ns2。
- 我們有兩個額外的客戶端服務器將使用我們創建的 DNS 基礎設施。 在本指南中,我們將這兩個主機分別稱為 host1和 host2。 您可以為您的基礎設施添加任意數量的數據。
- 所有這些服務器都存在於同一個數據中心。 我們假設這是 nyc3數據中心。
- 所有這些服務器都啟用了私有網絡(位於10.128.0.0 / 16子網上)。 你可能需要為你的服務器調整這個)。
- 所有服務器都連接到一個在“ example.com”上運行的項目。 因為我們的 DNS 系統將完全內部和私有,你不必購買一個域名。 但是,使用自己的域名可能有助於避免與公共可路由域名發生沖突。
根據這些假設,我們決定使用一個使用“ nyc3.example.com”來指代我們的私有子網或區域的命名方案是有意義的。 因此,host1的私有完全限定域名(FQDN)將為 host1.nyc3.example.com。 有關詳情請參閱下表:
Host | Role | Private FQDN | Private IP Address |
---|---|---|---|
ns1 | Primary DNS Server | ns1.nyc3.example.com | 10.128.10.11 |
ns2 | Secondary DNS Server | ns2.nyc3.example.com | 10.128.20.12 |
host1 | Generic Host 1 | host1.nyc3.example.com | 10.128.100.101 |
host2 | Generic Host 2 | host2.nyc3.example.com | 10.128.200.102 |
您現有的設置將是不同的,但示例名稱和 IP 地址將用於演示如何配置 DNS 服務器以提供一個正常運行的內部 DNS。 通過用自己的主機名和私有 IP 地址替換主機名和私有 IP 地址,您應該能夠輕松地根據自己的環境調整這種設置。 在命名方案中不必使用數據中心的區域名稱,但是我們在這里使用它來表示這些主機屬於特定數據中心的專用網絡。 如果使用多個數據中心,則可以在每個數據中心內設置內部 DNS。
在本教程結束時,我們將有一個主 DNS 服務器 ns1,還可以選擇一個輔助 DNS 服務器 ns2,它將作為備份。
讓我們從安裝主 DNS 服務器 ns1開始。
在 DNS 服務器上安裝 BIND
用紅色高亮顯示的文本很重要! 它通常用於表示需要用自己的設置替換的內容,或者表示應該修改或添加到配置文件中。 例如,如果你看到類似 host1.nyc3.example.com 的東西,用你自己的服務器的 FQDN 替換它。 同樣,如果您看到 host1私有 IP,請將其替換為您自己服務器的私有 IP 地址。
在兩個 DNS 服務器上,ns1和 ns2,通過輸入以下命令更新 apt 包緩存:
- sudo apt-get update
現在安裝 BIND:
- sudo apt-get install bind9 bind9utils bind9-doc
設置 Bind 為 IPv4模式
在繼續之前,讓我們將 BIND 設置為 IPv4模式,因為我們的專用網絡只使用 IPv4。 在這兩個服務器上,編輯 bind9默認設置文件,輸入:
- sudo nano /etc/default/bind9
在 OPTIONS 參數的末尾加上“-4” ,應該如下所示:
. . .
OPTIONS="-u bind -4"
完成后保存並關閉文件。
重新啟動 BIND 以實現更改:
- sudo systemctl restart bind9
現在已經安裝了 BIND,讓我們配置主 DNS 服務器。
配置主 DNS 服務器
Bind 的配置由多個文件組成,這些文件來自主配置文件 named.conf。 這些文件名以 named 開頭,因為這是 BIND 運行的進程的名稱(“域名守護進程”的縮寫)。 我們將從配置選項文件開始。
配置選項文件
在 ns1上,打開 named.conf.options 文件進行編輯:
- sudo nano /etc/bind/named.conf.options
在現有選項塊之上,創建一個稱為“受信任”的新 ACL (訪問控制列表)塊。 在這里,我們將定義一個客戶機列表,允許來自這些客戶機的遞歸 DNS 查詢(即與 ns1位於同一數據中心的服務器)。 使用我們的示例私有 IP 地址,我們將把 ns1、 ns2、 host1和 host2添加到可信客戶機列表中:
acl "trusted" {
10.128.10.11; # ns1 - can be set to localhost 10.128.20.12; # ns2 10.128.100.101; # host1 10.128.200.102; # host2 }; options { . . .
現在我們有了可信的 DNS 客戶端列表,我們需要編輯選項塊。 目前,塊的開始看起來如下:
. . .
};
options {
directory "/var/cache/bind";
. . .
}
在目錄指令下面,添加突出顯示的配置行(並替換適當的 ns1 IP 地址) ,這樣它看起來就像這樣:
. . .
};
options {
directory "/var/cache/bind";
recursion yes; # enables resursive queries allow-recursion { trusted; }; # allows recursive queries from "trusted" clients listen-on { 10.128.10.11; }; # ns1 private IP address - listen on private network only allow-transfer { none; }; # disable zone transfers by default forwarders { 8.8.8.8; 8.8.4.4; }; . . . };
完成后,保存並關閉 named.conf.options 文件。 上面的配置指定只有您自己的服務器(“受信任的”服務器)才能夠查詢您的 DNS 服務器的外部域。
接下來,我們將配置本地文件,以指定我們的 DNS 區域。
配置本地文件
在 ns1上,打開 named.conf.local 文件進行編輯:
- sudo nano /etc/bind/named.conf.local
除了一些注釋,文件應該是空的。 在這里,我們將指定正向和反向區域。 Dns 區域指定管理和定義 DNS 記錄的特定范圍。 由於我們的域名都將在“ nyc3.example.com”子域名,我們將使用我們的前進區域。 因為我們的服務器的私有 IP 地址都在10.128.0.0 / 16 IP 空間,所以我們將設置一個反向區域,這樣我們就可以在這個范圍內定義反向查找。
用以下行添加轉發區域,在允許傳輸指令中用您自己的和輔助 DNS 服務器的私有 IP 地址替換區域名稱:
zone "nyc3.example.com" { type master; file "/etc/bind/zones/db.nyc3.example.com"; # zone file path allow-transfer { 10.128.20.12; }; # ns2 private IP address - secondary };
假設我們的私有子網為10.128.0.0 / 16,用以下行添加反向區域(注意,我們的反向區域名以“128.10”開頭,這是“10.128”的八位數反轉) :
. . .
};
zone "128.10.in-addr.arpa" { type master; file "/etc/bind/zones/db.10.128"; # 10.128.0.0/16 subnet allow-transfer { 10.128.20.12; }; # ns2 private IP address - secondary };
如果服務器跨越多個私有子網,但位於同一個數據中心,請確保為每個不同的子網指定一個附加區域和區域文件。 添加完所有需要的區域后,保存並退出 named.conf.local 文件。
既然我們的區域是在 BIND 中指定的,那么我們需要創建相應的正向和反向區域文件。
創建轉發區域文件
前向區域文件是我們為前向 DNS 查找定義 DNS 記錄的地方。 也就是說,當 DNS 接收到一個名稱查詢,例如“ host1.nyc3.example.com” ,它將在轉發區域文件中查找 host1的相應私有 IP 地址。
讓我們創建區域文件將駐留的目錄。 根據我們的 named.conf.local 配置,這個位置應該是 / etc / bind / zones:
- sudo mkdir /etc/bind/zones
我們將把轉發區域文件基於示例 db.local 區域文件。 使用以下命令將其復制到正確的位置:
- sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com
現在讓我們編輯轉發區文件:
- sudo nano /etc/bind/zones/db.nyc3.example.com
最初,它看起來像下面這樣:
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost. ; delete this line
@ IN A 127.0.0.1 ; delete this line
@ IN AAAA ::1 ; delete this line
首先,您需要編輯 SOA 記錄。 將第一個“ localhost”替換為 ns1的 FQDN,然后將“ root.localhost”替換為“ admin.nyc3.example.com”。 每次編輯區域文件時,需要在重新啟動指定的進程之前增加串行值。 我們會把它增加至「3」。 現在應該是這樣的:
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial . . .
接下來,刪除文件末尾的三條記錄(在 SOA 記錄之后)。 如果您不確定要刪除哪些行,它們將被標記為上面的“ delete this line”注釋。
在文件的末尾,用以下行添加您的名稱服務器記錄(用您自己的名稱替換這些名稱)。 請注意,第二欄指明這些是“ NS”記錄:
. . .
; name servers - NS records
IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com.
現在,為屬於這個區域的主機添加 a 記錄。 這包括任何名稱以“。 Nyc3.example.com 」(取代姓名及私人 IP 地址)。 使用我們的示例名和私有 IP 地址,我們將為 ns1、 ns2、 host1和 host2添加 a 記錄,如下所示:
. . .
; name servers - A records
ns1.nyc3.example.com. IN A 10.128.10.11 ns2.nyc3.example.com. IN A 10.128.20.12 ; 10.128.0.0/16 - A records host1.nyc3.example.com. IN A 10.128.100.101 host2.nyc3.example.com. IN A 10.128.200.102
保存並關閉 db.nyc3.example.com 文件。
我們的最后一個前進區域文件的例子如下:
$TTL 604800
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; ; name servers - NS records IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com. ; name servers - A records ns1.nyc3.example.com. IN A 10.128.10.11 ns2.nyc3.example.com. IN A 10.128.20.12 ; 10.128.0.0/16 - A records host1.nyc3.example.com. IN A 10.128.100.101 host2.nyc3.example.com. IN A 10.128.200.102
現在讓我們移動到反向區域文件。
創建反向區域文件
反向區域文件是我們為反向 DNS 查找定義 DNS PTR 記錄的地方。 也就是說,當 DNS 接收到 IP 地址“10.128.100.101”的查詢時,它將在反向區域文件中查找,以解析相應的 FQDN,在本例中為“ host1.nyc3.example.com”。
在 ns1上,對於 named.conf.local 文件中指定的每個反向區域,創建一個反向區域文件。 我們將根據示例 db. 127區域文件創建反向區域文件。 使用以下命令將其復制到正確的位置(替換目標文件名,使其與反向區域定義匹配) :
- sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128
編輯與 named.conf.local 中定義的反向區域相對應的反向區域文件:
- sudo nano /etc/bind/zones/db.10.128
最初,它看起來像下面這樣:
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost. ; delete this line
1.0.0 IN PTR localhost. ; delete this line
與轉發區域文件的方式相同,您將需要編輯 SOA 記錄並增加序列值。 它應該看起來像這樣:
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial . . .
現在刪除文件末尾的兩條記錄(在 SOA 記錄之后)。 如果您不確定要刪除哪些行,它們將被標記為上面的“ delete this line”注釋。
在文件的末尾,用以下行添加您的名稱服務器記錄(用您自己的名稱替換這些名稱)。 請注意,第二欄指明這些是“ NS”記錄:
. . .
; name servers - NS records
IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com.
然后為您正在編輯的區域文件的子網中的 IP 地址的所有服務器添加 PTR 記錄。 在我們的示例中,這包括所有主機,因為它們都在10.128.0.0 / 16子網上。 請注意,第一列由服務器私有 IP 地址的最后兩個八位字節組成,順序顛倒。 一定要用名字和私有 IP 地址來匹配你的服務器:
. . .
; PTR Records
11.10 IN PTR ns1.nyc3.example.com. ; 10.128.10.11 12.20 IN PTR ns2.nyc3.example.com. ; 10.128.20.12 101.100 IN PTR host1.nyc3.example.com. ; 10.128.100.101 102.200 IN PTR host2.nyc3.example.com. ; 10.128.200.102
保存並關閉反向區域文件(如果需要添加更多反向區域文件,請重復此部分)。
最后一個反向區域文件的例子如下所示:
$TTL 604800
@ IN SOA nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; name servers IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com. ; PTR Records 11.10 IN PTR ns1.nyc3.example.com. ; 10.128.10.11 12.20 IN PTR ns2.nyc3.example.com. ; 10.128.20.12 101.100 IN PTR host1.nyc3.example.com. ; 10.128.100.101 102.200 IN PTR host2.nyc3.example.com. ; 10.128.200.102
我們已經完成了文件的編輯,所以接下來我們可以檢查文件是否有錯誤。
檢查 BIND 配置語法
運行以下命令檢查 named.conf * 文件的語法:
- sudo named-checkconf
如果命名的配置文件沒有語法錯誤,則返回到 shell 提示符,並且沒有看到錯誤消息。 如果您的配置文件有問題,請查看錯誤消息和“配置主 DNS 服務器”部分,然后再次嘗試 named-checkconf。
可以使用 named-checkzone 命令檢查區域文件的正確性。 它的第一個參數指定區域名稱,第二個參數指定相應的區域文件,這兩個文件都是在 named.conf.local 中定義的。
例如,要檢查“ nyc3.example.com”前進區域配置,運行以下命令(更改名稱以匹配前進區域和文件) :
- sudo named-checkzone nyc3.example.com db.nyc3.example.com
還有查看“128.10”。 增加的。 “ arpa”反向區域配置,運行以下命令(更改數字以匹配您的反向區域和文件) :
- sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
當所有的配置和區域文件都沒有錯誤時,應該准備好重新啟動 BIND 服務。
重新啟動 BIND
重新啟動 BIND:
- sudo systemctl restart bind9
如果你已經配置了 UFW 防火牆,通過輸入:
- sudo ufw allow Bind9
您的主要 DNS 服務器現在已經設置好,可以響應 DNS 查詢。 讓我們繼續創建輔助 DNS 服務器。
配置輔助 DNS 服務器
在大多數環境中,最好設置一個輔助 DNS 服務器,該服務器將在主服務器不可用時響應請求。 幸運的是,輔助 DNS 服務器更容易配置。
在 ns2上,編輯 named.conf.options 文件:
- sudo nano /etc/bind/named.conf.options
在文件的頂部,添加 ACL 和所有可信服務器的私有 IP 地址:
acl "trusted" {
10.128.10.11; # ns1 10.128.20.12; # ns2 - can be set to localhost 10.128.100.101; # host1 10.128.200.102; # host2 }; options { . . .
在目錄指令下面,添加以下行:
recursion yes;
allow-recursion { trusted; };
listen-on { 10.128.20.12; }; # ns2 private IP address allow-transfer { none; }; # disable zone transfers by default forwarders { 8.8.8.8; 8.8.4.4; };
保存並關閉 named.conf.options 文件。 這個文件應該看起來與 ns1的 named.conf.options 文件完全一樣,只不過應該將其配置為偵聽 ns2的私有 IP 地址。
現在編輯 named.conf.local 文件:
- sudo nano /etc/bind/named.conf.local
定義與主 DNS 服務器上的主區域對應的從區域。 注意,類型是“從屬” ,文件不包含路徑,並且應該將 master 指令設置為主 DNS 服務器的私有 IP 地址。 如果您在主 DNS 服務器中定義了多個反向區域,請確保將它們全部添加到這里:
zone "nyc3.example.com" { type slave; file "db.nyc3.example.com"; masters { 10.128.10.11; }; # ns1 private IP }; zone "128.10.in-addr.arpa" { type slave; file "db.10.128"; masters { 10.128.10.11; }; # ns1 private IP };
現在保存並關閉 named.conf.local 文件。
運行以下命令檢查配置文件的有效性:
- sudo named-checkconf
檢查完畢后,重新啟動 BIND:
- sudo systemctl restart bind9
通過修改 UFW 防火牆規則允許 DNS 連接到服務器:
- sudo ufw allow Bind9
現在您已經有了專用網絡名稱和 IP 地址解析的主要和輔助 DNS 服務器。 現在必須配置客戶端服務器以使用專用 DNS 服務器。
配置 DNS 客戶端
在“受信任的” ACL 中的所有服務器都可以查詢 DNS 服務器之前,必須將每個服務器配置為使用 ns1和 ns2作為名稱服務器。 這個過程取決於操作系統,但是對於大多數 Linux 發行版來說,它需要將您的名稱服務器添加到 / etc / resolv 中。 配置文件。
18.04 Clients
在 Ubuntu 18.04中,網絡是用 Netplan 配置的,這個抽象允許你編寫標准化的網絡配置,並將其應用到不兼容的后端網絡軟件中。 要配置 DNS,我們需要編寫一個 Netplan 配置文件。
首先,通過使用 ip 地址命令查詢私有子網,找到與您的私有網絡相關的設備:
- ip address show to 10.128.0.0/16
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 10.128.100.101/16 brd 10.128.255.255 scope global eth1 valid_lft forever preferred_lft forever
在這個示例中,私有接口是 eth1。
接下來,在 / etc / netplan 中創建一個名為00-private-nameservers. yaml 的新文件:
- sudo nano /etc/netplan/00-private-nameservers.yaml
在里面,粘貼以下內容。 你需要修改私有網絡的接口、 ns1和 ns2 DNS 服務器的地址以及 DNS 區域:
注意: Netplan 對其配置文件使用 YAML 數據序列化格式。 因為 YAML 使用縮進和空格來定義其數據結構,所以請確保您的定義使用一致的縮進來避免錯誤。
network:
version: 2
ethernets:
eth1: # Private network interface nameservers: addresses: - 10.128.10.11 # Private IP for ns1 - 10.132.20.12 # Private IP for ns2 search: [ nyc3.example.com ] # DNS zone
完成后保存並關閉文件。
接下來,告訴 Netplan 使用 Netplan try 嘗試使用新的配置文件。 如果存在導致網絡丟失的問題,Netplan 會在超時后自動回滾更改:
- sudo netplan try
Warning: Stopping systemd-networkd.service, but it can still be activated by:
systemd-networkd.socket
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 120 seconds
如果在底部正確地進行了倒計時更新,那么新配置至少具有足夠的功能,不會中斷您的 SSH 連接。 按 ENTER 鍵接受新配置。
現在,檢查系統的 DNS 解析器,確定您的 DNS 配置是否已被應用:
- sudo systemd-resolve --status
向下滾動,直到看到專用網絡接口的部分。 您應該首先看到列出的 DNS 服務器的私有 IP 地址,然后是一些后備值。 你的域名應在「 DNS 域名」內:
. . .
Link 3 (eth1)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.128.10.11 10.128.20.12 67.207.67.2 67.207.67.3 DNS Domain: nyc3.example.com . . .
現在應該將客戶機配置為使用內部 DNS 服務器。
16.04和 Debian Clients
在 Ubuntu 16.04和 Debian Linux 服務器上,你可以編輯 / etc / network / interfaces 文件:
- sudo nano /etc/network/interfaces
在內部,找到 dns-nameservers 行,並在當前列表前面添加您自己的名稱服務器。 在該行下面,添加指向基礎設施基礎域的 dns-search 選項。 在我們的例子中,這就是“ nyc3.example.com” :
. . .
dns-nameservers 10.128.10.11 10.128.20.12 8.8.8.8 dns-search nyc3.example.com . . .
完成后保存並關閉文件。
現在,重新啟動網絡服務,使用以下命令應用新的更改。 確保將 eth0替換為網絡界面的名稱:
- sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0
這應該可以在不斷開當前連接的情況下重新啟動網絡。 如果它工作正常,你應該看到這樣的東西:
RTNETLINK answers: No such process
Waiting for DAD... Done
再次檢查你的設置是否通過輸入:
- cat /etc/resolv.conf
您應該在 / etc / resolv. conf 文件中看到您的名稱服務器,以及您的搜索域:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.128.10.11
nameserver 10.128.20.12
nameserver 8.8.8.8
search nyc3.example.com
您的客戶機現在已經配置為使用您的 DNS 服務器。
客戶端
在 CentOS、 RedHat 和 Fedora Linux 上,編輯 / etc / sysconfig / network-scripts / ifcfg-eth0文件。 您可能必須用主網絡接口的名稱替換 eth0:
- sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
搜索 DNS1和 DNS2選項,並將它們設置為主服務器和輔助服務器的私有 IP 地址。 添加一個帶有基礎結構基域的 DOMAIN 參數。 在這本指南中,這就是“ nyc3.example.com” :
. . .
DNS1=10.128.10.11 DNS2=10.128.20.12 DOMAIN='nyc3.example.com' . . .
完成后保存並關閉文件。
現在,通過輸入以下命令重啟網絡服務:
- sudo systemctl restart network
該命令可能會掛起幾秒鍾,但應該會很快返回提示符。
通過輸入以下命令檢查您的更改是否已應用:
- cat /etc/resolv.conf
你應該在列表中看到你的名字服務器和搜索域名:
nameserver 10.128.10.11
nameserver 10.128.20.12
search nyc3.example.com
您的客戶現在應該能夠連接並使用您的 DNS 服務器。
測試客戶端
使用 nslookup 來測試您的客戶機是否可以查詢您的名稱服務器。 您應該能夠對所有已經配置並處於“受信任” ACL 中的客戶機執行此操作。
對於 CentOS 客戶端,你可能需要安裝如下工具:
- sudo yum install bind-utils
我們可以從執行正向查找開始。
正向查找
例如,我們可以通過運行以下命令執行正向查找來檢索 host1.nyc3.example.com 的 IP 地址:
- nslookup host1
查詢“ host1”會擴展到“ host1.nyc3.example.com ,因為搜索選項設置為您的私有子域名,DNS 查詢將嘗試在其他地方尋找主機之前查找該子域名。 上面命令的輸出如下所示:
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: host1.nyc3.example.com
Address: 10.128.100.101
接下來,我們可以檢查反向查找。
反向查找
為了測試反向查找,用 host1的私有 IP 地址查詢 DNS 服務器:
- nslookup 10.128.100.101
你應該看到如下輸出:
11.10.128.10.in-addr.arpa name = host1.nyc3.example.com.
Authoritative answers can be found from:
如果所有名稱和 IP 地址都解析為正確的值,則意味着您的區域文件配置正確。 如果您收到意外的值,請確保查看主 DNS 服務器上的區域文件(例如, db.nyc3.example.com 和 db. 10.128)。
恭喜! 您的內部 DNS 服務器現在已正確設置! 現在我們將涵蓋維護您的區域記錄。
保存 DNS 記錄
現在您有了一個工作的內部 DNS,您需要維護您的 DNS 記錄,以便它們准確地反映您的服務器環境。
向 DNS 添加主機
無論何時向環境中添加主機(在同一個數據中心中) ,您都希望將其添加到 DNS。 以下是你需要采取的步驟:
主名稱伺服器
- 轉發區域文件: 為新主機添加“ a”記錄,增加“ Serial”的值
- 反向區域文件: 為新主機添加“ PTR”記錄,增加“ Serial”的值
- 將新主機的私有 IP 地址添加到“受信任的” ACL (named.conf.options)
測試你的配置文件:
- sudo named-checkconf
- sudo named-checkzone nyc3.example.com db.nyc3.example.com
- sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
然后重新裝載 BIND:
- sudo systemctl reload bind9
現在應該為新主機配置主服務器。
輔助名稱服務器
- 將新主機的私有 IP 地址添加到“受信任的” ACL (named.conf.options)
檢查配置語法:
- sudo named-checkconf
然后重新裝載 BIND:
- sudo systemctl reload bind9
輔助服務器現在將接受來自新主機的連接。
配置新主機使用您的 DNS
- 配置 / etc / resolv. conf 以使用 DNS 服務器
- 使用 nslookup 進行測試
從 DNS 中刪除主機
如果您從您的環境中刪除了一個主機,或者只是想從 DNS 中刪除它,那么只需刪除在將服務器添加到 DNS 時添加的所有內容(即與上面的步驟相反)。
總結
現在,您可以按名稱而不是 IP 地址來引用服務器的專用網絡接口。 這使得服務和應用程序的配置更加容易,因為您不再需要記住私有 IP 地址,而且文件將更容易閱讀和理解。 此外,現在你可以改變你的配置,在一個地方指向一個新的服務器,你的主要 DNS 服務器,而不是必須編輯各種分布式配置文件,這簡化了維護。
一旦您設置了內部 DNS,並且您的配置文件使用私有 fqdn 來指定網絡連接,您的 DNS 服務器得到正確的維護是至關重要的。 如果它們都不可用,那么依賴它們的服務和應用程序將無法正常工作。 這就是為什么建議您至少在一台輔助服務器上設置 DNS,並維護所有輔助服務器的工作備份。
======== End