linux 的 DNS 和 bind
一般的CentOS中,需要我們用yum裝一個bind;然後用啟動bind程序;然後在查看是否處於活動狀態;
named 就是 DNS 服務
然後查看bind的主配置文件;在/etc/named.conf中;然後有許多選項;
選項的意思:
全局配置段:
options {
listen-on port 53 { 127.0.0.1; 172.16.1.74; };
//在啟動DNS服務時,named進程所監聽的套接字;[any|none]
directory "/var/named";
//定義解析庫(區域數據庫文件)的根目錄;在主配置文件中添加此配置語句之後,可以在後面定義區域數據庫時使用相對路徑;
allow-query { localhost; };
//訪問控制語句,意思是允許本服務器處理那些主機發送來的解析查詢請求;默認是localhost,即:只允許本機以127.0.0.1發送查詢請求;
recursion yes;
//允許本服務器為所有查詢請求做遞歸查詢;
allow-recursion { 172.16.1.74/16; };
//訪問控制指令:允許那些客戶端做遞歸查詢;
pid-file "/run/named/named.pid";
//定義存放主進程pid文件的路徑;
};
區域配置段:
zone "FQDN" IN {
//聲明一個區域名稱;此名稱要使用FQDN來表示;如:qhdlink.com
type master;
//區域的類型:
master:主區域:
slave:輔助區域;
hint:提示區域,僅能在根域上設置;
forward:轉發區域;
file "named.localhost";
//存放於該域有關的解析信息的數據庫文件的路徑;如果是相對路徑,則相對於在主配置文件的全局配置端中的"directory"指令所定義的目錄而言;
註意:文件的所有權和權限設置必須能夠讓named用戶有讀取權限;
allow-update { none; };
//訪問控制指令,允許那些客戶端對數據庫內容進行動態更新;主要用於DDNS;
allow-transfer { 172.16.0.0/16; };
//訪問控制指令:允許那些主機能夠從當前服務器進行區域傳送;
allow-recursion { 172.16.1.74/16; };
//訪問控制指令:允許那些許那些客戶端做遞歸查詢;
allow-query{ address_match_element; ... };
//訪問控制指令:允許那些主機進行區域內的解析查詢;
allow-update { address_match_element; ... };
//訪問控制指令:允許那些主機向當前服務器發送區域變更通知;
};
在配置完bind的配置文件之後;需要用named-checkconf來檢測文件的書寫格式是否正確;
在檢測完以後,配置文件的內容並不會立即生效;因此我們需要重新讀取named程序;可以用systemctl命令;也可以用 rndc reload 來讀取;
區域配置文件示例:
zone "FQDN" IN {
type master;
file "FQDN.zone";
allow-update { none; };
allow-tranfer { none; };
}
當區域配置文件配置完之後,我們需要在其數據庫添加記錄;
在數據庫中,有各種記錄書寫的格式,簡要介紹各種記錄的書寫格式;
SOA:
DN|FQDN:當前域的域名,如:qhdlink.com.
或者使用"@"代替域名;@符號會使用主配置文件中定義的域名來代替;
VALUE:由以下幾個部分組成:
1.當前域中的主名稱服務器的FQDN;
2.當前域的數據庫管理員的郵箱地址,需要使用"."來代替"@": root.qhdlink.com.
3.主名稱服務器進行區域傳送的相關時間參數的定義:
(Serial Refresh Retry Expeir TTL)
(Serial ;
Refresh ;
Retry ;
Expeir ;
TTL;)
NS記錄:
name:當前域的域名;可以寫完全合格域名FQDN;可以寫@占位;還可以省略不寫;如果省略不寫,則意味著該資源記錄的名稱與其上一條資源記錄的名稱相同;
value:當前區域內被授權的名稱服務器的FQDN;
註意:
1.一個域中有多少臺名稱服務器,就需要寫多少個NS資源記錄;
2.每個NS資源記錄都必須要有一個A記錄與之對應;
MX記錄:
name:當前域的域名;可以寫完全合格域名FQDN;可以寫@占位;還可以省略不寫;如果省略不寫,則意味著該資源記錄的名稱與其上一條資源記錄的名稱相同;
RR_TYPE: MS Priority
value:當前域中有效的郵件服務器的FQDN;
註意:
1.一個域中,可以有多條MX資源記錄,通過優先級的大小決定被使用的次序;
2.每個MX資源記錄都必須對應一條A記錄;
A記錄:
name:域中指定主機的FQDN;
value;該主機上真實有效的Ipv4地址;
示例:
www.qhdlink.com. 43200 IN A 192.168.1.1
www 43200 IN A 192.168.1.1
泛域名:
*.qhdlink.com. 43200 IN A 192.168.1.1
* 43200 IN A 192.168.1.1
直接域名解析:
qhdlink.com. 43200 IN A 192.168.1.1
通常,泛域名或直接域名都是為了防止用戶寫錯名稱而導致無法給出正確的解析結果;
CNAME記錄:
name:域中指定主機的別名;
value:真正的主機的FQDN;
示例:
ftp.qhdlink.com [86400] IN CNANE www.qhdlink.com.
ftp [86400] IN CNANE www
PTR記錄:
name:將IP地址的四個八位組反過來,將IP地址中的主機部分加上反向域的域名後綴;
如果IP地址是 :172.16.1.100/16,其對應的名稱的寫法;
100.1 IN PTR www.qhdlink.com.
100.1.16.172.in-addr.arpa. IN PTR www.qhdlink.com.
value:域中與指定的IP地址對應的FQDN;
註意:value部分必須寫FQDN,絕對不能省略域名後綴,最後必須以"."結尾;否則bind程序會將反向域的域名補在名稱之後;
當寫完了配置文件中的域所對應的數據庫內容之後,需要用named-checkzone命令進行檢測數據的書寫格式是否正確;
named-checkzone FQDN FQDN.zone
當配置完成之後,我們用rndc reload重載配置文件之後,就可以完成本地域名解析了;
測試域名解析的幾個常用命令;dig,host,nslookup
linux 的 DNS 和 bind