DNS域名伺服器
什麼是DNS
Domain Name System 域名系統,應用層協議,是網際網路的一項服務。它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路,基於C/S架構,伺服器端:53/udp, 53/tcp實際上,每一臺 DNS 伺服器都只負責管理一個有限範圍(一個或幾個域)內的主機域 名和 IP 地址的對應關係,這些特定的 DNS 域或 IP 地址段稱為 zone(區域)。根據地址解 析的方向不同,DNS 區域相應地分為正向區域(包含域名到 IP 地址的解析記錄)和反向區 域(包含 IP 地址到域名的解析記錄)
DNS伺服器型別
DNS伺服器可以分為以下幾種型別:
主DNS伺服器:負責管理所有的域名記錄,如A記錄、CNAME記錄、MX記錄等,主DNS伺服器會檢查自己的快取記錄,如果找不到對應的記錄,會查詢從DNS伺服器。
輔助DNS伺服器:不建立區域,其區域資料是從主DNS伺服器複製來的,輔助DNS伺服器會和建立聯絡的主DNS伺服器聯絡,並從主DNS伺服器中複製資料。
快取伺服器:沒有自己的區域資料檔案,只是幫助客戶端向外部DNS請求查詢,然後將查詢的結果儲存到它的快取中。
轉發DNS伺服器:不儲存任何域名記錄,只負責接收使用者的查詢請求,並將這些請求轉發給其他的DNS伺服器。
遞迴DNS伺服器:負責接收純快取伺服器傳送的查詢請求,然後透過向各級授權伺服器發出查詢請求獲得需要的查詢結果,最後返回給純快取伺服器的解析器。
權威DNS伺服器:負責管理特定頂級域名下的一級域名伺服器,權威DNS伺服器會返回該域名所對應的IP地址。
網路域名稱系統:主要用於管理大型組織內部的網路環境,可以為組織內部的所有計算機提供一個唯一的主機名,並將其與相應的IP地址繫結在一起。
遞迴DNS伺服器
根伺服器
一級域名伺服器
二級域名伺服器
三級域名伺服器
.........
到123級域名伺服器
DNS查詢原理
先檢視本機的快取記錄,有就轉到該域名對應的IP地址;若沒有記錄,就遞迴查詢本機的hosts檔案,若hosts有就轉到對應地址;若hosts檔案裡沒有,就轉到DNS域名伺服器查詢,有就直接返回結果並轉到其對應地址:若本地DNS域名伺服器沒有,就轉到外網上的DNS域名伺服器,從根伺服器迭代向下查詢到一級域名伺服器、二級域名伺服器、三級域名伺服器,最終由一個權威伺服器反饋查詢到對應的IP地址給DNS域名伺服器,在由DNS域名伺服器把得到的域名和對應的IP地址傳送給需求的主機。
DNS的安裝與應用
DNS安裝和DNS伺服器解析應用
[root@localhost ~]#yum install bind bind-utils -y
#主軟體 和 配置包管理軟體
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
[root@localhost ~]#systemctl start named
#開啟服務
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
將DNS修改為本機的域名
#重啟服務
[root@localhost ~]#systemctl restart network
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; }; #將127.0.0.1修改為any
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; }; #將localhost修改為any
:wq
[root@localhost ~]#rndc reload
server reload successful
#重新載入DNS服務
[root@localhost named]#vim /etc/named.rfc1912.zones
#編寫域名
zone "localhost.localdomain" IN { #將localhost.localdomain改寫為你想要的域名
type master;
file "named.localhost"; #將named.localhost改寫為你想要的域名並加入.zone
allow-update { none; }; #這行可以不要
};
:wq
[root@localhost named]#cd /var/named/
#切換目錄
[root@localhost named]# ls
chroot data dyndb-ldap named.empty named.loopback
chroot_sdb dynamic named.ca named.localhost slaves
[root@localhost named]#cp named.localhost ./***.com.zone -p
#保留許可權複製,***為上面修改的域名。
[root@localhost named]# vim zhang.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. ( #將@修改為你修改的域名
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @ #將@改為master
A 127.0.0.1 #改為master A 本機DNS地址
AAAA ::1 #可以刪除
[root@localhost named]# host master.zhang.com #驗證DNS
master.zhang.com has address 192.168.10.10