1.DNS簡介
DNS:Domain Name System,領域名系統,該系統是區分互聯網中龐大的計算機,由柏克萊大學發展出一套階層式管理主機名對應 IP 的系統。由於該套系統是由柏克萊大學發展的,所以最開始叫做 Berkeley Internet Name Domain, BIND,其中Berkeley指的就是柏克萊大學,所以在下面實驗當中通過yum安裝的服務叫做bind服務。簡單來說DNS是一種因特網的通訊協議名稱,Bind 則是提供這個DNS服務的軟件。
階層式管理主機,意指每一級的域名服務器,僅解析他的下一級的域名。通過域名中的各級域找到對應的解析服務器,這樣一步步的找到最終提供服務的主機。
圖源:網絡是怎樣連接的
2.DNS服務器的部署
2.1 流程圖
2.2 正向解析文件內容
作為域名解析服務器,其最重要的功能自然而然就是將域名解析為IP地址。而完成這份工作的最主要文件就是域名解析文件。這里直接使用參考的域名解析配置文件為例(/var/named/named.localhost),說明一下域名解析配置文件中的內容。
上圖便是dhcp服務提供給我們的參考文件。
解析文件的標准記錄格式如下。
[domain] [ttl] IN [[RR type] [RR data]]
[待查數據] [暫存時間(秒)] IN [[資源類型] [資源內容]]
給的參考文件中的記錄不是標准的記錄格式,這是由於這個記錄格式中有很多是省略的。
首先是IN
由於每行記錄都有,所有第一條記錄使用后,以后記錄中可以省略。值得一提的是,在該配置文件中,這任意一個參數在一條記錄中沒有被聲明的話,則會自動繼承上一條記錄的對應參數。最經常省略的就是TTL
與 IN
。
開頭聲明的TTL 就是 time to live 的縮寫,意思就是當這筆記錄被其他 DNS 服務器查詢到后,這個記錄會保持在對方 DNS 服務器的緩存中,保持多少秒鍾的意思。
每個記錄的TTL時間可以由SOA中配置所以剩下我們需要主要配置的就剩下三個參數了。
首先說明資源類型,在該配置文件中,可配置的資源類型有六種。
- SOA:查詢管理領域名的服務器管理信息
- NS:查詢管理領域名 (zone) 的服務器主機名
- A:查詢 IP 的記錄(IPV4)
- AAAA:查詢 IP 的記錄(IPV6)
- SNAME:設定某主機名的別名 (alias)
- MX:查詢某領域名的郵件服務器主機名
在解釋這些配置資源名稱之前,首先需要明白“@”這個符號的含義。
"@"在該配置文件中代表這該域名服務器管理的域,且是完整的寫法。比如該域名解析服務器管理的是canyun.com.
這個域,則該域名解析服務器管理的主機名完整寫法就應該是XXXXXXX.canyun.com.
,代表該配置文件中所有配置的主機名都會有.canyun.com.
這個后綴,所有在后面寫主機名的時候往往就將該后綴省略。
2.2.1 SOA
SOA(Start Of Authority),主要是用於當多台服務器管理同一域名的時候,用於控制域名解析文件如何備份的。多台域名解析服務器是通過master/slave(主從)的方式進行管理。
由於SOA與域管理有關,所以[待查數據]
是領域名,樣例文件用@
代指域名。
SOA的[資源內容]
有7個參數。依次為:
-
Master DNS 服務器主機名:這個參數主要是哪部主機作為主域名解析服務器的意思。示例文件中沒有配置主機名,實際上需要寫個主機名如:dns(如果管理的是canyun.com.則全稱未dns.canyun.com.最后一個點不能少);
-
管理員的 email地址:那么管理員的 email 為何?發生問題可以聯絡這個管理員。
-
序號 (Serial):這個序號代表的是這個數據庫檔案的新舊,序號越大代表越新。 當從服務器要判斷是否主動下載新的數據庫時,就以序號是否比從服務器上的還要新來判斷,若是則下載,若不是則不下載。
-
更新頻率 (Refresh):從服務器向主服務器更新配置時間的間隔。
-
失敗重新嘗試時間 (Retry):如果因為某些因素,導致從服務器無法對主服務器達成聯機,那么在多久的時間內,從服務器會嘗試重新聯機到主服務器。
-
失效時間 (Expire):如果一直失敗嘗試時間,持續聯機到達這個設定值時限, 那么 從服務器將不再繼續嘗試聯機,並且嘗試刪除這份下載的 zone file 信息。
-
快取時間 (Minumum TTL):如果這個數據庫 zone file 中,每筆 RR 記錄都沒有寫到 TTL 快取時間的話,那么就以這個 SOA 的設定值為主。
2.2.2 A, AAAA
A類型是在查詢某個主機名的 IP,也是最長被查詢的一個資源類型標志,相當於早期的host文件。其配置方式主機名 A IP地址
,如在canyun.com.這個域中,www這個主機全程則為
www.canyun.com.
(在強調一下,點不可以去掉),簡寫則為www
。AAAA是IPV6的地址。
2.2.3 NS
要知道某個域名解析是由那一個主機提供的,則是通過NS類型表示的。配置方式域名 NS 主機名
,當然一個NS類型中寫的主機也需要一個A類型來指明該主機的對應IP反應在配置文件中則為。
canyun.com. NS dns.canyun.com.
dns.canyun.com. A XXX.XXX.XXX.XXX
2.2.4 CNAME
有時候你不想要針對某個主機名設定 A 的標志,而是想透過另外一部主機名的 A 來規范這個新主機名時,可以使用別名 (CNAME) 的設定,該資源類型主要是應用在有多台主機名指向同一IP時,當更換換ip的時候,不需要一個個更新A標志,只需要通過CNAME指向提供服務的主機名即可。
2.2.5 MX
MX 是 Mail eXchanger (郵件交換) 的意思,通常你的整個領域會設定一個 MX,代表所有寄給這個領域的 email 應該要送到后頭的email server 主機名上頭才是。MX后面的數字數字代表優先級,數字越小優先級越高。與NS記錄相同,有一個MX記錄,也應該有一個對應的A記錄。
2.3 配置實操
1.下載服務
[root@localhost ~]# yum install bind bind-utils.x86_64 -y
…………
Dependency Updated:
bind-libs.x86_64 32:9.11.4-26.P2.el7_9.9 bind-libs-lite.x86_64 32:9.11.4-26.P2.el7_9.9 bind-license.noarch 32:9.11.4-26.P2.el7_9.9
dhclient.x86_64 12:4.2.5-83.el7.centos.1 dhcp-common.x86_64 12:4.2.5-83.el7.centos.1 dhcp-libs.x86_64 12:4.2.5-83.el7.centos.1
Complete!
2.配置主配置文件
[root@localhost ~]# vim /etc/named.conf
3.配置域文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
allow-updata行在正向解析中不設置主從復制的情況下可刪除。
4.配置解析文件
[root@localhost ~]# cd /var/named
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp -p named.localhost canyun.com.zone ##為了安全,將模板文件的權限復制過來,復制后的名稱與自己在named.rfc1912.zones中寫的文件名一樣
[root@localhost named]# vim canyun.com.zone
進去后文件內容如下所示。
修改后如下:
5.啟動named服務,關閉防火牆和selinux
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewalld.service
[root@localhost named]# setenforce 0
6.修改網卡配置,將DNS地址設為本身
[root@localhost named]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
…………
#dns1 ##dns服務可注釋掉
[root@localhost named]# systemctl restart network ##重啟網絡服務
7.測試
[root@localhost ~]# host mail.canyun.com
mail.canyun.com has address 192.168.186.10
[root@localhost ~]# host bbc.canyun.com
bbc.canyun.com has address 192.168.186.15