首先我們需要了解下什么是DNS?
DNS 是域名系統(tǒng) (Domain Name System) 的縮寫,它是由解析器和域名服務(wù)器組成的。域名服務(wù)器是指保存有該網(wǎng)絡(luò)中所有主機(jī)的域名和對(duì)應(yīng)IP地址,并具有將域名轉(zhuǎn)換為IP地址功能的服務(wù)器。其中域名必須對(duì)應(yīng)一個(gè)IP地址,而IP地址不一定有域名。域名系統(tǒng)采用類似目錄樹的等級(jí)結(jié)構(gòu)。域名服務(wù)器為客戶機(jī)/服務(wù)器模式中的服務(wù)器方,它主要有兩種形式:主服務(wù)器和轉(zhuǎn)發(fā)服務(wù)器。將域名映射為IP地址的過程就稱為“域名解析”。在Internet上域名與IP地址之間是一對(duì)一(或者多對(duì)一)的,域名雖然便于人們記憶,但機(jī)器之間只能互相認(rèn)識(shí)IP地址,它們之間的轉(zhuǎn)換工作稱為域名解析,域名解析需要由專門的域名解析服務(wù)器來完成,DNS就是進(jìn)行域名解析的服務(wù)器。 DNS 命名用于 Internet 等 TCP/IP 網(wǎng)絡(luò)中,通過用戶友好的名稱查找計(jì)算機(jī)和服務(wù)。當(dāng)用戶在應(yīng)用程序中輸入 DNS 名稱時(shí),DNS 服務(wù)可以將此名稱解析為與之相關(guān)的其他信息,如 IP 地址。因?yàn)椋阍谏暇W(wǎng)時(shí)輸入的網(wǎng)址,是通過域名解析系統(tǒng)解析找到了相對(duì)應(yīng)的IP地址,這樣才能上網(wǎng)。其實(shí),域名的最終指向是IP。
DNS的資源記錄
1.正解文件資源記錄(Resource Record, RR):
常見的正解文件 RR 相關(guān)信息
[domain] IN [[RR type] [RR data]]
主機(jī)名. IN A IPv4 的 IP 地址
主機(jī)名. IN AAAA IPv6 的 IP 地址
域名. IN NS 管理這個(gè)域名的服務(wù)器主機(jī)名字.
域名. IN SOA 管理這個(gè)域名的七個(gè)重要參數(shù)(容后說明)
域名. IN MX 順序數(shù)字 接收郵件的服務(wù)器主機(jī)名字
主機(jī)別名. IN CNAME 實(shí)際代表這個(gè)主機(jī)別名的主機(jī)名字.
2.A 、AAAA:查詢IP的記錄
A:FQDN -->ipv4
AAAA: FQDN -->ipv6
FQDN:(Fully Qualified Domain Name)完全合格域名/全稱域名,是指主機(jī)名加上全路徑,全路徑中列出了序列中所有域成員。全域名可以從邏輯上準(zhǔn)確地表示出主機(jī)在什么地方,也可以說全域名是主機(jī)名的一種完全表示形式。
[root@centos7 ~]#dig www.baidu.com :注通過dig知道百度ipv4地址
;; ANSWER SECTION:
www.baidu.com. 823 IN CNAME www.a.shifen.com.
www.a.shifen.com. 52 IN A 115.239.210.27
www.a.shifen.com. 52 IN A 115.239.211.112
3.NS:查詢管理區(qū)域名(zone)服務(wù)器的主機(jī)名
如果你想要知道 www.baidu.com 的記錄是由哪部 DNS 服務(wù)器提供的,那就得要使用 NS (NameServer) 的 RR 類型標(biāo)志來查詢。不過,由于 NS 是管理整個(gè)領(lǐng)域的,因此,你得要查詢的目標(biāo)將得輸入 domain,亦即 baidu.com,列:
[root@centos7 ~]#dig -t ns baidu.com
;; ANSWER SECTION:
baidu.com. 40596 IN NS ns3.baidu.com.
baidu.com. 40596 IN NS dns.baidu.com.
baidu.com. 40596 IN NS ns7.baidu.com.
baidu.com. 40596 IN NS ns2.baidu.com.
baidu.com. 40596 IN NS ns4.baidu.com.
4.SOA :查詢管理域名的服務(wù)器管理信息
如果是多部 DNS 服務(wù)器管理同一個(gè)領(lǐng)域名時(shí),那么最好使用 master/slave 的方式來進(jìn)行管理。既然要這樣管理, 那就得要宣告被管理的 zone file 是如何進(jìn)行傳輸?shù)模藭r(shí)就得要 SOA (Start Of Authority) 的標(biāo)志了。
[root@centos7 ~]#dig -t soa baidu.com
;; ANSWER SECTION:
baidu.com. 7199 IN SOA dns.baidu.com. sa.baidu.com. 2012136133 300 300 2592000 7200
SOA 主要是與區(qū)域有關(guān),所以前面要寫baidu.com 這個(gè)域名。而 SOA 后面共會(huì)接七個(gè)參數(shù),這七個(gè)參數(shù)的意義依序是:
1. Master DNS 服務(wù)器主機(jī)名:這個(gè)區(qū)域主要是哪部 DNS 作為 master 的意思。在例中, dns.baidu.com.為 baidu.com.這個(gè)領(lǐng)域的主要 DNS 服務(wù)器;
2. 管理員的 email:那么管理員的 email 為何?發(fā)生問題可以聯(lián)絡(luò)這個(gè)管理員。要注意的是, 由于 @ 在數(shù)據(jù)庫檔案中是有特別意義的,因此這里就寫成sa.baidu.com;
3. 序號(hào) (Serial):這個(gè)序號(hào)代表的是這個(gè)數(shù)據(jù)庫檔案的新舊,序號(hào)越大代表越新。 當(dāng) slave 要判斷是否主動(dòng)下載新的數(shù)據(jù)庫時(shí),就以序號(hào)是否比 slave 上的還要新來判斷,若是則下載,若不是則不下載。 所以當(dāng)你修訂了數(shù)據(jù)庫內(nèi)容時(shí),記得要將這個(gè)數(shù)值放大才行! 為了方便用戶記憶,通常有些序號(hào)都會(huì)使用日期格式『YYYYMMDDNU』來記憶。
4. 更新頻率 (Refresh):那么啥時(shí) slave 會(huì)去向 master 要求數(shù)據(jù)更新的判斷? 就是這個(gè)數(shù)值定義的。百度的 DNS 設(shè)定每 300 秒進(jìn)行一次 slave 向 master 要求數(shù)據(jù)更新。那每次 slave 去更新時(shí), 如果發(fā)現(xiàn)序號(hào)沒有比較大,那就不會(huì)下載數(shù)據(jù)庫檔案。
5. 失敗重新嘗試時(shí)間 (Retry):如果因?yàn)槟承┮蛩兀瑢?dǎo)致 slave 無法對(duì) master 達(dá)成聯(lián)機(jī), 那么在多久的時(shí)間內(nèi),slave 會(huì)嘗試重新聯(lián)機(jī)到 master。在百度的設(shè)定中,300 秒會(huì)重新嘗試一次。
6. 失效時(shí)間 (Expire):如果一直失敗嘗試時(shí)間,持續(xù)聯(lián)機(jī)到達(dá)這個(gè)設(shè)定值時(shí)限, 那么 slave 將不再繼續(xù)嘗試聯(lián)機(jī),并且嘗試刪除這份下載的 zone file 信息。百度設(shè)定為 2592000 秒。意思是說,當(dāng)聯(lián)機(jī)一直失敗,每 300 秒嘗試到達(dá) 2592000 秒后,百度的 slave 將不再更新,只能等待系統(tǒng)管理員的處理。
7. 快取時(shí)間 (Minumum TTL):如果這個(gè)數(shù)據(jù)庫 zone file 中,每筆 RR 記錄都沒有寫到 TTL 快取時(shí)間的話,那么就以這個(gè) SOA 的設(shè)定值為主。
5.CNAME:設(shè)置某主機(jī)名的別名
通過最開始我們通過dig www.baidu.com 查詢就可發(fā)現(xiàn)百度的別名
[root@centos7 ~]#dig www.baidu.com
;; ANSWER SECTION:
www.baidu.com. 823 IN CNAME www.a.shifen.com. 別名
www.a.shifen.com. 52 IN A 115.239.210.27
www.a.shifen.com. 52 IN A 115.239.211.112
6.查詢某域名的郵件服務(wù)器主機(jī)名
MX 是 Mail eXchanger (郵件交換) 的意思,通常你的整個(gè)區(qū)域會(huì)設(shè)定一個(gè) MX ,代表,所有寄給這個(gè)區(qū)域的 email 應(yīng)該要送到后頭的 email server 主機(jī)名上才是。
[root@centos7 ~]#dig -t MX baidu.com
;; ANSWER SECTION:
baidu.com. 6353 IN MX 20 mx50.baidu.com.
baidu.com. 6353 IN MX 10 mx.n.shifen.com.
baidu.com. 6353 IN MX 20 mx1.baidu.com.
baidu.com. 6353 IN MX 20 jpmx.baidu.com.
6.反解文件記錄的 RR 數(shù)據(jù)
正解主機(jī)名的追蹤方式。以 www.baidu.com來說,整個(gè)域的概念來看, 越右邊出現(xiàn)的名稱代表網(wǎng)域越大!舉例來說,.(root) > com> baidu以此類推。因此追蹤時(shí),是由大范圍找到小范圍。
但是 IP 則不一樣啊!以baidu的 115.239.210.27來說好了,當(dāng)然是 115> 1239 > 210 > 27 ,左邊的網(wǎng)域最大! 與預(yù)設(shè)的 DNS 從右邊向左邊查詢不一樣!為了解決這個(gè)問題,所以反解的 zone 就必須要將 IP 反過來寫,而在結(jié)尾時(shí)加上 .in-addr.arpa. 的結(jié)尾字樣即可。所以,當(dāng)你想要追蹤反解時(shí),那么反解的結(jié)果就會(huì)是:
[root@centos7 ~]#dig -x 166.111.4.100
;; ANSWER SECTION:
100.4.111.166.in-addr.arpa. 86399 IN PTR www.tsinghua.edu.cn.
因百度的沒有故隨便找了個(gè)。
DNS設(shè)置
1.DNS環(huán)境規(guī)劃
在centos7上操作,ip為192.168.18.131
需要設(shè)置的配置文件
1.named.conf (主要配置文件)
2.named.centos.com.zone(主要的正解文件)
3.named.192.168.18.zone (主要的192.168.18.131/24的反解文件)
4.named.ca (由bind軟件提供.正解文件這里不需要設(shè)置)
2.主配置文/etc/named.conf的設(shè)置
options:規(guī)范 DNS 服務(wù)器的權(quán)限 (可否查詢、forward 與否等);
zone:設(shè)定出 zone (domain name) 以及 zone file 的所在 (包含 master/slave/hint);
options {
// listen-on port 53 { 127.0.0.1; }; 默認(rèn)只是監(jiān)聽本機(jī)端口,我們可注釋掉,就代表全部,或 listen-on port 53 {any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named"; 數(shù)據(jù)庫默認(rèn)放置的目錄所在
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";
// allow-query { localhost; }; 注釋掉,代表全部接受。
3./etc/named.rfc1912.zones的文件設(shè)置
這個(gè)文件放置的解析庫文件,我們可參考其他,自己寫一個(gè)
zone "centos.com" IN { :這個(gè)zone的類型,即將來查詢的類型
type master; :是設(shè)么類型
file "named.centos.com.zone"; :文件放在那里,相對(duì)路徑/var/named下
};
zone "18.168.192.in-addr.arpa" IN { 反解文件
type master;
file "named.192.168.18.zone";
};
4.正解文件named.centos.com.zone的設(shè)定
$TTL 600
@ IN SOA dns admin.www.centos.com. ( 201707301 3H 15M 1W 1D )
IN NS dns
dns IN A 192.168.18.131
IN MX 10 www.centos.com.
www.centos.com. IN A 192.168.18.131
linux.centos.com. IN CNAME www.centos.com.
ftp.centos.com. IN CNAME www.centos.com.
test.centos.com. IN CNAME www.centos.com.
slave.centos.com. IN A 192.168.18.130
websrv.centos.com. IN A 192.168.18.130
一個(gè)正解的數(shù)據(jù)庫設(shè)定中,至少應(yīng)該要有 $TTL, SOA, NS (與這部 NS 主機(jī)名的 A).
$TTL 為了簡化每筆 RR 記錄的設(shè)定,因此我們將 TTL 挪到最前面統(tǒng)一設(shè)定。
5.反解named.192.168.18.zone文件的設(shè)定
$TTL 600
@ IN SOA dns admin.www.centos.com. ( 201707301 3H 15M 1W 1D )
IN NS dns
IN A 127.0.0.1
131 IN PTR dns
131 IN PTR www.centos.com.
130 IN PTR slave.centos.com.
反解跟正解一樣,還都需要 TTL, SOA, NS 等等的。
6.DNS的啟動(dòng)、查看與防火墻
[root@centos7 ~]#iptables -F 關(guān)閉防火墻
[root@centos7 ~]#setenforce 0 關(guān)閉selinux
[root@centos7 ~]#named-checkconf 檢查配合文件
[root@centos7 ~]#named-checkzone centos.com /var/named/named.centos.com.zone 檢查zone數(shù)據(jù)庫文件
zone centos.com/IN: loaded serial 201707301
OK
[root@centos7 ~]#systemctl restart named 重啟服務(wù)
[root@centos7 ~]#rndc reload 加載
接下來我們就是測(cè)試
如果使用的環(huán)境能連接外網(wǎng)的話,我們這里需在/etc/resolv.conf 配置文件改成
[root@centos7 ~]#vim /etc/resolv.conf
# Generated by NetworkManager
search 3.zj.com
nameserver 192.168.18.131 自己的ip最早出現(xiàn),否則解析的是網(wǎng)上的因我們named.ca沒有更改
nameserver 192.168.43.1
7.測(cè)試
[root@centos7 ~]#dig www.centos.com
;; ANSWER SECTION:
www.centos.com. 600 IN A 192.168.18.131
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig ftp.centos.com
;; ANSWER SECTION:
ftp.centos.com. 600 IN CNAME www.centos.com.
www.centos.com. 600 IN A 192.168.18.131
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig ftp.centos.com
;; ANSWER SECTION:
ftp.centos.com. 600 IN CNAME www.centos.com.
www.centos.com. 600 IN A 192.168.18.131
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig slave.centos.com
;; ANSWER SECTION:
slave.centos.com. 600 IN A 192.168.18.130
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig -t MX centos.com
;; ANSWER SECTION:
centos.com. 600 IN MX 10 www.centos.com.
;; AUTHORITY SECTION:
centos.com. 600 IN NS dns.centos.com.
;; ADDITIONAL SECTION:
www.centos.com. 600 IN A 192.168.18.131
dns.centos.com. 600 IN A 192.168.18.131
[root@centos7 ~]#dig -x 192.168.18.131
;; ANSWER SECTION:
131.18.168.192.in-addr.arpa. 600 IN PTR www.centos.com.
;; AUTHORITY SECTION:
18.168.192.in-addr.arpa. 600 IN NS 18.168.192.in-addr.arpa.
;; ADDITIONAL SECTION:
18.168.192.in-addr.arpa. 600 IN A 127.0.0.1
[root@centos7 ~]#dig -x 192.168.18.130
;; ANSWER SECTION:
130.18.168.192.in-addr.arpa. 600 IN PTR slave.centos.com.
;; AUTHORITY SECTION:
18.168.192.in-addr.arpa. 600 IN NS 18.168.192.in-addr.arpa.
;; ADDITIONAL SECTION:
18.168.192.in-addr.arpa. 600 IN A 127.0.0.1
到這里DNS配置就完成了,如果啟動(dòng)不了服務(wù),則要檢查排錯(cuò),
一般都是以下問題:
1.字母寫錯(cuò),數(shù)據(jù)庫文件名與配置文件 寫的不一致。
2.數(shù)據(jù)庫文格式錯(cuò)誤。(注意如需寫全注意點(diǎn)(.)的是否遺漏)
3.測(cè)試防火墻是否關(guān)閉。
4.SELinux是否為關(guān)閉。
5./etc/resolv.conf第一個(gè)是否指向自己的ip。
如有不足!請(qǐng)多多指教!