一、什么是DN。
域名(Domain Name)又稱網域,是由一串用點分隔的名字組成的Internet上某一台計算機或計算機組的名稱,用於在數據傳輸時對計算機的定位標識(有時也指地理位置)。它的作用只是為了便於人們對網站的記憶。就好比通訊錄,好友的手機號碼根本記不了幾個,所以使用名字來記錄手機號,記住名字就知道手機號是那個朋友的。域名就相當於好友名字;IP地址就相當於好友手機號。
二、什么是DNS。
隨着域名越來越多。便出現了一種系統,也就是DNS(Domain Name System)系統,它會起到綜合管理域名的作用。其中我們最常使用的就是DNS服務器,每當我們登錄網站的時候,都需要通過DNS服務器將域名轉換為IP地址,然后進行網站的訪問。
正向解析:域名→IP地址 (域名解析為IP地址)
反向解析:IP地址→域名 (IP地址解析為域名)
三、域名的組成。
以www.example.com為例,這個是我們司空見慣的一個網站。它的完整格式應為www.example.com.。從后往前拆解。
. :它是最高一級的域名節點,被稱為根域名(root domain)。全球總共存在13台根域服務器。亞洲一台在日本,中國沒有根域服務器,只有鏡像根域服務器。
.com:頂級域,由ICANN 管理着所有的頂級域名。
頂級域分類:
國家地區域名:目前200多個國家都按照ISO3166國家代碼分配了頂級域名,例如中國是cn,美國是us,日本是jp
通用頂級域名:例如表示工商企業的 .com,表示網絡提供商的.net,表示非盈利組織的.org
新通用頂級域名:它是ICANN出台的一個新的開放政策,任何個人和公司都可以申請自己的域名后綴。其中全球注冊量最大的新通用頂級域名包括..top、.win、.club、.party等。
example:二級域(注冊域),可由個人或者組織申請注冊。
www:三級域(子域)。
四、各個級別的域服務器關系。
五、訪問網站的整個過程(以www.baidu.com為例)。
1、訪問百度個網站時,會先去查系統內的hosts文件,如果有相對應的解析關系,則將解析出的IP地址返回到瀏覽器中進行訪問。
2、若hosts文件中不存在解析關系,則會去查找緩存中是否有此解析關系的記錄。如果有,則將解析出的IP地址返回到瀏覽器中。
3、若緩存中不存在解析關系,就會連接系統所配置的DNS服務器,因為為了安全、穩定與高效考慮,DNS服務器不可能只有一台,它是由幾台甚至十幾台做成集群模式(也成為分布式DNS服務器,每台服務器內保存的數據是一樣的,只不過通過負載均衡的任務分發機制,可以同時執行成百上千萬條解析任務),從而保障穩定安全高效。所以,連接DNS服務器的數據會先到達負載均衡,通過負載均衡內的分發機制,將這個解析任務發送給分布式DNS服務器中的一台服務器,通過DNS服務器的解析庫再次查找此域名的解析關系。如果DNS服務器的解析庫有此域名的解析關系,則將解析出的IP地址返回到系統中,最終通過瀏覽器進行訪問。
4、若DNS服務器中解析庫也沒有記錄此域名的解析關系,則會在DNS服務器的緩存(非解析庫中的解析關系)中查找此域名的解析關系,如果有,則將解析出的IP地址返回到系統中,最終通過瀏覽器進行訪問。
5、若在DNS服務器上都沒有找到此域名的解析關系,則進行以下步驟進行查詢:
a)、DNS服務器會聯系到根域服務器,在根域服務器上會記錄着頂級域服務器的IP地址。DNS服務器就通過“.com”這一頂級域名在根域服務器上找到了對應的頂級域服務器的IP地址。
b)、DNS服務器知道了對應”.com“頂級域服務器的IP地址,就可以連接到這一服務器,在頂級域服務器上記錄着二級域服務器的IP地址。后通過“baidu.com”這一個二級域名在頂級域服務器上找到了對應的二級域服務器的IP地址。
c)、DNS服務器知道了對應“baidu.com”二級域服務器的IP地址,就可以連接到這一服務器,在二級域服務器上記錄着三級域服務器的IP地址。后通過“www.baidu.com”這一個三級域名在二級域服務器上找到了對應的三級域服務器的IP地址。
d)、DNS服務器知道了對應“www.baidu.com”三級域服務器的IP地址,就可以連接到這一服務器。然后查詢三級域服務器中的解析關系,從而找到"www.baidu.com"域名對應的IP地址,也就是服務器的IP地址。
e)、若DNS服務器最終查詢到了解析關系,則將對應的IP地址返回到電腦中進行訪問;若上面任意一步無法完成,則證明此域名不存在,也就無法訪問此網站。
6、前面1-4是遞歸查詢,第五步是迭代查詢。
六、搭建DNS服務器。
在Linux中搭建DNS服務器的軟件有很多,比較常用的就是bind,所以下面我也使用bind來搭建DNS服務器。
bind信息介紹:
服務名:named 端口號:UDP 53(域名解析);TCP 53(主從同步)
主配置文件:/etc/named.conf(配置服務的一些參數) 區域配置文件:/etc/named.rfc1912.zones(可調用正(反)向配置文件) 數據配置文件:/var/named/named.localhost(正向解析配置文件模板); /var/named/named.loopback(反向解析配置文件模板)
實驗一:基本配置
1.1、測試網站配置
安裝http服務。關閉防火牆。開啟http服務即可。
1.2、DNS服務器配置
安裝bind軟件:yum -y install bind*
配置主配置文件:
配置區域配置文件:
配置正(反)向解析數據配置文件。
先復制一份。其中,正向解析數據配置文件:
反向解析數據配置文件:
修改文件權限。啟動服務。
1.3、測試:
實驗二、主從配置。
為了保障DNS服務器正常運行與數據安全,一般情況下是一主多備的模式,這樣也可以減少主DNS服務器的訪問壓力。
2.1、配置前先介紹幾個配置參數。
區域配置文件:/etc/named.rfc1912.zones(可調用正(反)向配置文件)
數據配置文件:/var/named/named.localhost(正向解析配置文件模板); /var/named/named.loopback(反向解析配置文件模板)
在原有的基礎上,再次增加一台從服務器。
2.1、測試網站原有配置不變。
2.2、主DNS服務器配置
修改允許從服務器進行數據更新。
重啟主DNS服務器的named服務(systemctl restart named)
2.3、從DNS服務器配置
安裝bind軟件:yum -y install bind*
配置/etc/named.conf
配置 /etc/named.rfc1912.zones
開啟服務(systemctl restart named)
同步完成。
2.4、測試
將主DNS服務器關閉,用於模擬主DNS服務器故障,客戶端地址DNS配置從DNS服務器地址。再次進行測試。