DNS主要用來實現對相似baidu.com這類地址翻譯成IP地址,就是你們最多見的正向解析。它是一個自頂而下的樹形結構,頂端是根域 .。咱們常見的t66y.com其實完整的域名爲t66y.com. 。日常咱們上網都是使用ISP的DNS服務器來解析。其實ISP的DNS服務器只是緩存了加快查詢的速度,不少不常見的域名,ISP也是向最頂端的服務器來查詢的。
緩存
首先,安裝包yum -y intall bind
服務器
第二步,根據本身的實際環境修改配置文件,這裏咱們略過默認的選項,只列出修改的部分。
ide
cat /etc/named.conf
spa
#dns服務器監聽的端口 翻譯
listen-on port 53 { 127.0.0.1;192.168.1.200; };orm
#容許使用此臺服務器進行dns查詢的客戶端dns
#若是是一個子網能夠寫成192.168.1.0/24;多個子網間使用;分隔同步
allow-query { any;}; 域名
#大型機構通常多臺DNS服務器,會向列表內服務器傳遞更新數據it
allow-transfer { 192.168.1.201;};
#ISP DNS,此列表非空先轉發,列表內服務器無響應再向根查詢
forwarders {218.6.200.139;202.98.96.68;};
#容許向根服務器查詢
recursion yes;
#禁用dnssec,不然向根查詢會有報錯。這裏要改爲no,註釋掉是沒有用的。
dnssec-enable no;
dnssec-validation no;
#添加正向解析域
zone "it.lab" IN {
#master類型可寫,slave類型只讀。
type master;
#域名解析用到的文件,這個文件並無什麼格式要求。這裏咱們用域名加forward,
比較容易看出來是哪一個域的正向解析。
file "it.lab.forward";
#有更新主動通知slave類型服務器
notify yes;
};
#添加反向解析域,in-addr.arpa是固定格式,前面的數字是正向解析域規劃的子網從最低位倒過來寫到最高位,即反轉域名。這裏並不支持變長子網掩碼。例如咱們規劃的子網是192.168.1.0/24,這個反轉域名就寫成1.168.192.
zone "1.168.192.in-addr.arpa" IN {
type master;
file "1.168.192.reverse";
notify yes;
};
最後,建立域名解析文件。
cat /var/named/it.lab.forward
#指定根域
$ORIGIN .
#解析內容存活時間,即某一紀錄被解析後,客戶端會認爲這個解析在多長時間內是有效的,在這個有效時間內,客戶端不會重複去解析同一紀錄。
$TTL 86400 ; 1 day
#it.lab即爲此文件解析的域名,也可用@表示本域;IN表示INTERNET類型;SOA即Start of Authority,;it.lab.是FQDN完整域名,必定要加最後一個.;root.it.lab.是管理員的聯繫方式,@有特殊含義,咱們使用.代替。
it.lab IN SOA it.lab. root.it.lab. (
#每一次DNS更新都會增長serial計數,不一樣DNS服務器間使用此標記判斷數據新舊從而肯定同步的方向。
307 ; serial
#slave服務器查詢主服務器更新數據的時間間隔
28800 ; refresh (8 hours)
#slave服務器通信失敗狀況下重試時間間隔
7200 ; retry (2 hours)
#標記爲無效記錄的時間間隔
604800 ; expire (1 week)
#緩存服務器緩存記錄的時間
86400 ; minimum (1 day)
)
#此域的域名服務器紀錄
NS dns.it.lab.
NS dns2.it.lab
#主機紀錄,dns爲主機名,A爲紀錄類型,後面跟IP地址
dns A 192.168.1.200
dns2 A 192.168.1.201
#別名紀錄,第一頂爲別名,CNAME爲紀錄類型,最後跟一條A紀錄主機名
dhcp CNAME dns
slave服務器只需修改配置文件域解析文件描述
zone "it.lab" IN {
#type設置爲slave
type slave;
#master列表
masters { 192.168.1.200;};
file "slaves/it.lab.forward";
notify no;
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.1.200;};
file "salves/1.168.192.reverse";
notify no;
};