文章目錄
一、DNS域名:
根域名:.
一級域名:Top Level Domain: tld
com(公司)、edu(教育)、mil(軍事)、gov(政府)、net、org(組織)、int(反向)、arpa(反向)
二級域名:
最多127級域名
二、DNS查詢類型:
遞歸查詢
迭代查詢
三、解析類型:
FQDN --> IP
IP --> FQDN
四、DNS服務器類型
主DNS服務器: 管理和維護所負責解析的域內解析庫的服務器
從DNS服務器: 從主服務器或從服務器“複製”(區域傳輸)解析庫副本
緩存DNS服務器(轉發器)
(一)主從服務器工作原理:
1.主從服務器同步機制:
推:主服務器節點發生變化立即主動推送給從服務器
拉:從服務器定時從主服務器詢問拉取數據
2.區域傳輸:
完全傳輸:傳送整個解析庫
增量傳輸:傳遞解析庫變化的那部分內容
3.解析答案:
肯定答案:
否定答案:請求的條目不存在等原因導致無法返回結果
權威答案:
非權威答案:
4.區域解析庫: 由衆多資源記錄(RR)組成:
資源記錄:Resource Record, RR
5.記錄類型:
SOA: Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,必須位於解析庫的第一條記錄
NS: Name Server,專用於標明當前區域的DNS服務器
A: FQDN到IPv4地址解析;
AAAA: FQDN到IPv6地址解析;
PTR: IP 到FQDN域名解析;
CNAME: Canonical Name,別名記錄
MX: Mail eXchanger,郵件交換器
TXT: 對域名進行標識和說明的一種方式,一般做驗證記錄時會使用此項,如:SPF(反垃圾郵件)記錄,https驗證等
6.資源記錄定義的格式:
語法:name [TTL] IN rr_type value
(1)name: FQDN全稱域名,如www.test.com.
;當前域的名稱可省略不寫,直接寫成www系統會自動補全;@可用於引用當前區域的名字;
(2) TTL: 存在的資源記錄緩存時長;可從全局繼承,後面每條記錄可省略,如有特殊設定,則需要在記錄上顯示添加;全局設定如:$TTL 1D ;默認單位爲秒;
(3)IN: 表示Internet資源,照抄即可,條目中可繼承上一條記錄,省略不寫
(4)rr_type: 資源記錄類型,如A,CNAME,NS等
(5)value: 資源記錄類型對應的值,如A記錄對應的值爲域名解析對應的IP地址
每條資源記錄中:
(1)正向解析中,同一個域名可以通過多條記錄對應多個IP,此時DNS服務器會以輪詢方式響應,實現負載均衡
(2)同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機
區域數據庫文件基本格式:
$TTL 1D
@ IN SOA master admin (
0 ; serial #;serial 表示註釋
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
www A 192.168.37.100
可簡寫爲:
$TTL 1D
@ IN SOA master admin ( 0 1D 1H 1W 3H )
NS master
www A 192.168.37.100
SOA記錄格式:
@ :表示當前域
$TTL: 表示自己去其他DNS的域名解析的結果緩存的時間;1D表示一天,默認單位是秒
IN:表示intnet的類型;可以繼承上一條記錄的;
SOA:表示資源記錄類型;一個區域解析庫有且僅能有一個SOA記錄,必須位於解析庫的第一條記錄
serial:序列號主服務器解析庫變化時,其序列遞增
refresh:刷新時間間隔:從服務器從主服務器請求同步解析的時間間隔
retry:重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔
expire:過期時長:從服務器聯繫不到主服務器時,多久後停止服務
minimum:不存在的記錄的緩存時長
NS:指定誰提供DNS服務;
7.各資源記錄詳細格式:
SOA記錄格式:
name: 當前區域的名字,例如 test.com.
value: 有多部分組成
(1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字;
(2) 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換
(3) 主從服務區域傳輸相關定義以及否定的答案的統一的TTL
test.com. 86400 IN SOA ns.test.com. mail.test.com. ( 1 2H 10M 1W 1D )
NS記錄:
name: 當前區域的名字
value: 當前區域的某DNS服務器的名字,例如ns1.test.com.
注意:
(1) 相鄰的兩個資源記錄的name相同時,後續的可省略
(2) 對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該在後續有一個A記錄
test.com. IN NS ns1.test.com.
test.com. IN NS ns2.test.com.
ns1.test.com. IN A 192.168.37.100
ns2.test.com. IN A 192.168.37.101
A記錄
name: 某主機的FQDN,例如:www.test.com.
value: 主機名對應主機的IP地址
例如:
www.test.com. IN A 1.1.1.1
www.test.com. IN A 2.2.2.2
mx1.test.com. IN A 3.3.3.3
mx2.test.com. IN A 4.4.4.4
$GENERATE 1-254 HOST$ IN A 192.168.37.$ #連續範圍主機對應寫法
*.test.com. IN A 5.5.5.5
PTR記錄:
name: IP,有特定格式,把IP地址反過來寫,1.2.3.4,要寫作4.3.2.1;而有特定後綴:in-addr.arpa.,所以完整寫法爲:4.3.2.1.in-addr.arpa.
100.37.168.192.in-addr.arpa. IN PTR www.magedu.com.
CNAME記錄:
name: 別名的FQDN
value: 真正名字的FQDN
例如:
www.test.com. IN CNAME websrv.test.com.
websrv.test.com. IN A 192.168.37.100
五、搭建DNS服務:使用bind工具
環境準備:
1.安裝包:yum install bind
2.配置文件
- 主配置文件:/etc/named.conf
- 區域名稱存放文件:/etc/named.rfc1912.zones
- 區域數據庫存放路徑:/var/named/
- 正向解析區域數據庫模板文件:/var/named/named.localhost
- 反向解析區域數據庫模板文件:/var/named/named.loopback
- 從服務器數據庫文件存放路徑:/var/named/slaves
3.啓動服務:systemctl start named.service
(一)只緩存DNS服務器
1.設置DNS主配置文件:
vim /etc/named.conf
(1)設置監聽主機爲本機:整行註釋掉或改爲localhost
// listen-on port 53 { localhost; };
(2)設置允許查詢的主機:整行註釋掉或改爲any
// allow-query { any; };
以上兩條配置可爲局域網內客戶端訪問互聯網域名提供解析服務;
2.添加區域管理名稱
[root@CentOS7 ~]#vim /etc/named.rfc1912.zones
zone "test.com" IN {
type master;
file "test.com.zone";
};
3.添加區域數據庫
vim /var/named/test.com.zone
$TTL 1D
@ IN SOA master admin (1 3H 1M 1D 3H )
NS master
master IN A 192.168.37.100
www IN A 192.168.37.20
mail IN A 192.168.37.30
ftp IN A 192.168.37.40
4.修改數據庫文件所屬組以及權限
chgrp named /var/named/test.com.zone
chmod 640 /var/named/test.com.zone
5.啓動服務/重新加載配置文件
systemctl start named
rndc reload
客戶機測試:
(二)主從複製DNS服務器
所有服務器虛擬機環境都禁用防火牆和selinux
1.主DNS服務器
(1)配置主配置文件,設置允許爲其他主機提供服務,添加允許同步的從服務器IP
[root@master ~]#vim /etc/named.conf
options {
// listen-on port 53 { localhost; };
// allow-query { any; };
allow-transfer {192.168.37.103;}; #添加允許同步的從服務器IP
(2)添加區域名稱:
[root@master ~]#vim /etc/named.rfc1912.zones
zone "test.com" IN {
type master;
file "test.com.zone";
};
(3)創建數據庫文件:指定從服務器地址;需手工修改版本號
[root@master ~]#vim /var/named/test.com.zone
$TTL 1D
@ IN SOA master admin (1 3H 1M 1D 3H ) #需修改版本號
NS master
NS slave #指定從服務器域
master IN A 192.168.37.100
www IN A 192.168.37.20
slave IN A 192.168.37.103 #從服務器域名對應的IP地址
[root@master ~]chgrp named /var/named/test.com.zone #修改數據庫文件所屬組
[root@master ~]chmod 640 /var/named/test.com.zone #修改數據文件權限
(4)啓動服務/重新加載配置文件
[root@master ~]systemctl start named
[root@master ~]rndc reload
2.從DNS服務器
(1)設置允許爲其他主機提供服務;設置同步安全策略,不允許其他主機同步從服務器
vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; };
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; };
allow-transfer {none;};
(2)配置區域名稱:
[root@slave slaves]# vim /etc/named.rfc1912.zones
zone "test.com" IN { #區域名稱與主節點區域名稱一致
type slave; #區域類型
masters {192.168.37.100;}; #指定從的主節點IP
file "slaves/test.com.zone.slave";
};
(3)啓動服務/同步服務配置
[root@slave slaves]# systemctl start named
[root@slave slaves]# rndc reload
3.客戶端測試:
設定主從DNS 地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.37.101
DNS1=192.168.37.100
DNS2=192.168.37.103
PREFIX=24
DEFROUTE=yes
NAME="System eth0"
dig www.test.com
模擬主服務器宕機:
[root@master ~]#systemctl stop named
再次測試客戶機:
(三)DNS子域委派
父DNS
1.主配置文件
[root@father ~]# vim /etc/named.conf
(1)開啓對外服務功能:
options {
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
(2)關閉安全驗證:
dnssec-enable no;
dnssec-validation no;
2.配置父域的區域名稱文件:
[root@father ~]#vim /etc/named.rfc1912.zones
zone "baidu.com" IN {
type master;
file "baidu.com.zone";
};
[root@CentOS7 cd]#named-checkconf
3.父域的區域文件數據庫:
[root@father ~]#vim /var/named/baidu.com.zone
$TTL 1D
@ IN SOA master admin ( 0 1D 1H 1D 1D )
NS master
shanghai NS ns.shanghai #指定委派的子域DNS服務器
ns.shanghai A 192.168.37.103
[root@CentOS7 cd]#named-checkzone baidu.com /var/named/baidu.com.zone
4.啓動服務
子DNS
1.主配置文件:配置可提供對外服務功能
[root@father ~]# vim /etc/named.conf
開啓對外服務功能:
options {
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
}
2.區域名稱文件:創建子區域信息
zone "shanghai.baidu.com" IN {
type master;
file "shanghai.baidu.com.zone";
};
3.創建子域的區域數據庫
[root@CentOS7 ~]# vim /var/named/shanghai.baidu.com.zone
$TTL 1D
@ IN SOA master admin ( 0 1H 1H 1D 1D )
NS master
master A 192.168.37.103
www CNAME websrv
websrv A 192.168.37.199
[root@CentOS7 ~]# chgrp named /var/named/shanghai.baidu.com.zone #修改數據庫組爲named組
[root@CentOS7 ~]# chmod 640 /var/named/shanghai.baidu.com.zone #修改區域數據庫權限爲640
4.啓動服務/重新加載配置文件
[root@CentOS7 ~]# systemctl start named
[root@CentOS7 ~]# rndc reload
(四)轉發DNS服務器
1.轉發服務器配置
[root@CentOS7 cd]#vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
forward only;
forwarders {192.168.37.103;};
dnssec-enable no;
dnssec-validation no;
}
[root@CentOS7 cd]#systemctl start named #啓動服務
2.指定轉到的服務器配置
[root@CentOS7 cd]#vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
[root@CentOS7 cd]#systemctl start named #啓動服務
(五)智能DNS服務器(CDN)
場景:企業站點分不同地區服務器存放,爲不同地區用戶訪問提供更快速訪問,用戶訪問提交到DNS調度器,DNS調度器根據不同地區的IP用戶,找到對應地區距離近的主機上,返回對應應用服務器IP給用戶,用戶直接訪問離自己近的主機。
[root@CentOS7 named]#vim /etc/named.conf
acl beijingnet {
192.168.37.0/24;
192.168.38.0/24;
};
acl shanghainet {
172.16.0.0/16;
172.18.0.0/16;
};
acl othernet {
any;
};
options {
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
};
logging {
};
view view_beijing {
match-clients { beijingnet;}; #match-clients中名稱對應acl名稱
include "/etc/named.rfc1912.zones.bj";
};
view view_shanghai {
match-clients { shanghainet;};
include "/etc/named.rfc1912.zones.sh";
};
view view_othernet {
match-clients { othernet;};
include "/etc/named.rfc1912.zones.other";
};
include "/etc/named.root.key";
[root@CentOS7 named]#vim /etc/named.rfc1912.zones
zone "." IN { #把named.conf中的根域移動到區域文件中
type hint;
file "named.ca";
};
zone "magedu" IN {
type master;
file "magedu.com.zone.bj";
};
[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
[root@CentOS7 named]#cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.other
[root@CentOS7 named]#chgrp named /etc/named.rfc1912.zones.*
[root@CentOS7 named]#vim /var/named/magedu.com.zone.bj
$TTL 1D
@ IN SOA master admin ( 0 1H 1H 1D 3H)
NS master
master A 192.168.37.100
www A 192.168.37.200
[root@CentOS7 named]#vim /var/named/magedu.com.zone.sh
$TTL 1D
@ IN SOA master admin ( 0 1H 1H 1D 3H)
NS master
master A 192.168.37.100
www A 172.16.0.200
[root@CentOS7 named]#vim /var/named/magedu.com.zone.other
$TTL 1D
@ IN SOA master admin ( 0 1H 1H 1D 3H)
NS master
master A 192.168.37.100
www A 10.0.0.200
配置時需要注意:
數據文件中SOA記錄小括號()兩邊有空格,至少右邊的括號左側需要空格;正常情況括號內的值爲紅色,如有白色則可能會帶來問題,rndc reload 檢測不出來此情況。