DNS域名解析服務(wù)(Domain Name System)是用于解析域名與IP地址對應(yīng)關(guān)系的服務(wù),功能上可以實(shí)現(xiàn)正向解析與反向解析:
一、DNS服務(wù)器工作模式分類:
1、主服務(wù)器:在特定區(qū)域內(nèi)具有唯一性、負(fù)責(zé)維護(hù)該區(qū)域內(nèi)的域名與IP地址對應(yīng)關(guān)系。
2、從服務(wù)器:從主服務(wù)器中獲得域名與IP地址對應(yīng)關(guān)系并維護(hù),以防主服務(wù)器宕機(jī)等情況。
3、緩存服務(wù)器:通過向其他域名解析服務(wù)器查詢獲得域名與IP地址對應(yīng)關(guān)系,提高重復(fù)查詢時(shí)的效率.
二、DNS查詢方式:
1、迭代查詢:
2、遞歸查詢:
三、解析方式分類
1、正向解析,既將FQDN解析為IP.
2、反向解析,將IP解析為FQDN.
四、Bind配置文件的結(jié)構(gòu):
主程序 | /usr/sbin/named |
主配置文件 | /etc/named.conf |
區(qū)域配置文件 | /etc/named.rfc1912.zones |
zone文件的默認(rèn)路徑 | /var/named |
/etc/named.conf : Bind的主配置文件,用于定義全局設(shè)置,DNS的zone等相關(guān)配置。
1.options部分:
options { //options段用于定義全局設(shè)置
listen-on port 53 { 127.0.0.1; };
//定義bind的監(jiān)聽IP地址(IPv4)
listen-on-v6 port 53 { ::1; };
//定義bind的監(jiān)聽IP地址(IPv6)
directory “/var/named”;
//zone文件的默認(rèn)路徑
dump-file “/var/named/data/cache_dump.db”;
//cache的備份
statistics-file “/var/named/data/named_stats.txt”;
//靜態(tài)文件
memstatistics-file “/var/named/data/named_mem_stats.txt”;
//內(nèi)存靜態(tài)文件
allow-query { localhost; };
//允許誰向此DNS進(jìn)行查詢
recursion yes|no;
//允許遞歸查詢
#安全相關(guān)部分:
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file “/etc/named.iscdlv.key”;
managed-keys-directory “/var/named/dynamic”;
};
2.日志系統(tǒng)部分:
logging { //定義日志
channel myfile {
//定義channel名稱
file “data/named.run”;
//以文件形式存儲日志
severity dynamic;
//存儲日志的級別,一共7個(gè)級別從高到低分別是:crit,error,warning,notice,info(前面5個(gè)屬于syslog);debug[level],dynamic(后兩個(gè)屬于Bind8,9獨(dú)有的級別)
};
category statistics { my_file; };
//定義bind系統(tǒng)中各子系統(tǒng)的日志 //將日志發(fā)給那個(gè)channel,可以發(fā)給多個(gè)channel,一個(gè)channel只能接受一個(gè)category。
};
3.定義zone
zone “.” IN { //定義Dns的zone,”.”代表根區(qū)域
type hint; //定義zone的類型,根區(qū)域的類型就為hint
file “named.ca”; //指定zone文件,默認(rèn)已經(jīng)生成
};
二、DNS中zone文件的放置/var/named/*.zone(與named.conf中的zone對應(yīng)的文件)
zone文件的書寫格式:
$TTL 1D //用宏定義一個(gè)TTL默認(rèn)值為1天,下面數(shù)據(jù)直接引用此值.
@ [TTL] IN SOA 主DNS服務(wù)器FQDN 管理員郵箱 (
0 ; 序列號
1D ; 更新間隔
1H ; 更新失敗后重試間隔
1W ; 過期時(shí)長
3H ) ; 否定記錄保存時(shí)長
資源類型:A(IPv4), AAAA(IPv6):定義FQDN的IP
NS : 定義DNS服務(wù)器的FQDN
SOA : 起始授權(quán)(每個(gè)zone首先要定義此值)
MX: 定義郵件記錄,有優(yōu)先級概念(0-99),值越小優(yōu)先級越高。
CNAME: 定義別名
PTR: 反向記錄
單臺DNS主服務(wù)器應(yīng)用實(shí)驗(yàn)之正向解析:
查看bind版本:
[root@localhost ~]# rpm -q bind
bind-9.8.2-0.62.rc1.el6_9.4.x86_64
如果沒有則安裝:
#yum install -y bind bind-utils
實(shí)驗(yàn)環(huán)境
系統(tǒng):CentOS release 6.8
軟件:bind-9.8.2-0.62.rc1.el6_9.4.x86_64
服務(wù)器: IP 192.168.153.130;netmask 255.255.255.0 ;DNS 192.168.153.130;GW 192.168.153.2
我在192.168.153.130上面裝的dns服務(wù),resolv.conf 中dns的地址配置第一行為本機(jī)ip地址,在后邊配置文件中的192.168.153.129為我的nginx服務(wù)器地址,nginx服務(wù)器的dns指向?yàn)?92.168.153.130,這個(gè)在nginx主機(jī)nslookup時(shí)就可已用130的dns做解析了.
1.配置DNS服務(wù)器name.conf
options {
listen-on port 53 { 127.0.0.1;
192.168.153.130; // 為局域網(wǎng)其它機(jī)器提供Named服務(wù),必須監(jiān)聽向本機(jī)IP發(fā)出的請求.
};
listen-on-v6 port 53 { ::1; }; //如不使用IPv6地址,可以刪除或注釋掉
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”;
allow-query { any; }; //更改為any或者刪除或注釋掉,表示可以接受查詢的來源
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file “/etc/named.iscdlv.key”;
managed-keys-directory “/var/named/dynamic”;
};
logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};
zone “.” IN {
type hint;
file “named.ca”;
};
zone “linuxidc.com” IN{ //定義一個(gè)zone,zone的名字“linuxidc.com”
type master; //類型為主服務(wù)器
file “linuxidc.com.zone”; //自定義的域名到IP的正向解析配置
};
include “/etc/named.rfc1912.zones”;
include “/etc/named.root.key”;
2.開始建立正向解析文件:
創(chuàng)建并編輯正向解析文件linuxidc.com.zone(文件名要和name.conf文件中定義的zone file名一致)
#vim /var/named/linuxidc.com.zone
$TTL 1D
@ IN SOA master.linuxidc.com. email.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS master
master IN A 192.168.153.130
www IN A 192.168.153.129
nginx IN A 192.168.153.129
bbs IN A 192.168.153.129
3.配置完成后,檢查配置文件的正確性:
[root@localhost ~]# /usr/sbin/named-checkconf -z
zone linuxidc.com/IN: loaded serial 0
zone 153.168.192.in-addr.arpa/IN: loaded serial 2010110901
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
4.重啟服務(wù):
[root@localhost ~]# /sbin/service named restart
Stopping named: .[ OK ]
Starting named: [ OK ]
5.nslookup解析測試:
[root@localhost ~]# nslookup
> master.linuxidc.com
Server: 192.168.153.130 //dns地址
Address: 192.168.153.130#53
Name: master.linuxidc.com //域名服務(wù)器主機(jī)名
Address: 192.168.153.130
> www.linuxidc.com
Server: 192.168.153.130
Address: 192.168.153.130#53
Name: www.linuxidc.com
Address: 192.168.153.129 //www域名對應(yīng)的A記錄地址
> nginx.linuxidc.com
Server: 192.168.153.130
Address: 192.168.153.130#53
Name: nginx.linuxidc.com
Address: 192.168.153.129
> bbs.linuxidc.com
Server: 192.168.153.130
Address: 192.168.153.130#53
Name: bbs.linuxidc.com
Address: 192.168.153.129
>
單臺DNS主服務(wù)器應(yīng)用實(shí)驗(yàn)之反向解析:
1.配置主區(qū)域數(shù)據(jù)文件(/etc/named.conf),追加反向解析如下內(nèi)容:
zone “153.168.192.in-addr.arpa” IN{
type master;
file “192.168.153.arpa.zone”;
allow-update { none; };
};
2.配置解析數(shù)據(jù)文件.
[root@localhost ~]# cd /var/named/
[root@localhost named]# vim 192.168.153.arpa.zone
$TTL 1D
@ IN SOA 153.168.192.in-addr.arpa. linuxidc.com. (
2010110901
28800
14400
3600000
86400
)
@ IN NS master.linuxidc.com.
130 IN PTR master.linuxidc.com 192.168.153.130 -> master
129 IN PTR www.linuxidc.com. ; 192.168.153.129 -> www
129 IN PTR nginx.linuxidc.com. ; 192.168.153.129 -> nginx
129 IN PTR img.linuxidc.com. ; 192.168.153.129 -> img
3.語法檢查:
[root@localhost ~]# /usr/sbin/named-checkconf -z
4.重啟服務(wù):
[root@localhost ~]# /etc/init.d/named restart
Stopping named: [ OK ]
Starting named: [ OK ]
5.反向解析驗(yàn)證:
[root@localhost ~]# nslookup
> 192.168.153.129
Server: 192.168.153.130
Address: 192.168.153.130#53
129.153.168.192.in-addr.arpa name = www.linuxidc.com.
129.153.168.192.in-addr.arpa name = nginx.linuxidc.com.
129.153.168.192.in-addr.arpa name = img.linuxidc.com.
>
> 192.168.153.130
Server: 192.168.153.130
Address: 192.168.153.130#53
130.153.168.192.in-addr.arpa name = master.linuxidc.com.153.168.192.in-addr.arpa.
>
DNS CNAME記錄
CNAME記錄,即別名記錄,我們通過設(shè)置別名記錄,可以將多個(gè)名稱指向同一臺主機(jī),CNAME記錄的前提是必須要有一條A記錄,A記錄是創(chuàng)建CNAME記錄的前提.
這樣可以在ip變動的情況下,我們不用一個(gè)一個(gè)的去更改主機(jī)名到主機(jī)的A記錄映射,只需要改動別名到主機(jī)的一條A記錄就可以全部搞定,達(dá)到事倍功半的效果.
未使用別名(CNAME)的正向解析區(qū)域配置文件:
[root@localhost named]# vim linuxidc.com.zone
$TTL 1D
@ IN SOA master.linuxidc.com. email.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS master
master IN A 192.168.153.130
www IN A 192.168.153.129
nginx IN A 192.168.153.129
bbs IN A 192.168.153.129
img IN A 192.168.153.129
使用別名后的區(qū)域配置文件.
[root@localhost named]# vim linuxidc.com.zone
$TTL 1D
@ IN SOA master.linuxidc.com. email.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS master
master IN A 192.168.153.130
proxy IN A 192.168.153.129
www IN CNAME proxy
nginx IN CNAME proxy
bbs IN CNAME proxy
img IN CNAME proxy
檢查并重啟服務(wù),nslookup測試驗(yàn)證:
[root@localhost ~]# nslookup
> img.linuxidc.com
Server: 192.168.153.130
Address: 192.168.153.130#53
img.linuxidc.com canonical name = proxy.linuxidc.com. //別名
Name: proxy.linuxidc.com
Address: 192.168.153.129
> www.linuxidc.com
Server: 192.168.153.130
Address: 192.168.153.130#53
www.linuxidc.com canonical name = proxy.linuxidc.com.
Name: proxy.linuxidc.com
Address: 192.168.153.129
>