1、BIND軟件的組成: web
BIND軟件的主要rpm包:數據庫
bind:主程序包,包括:vim
DNS服務程序(named)centos
解析庫安全
檢測工具;bash
bind-libs:Bind軟件的共享庫程序包;服務器
bind-utils:通用工具包,包括各類服務測試工具,如:dig, host, nslookup等;網絡
bind-chroot:設置僞根,啓用監牢模式;bind-9+版本中出現的安全功能實現;ide
應用層協議是DNS協議;DNS,Domain Name System;工具
DNS的應用程序實現:BIND;
BIND程序的服務主程序:named;
53/TCP:完成區域傳送;
53/UDP:完成主機名的解析查詢;
953/TCP:rndc程序的監聽端口;
配置文件:
主配置文件:/etc/named.conf
輔助配置文件:能夠在主配置文件中利用include命令來包含其餘配置文件;
/etc/named.rfc1912.zones:聲明瞭區域;
安全認證祕鑰文件
/etc/named.iscdlv.key
/etc/named.root.key
主程序:/usr/sbin/named
遠程管理工具:/usr/sbin/rndc
配置文件檢測工具:
/usr/sbin/named-checkconf
區域文件檢測工具:
/usr/sbin/named-checkzone
日誌文件:
/var/log/named.log
區域文件的存放目錄
/var/named
存放輔助區域文件的目錄
/var/named/slaves
2、主配置文件/etc/named.conf
文件格式:
分段式配置格式
1.配置行的註釋方式:
//:單行註釋
/* */:多行註釋
2.主配置文件中的經常使用配置段
1)訪問控制列表配置段
acl string { address_match_element;... }; //注意花括號左右有空格
2)全局選項配置段
options { statements; ... };
3)日誌配置段
logging { statements; ... };
4)區域配置段
zone string optional_class { statements;... };
5)視圖配置段
view string optional_class { statements; ... }
6)include命令
include /PATH/TO/SOME_CONFIG_FILE
3.全局配置段:
options {
listen-on port 53 { 127.0.0.1; 172.16.72.2; };
//在啓動DNS服務時,named進程所監聽的套接字;
directory "/var/named"
//定義解析庫(區域數據庫文件)的根目錄:在主配置文件中添加此配置語句以後,能夠在後面定義區域數據庫時使用相對路徑
allow-query { localhost; };
//訪問控制語句,意思是容許本服務器去處理哪些主機發送來的解析查詢請求;默認爲localhost,即只容許本機以127.0.0.1發送查詢請求,allow-query { any; }則能夠處理全部主機發來的解析查詢請求
recursion yes;
//容許本服務器爲全部查詢請求作遞歸查詢,建議關閉,使用條件遞歸
allow-recursion { 172.16.72.1/16; };
//訪問控制指令,容許爲哪些客戶端作遞歸查詢;
pid-files "/run/named/named.pid"
//定義存放主進程pid文件的路徑
};
4.配置區域段:
zone "FQDN" IN {
//聲明一個區域名稱;此名稱要是有FQDN表示,如:ppp213.com
type master;
/*區域的類型
master:主區域,主服務器
slave:輔助區域,從區域
hint:提示區域,僅能在根域上設置
file "name.localhost"
forward:轉發區域*/
file "named.localhost"
//存放與該域有關的解析信息的數據庫文件的路徑;若是是相對路徑,則相對於主配置文件的全局配置段中的"directory"指令所定義的目錄而言;
//注:文件的全部權和權限設置必須可以讓named用戶有讀取權限;
allow-update { none; };
//訪問控制指令,容許哪些客戶端對數據庫內容進行動態更新:主要用於DDNS;
allow-transfer { 172.16.0.0/16; };
//容許哪些主機可以從當前服務器進行區域傳送;
allow-query { address_match_element; ... };
//訪問控制指令,容許哪些主機進行區域內的解析查詢
allow-notify { address_match_element; ... };
//訪問控制指令,容許哪些主服務器向當前服務器發送區域變動通知;
};
例:在主配置文件中添加區域段
zone "ppp213.com" IN { type master; file "ppp213.zone"; allow-update { none; }; allow-transfer { none; }; };
3、建立資源記錄的通常步驟
1.建立數據庫文件,修改權限並添加相應資源記錄:
vim /var/named/ppp213.zone
示例:
@ IN SOA ns1.ppp213.com. root.ppp213.com. (2018040701 1H 15M 1W 1D) IN NS ns1 IN MX 10 mail.ppp213.com. ns1 IN A 192.168.109.136 mail IN A 192.168.109.136 www IN A 192.168.109.100 www IN A 192.168.109.101 web IN CNAME www ftp IN CNAME web * IN A 192.168.109.136 ppp213.com. IN A 192.168.109.136
2.檢測區域文件的語法格式:
named-checkzone FQDN /PATH/TO/ZONE_FILE
3.對主配置文件或區域數據庫文件進行修改以後並不會當即生效;只有在從新加載配置文件和區域文件以後文件才生效
重載配置文件的方法:
1)systemctl reload named.service
2)rndc reload
3)systemctl restart named.service(不推薦)
4)service named reload(centos 6-)
注意:對於應用程序服務進程衝在配置文件的操做,若是能使用reload,就使用reload,不要輕易執行restart
4、客戶端測試工具:dig,host,nslookup
1.dig命令
格式: dig [@server] [-t type] [-x addr] [queryopt]
@server:表示這次查詢請求使用指定的DNS服務器而不使用在/etc/resolve.conf文件中定義的nameserver;
-t RR_type:指定這次查詢的資源記錄的類型:
-x addr:進行反向解析查詢時,用於指定IP地址:
queryopt:查詢選項:
+[no]recurse:要求目標服務器必須[不]以遞歸的方式進行查詢
+[no]trace:[不]跟蹤顯示整個查詢請求的解析過程
模擬區域傳送(須要在主配置文件區域段中修改Allow-transfer{ };)
dig -t axfr|ixfr DOMAIN_NAME_FQDN
2.host命令
host [-t RR_type ] {name} [server]
格式:
host [-t RR_type] {name} [server]
host -t A www.ppp213.com 192.168.109.136
3.nslookup命令
交互式命令:
server IP_ADDR:指定使用哪一個DNS服務器進行查詢
set q=RR_type:指定這次查詢的資源記錄的類型及相關答案
set type=RR_type:同q
FQDN | IP_ADDR :根據FQDN進行正向查詢解析或根據IP_ADDR進行反向查詢解析;
命令行工具:
nslookup FQDN NS_SERV
示例:
nslookup www.ppp213.com 192.168.109.136
5、配置反向解析區域
反向域的FQDN:
172.16.0.0/16 反向域名: 16.172.in-addr.arpa
添加區域段
zone "109.168.192.in-addr.arpa" IN { type master; file "192.168.109.local"; allow-transfer { none; }; };
建立192.168.109.local文件(同時修改權限)
$ORIGIN 109.168.192.in-addr.arpa. $TTL 86400 @ IN SOA ns1.ppp213.com. root.ppp213.com. (2018041301 1H 15M 1W 6H) IN NS ns1.ppp213.com. 136 IN PTR ns1.ppp213.com. 136 IN PTR mail.ppp213.com. 100 IN PTR www.ppp213.com. 101 IN PTR www.ppp213.com.
檢測:
named-checkzone 109.168.192-addr.arpa 192.168.109.local
rndc reload
dig -x 192.168.109.136
6、主從DNS服務器:(主輔)
1.注意事項:
1)主服務器和輔助服務器都是域級別的概念
2)必須保證主輔服務器之間的網絡通訊的順暢以及時間同步
3)爲了確保全部的名稱服務器都能被識別和使用,須要在區域數據庫中添加全部的名稱服務器的NS資源記錄
4)區域數據庫中每條ns資源記錄都必須有A記錄與之對應
5)從服務器上能夠默認將複製而來的數據庫文件保存至/var/named/slaves/目錄中
6)在主服務器上應該經過訪問控制指令容許從服務器進行區域傳送,同時從服務器要指定主服務器
2.配置從DNS服務器
將主服務器(192.168.109.136)的對應區域段修改成容許從服務器(192.168.109.2)區域傳送
allow-transfer { 192.168.109.2; };:
將從服務器的全局配置段修改成容許解析查詢
allow-query { any; };
在從服務器中添加區域段:
zone "ppp213.com" IN { type slave; masters { 192.168.109.136; }; file "slaves/ppp213.slave.zone"; allow-transfer { none; }; }; zone "109.168.192.in-addr-apra" IN { type slave; masters { 192.168.109.136; }; file "slaves/192.168.109.slvae.local"; allow-transfer { none; }; };
以後在從服務器使用dig進行名稱解析時,會自動調用主服務器的數據庫,注意將主輔服務器的防火牆關閉
iptables -F; setenforce 0
7、轉發器:
全局轉發:對於凡是不能由本服務器管理的域的請求,所有以轉發的方式由指定的服務器進行遞歸查詢;
在bind的主配置文件的全局配置段中定義;
options { forward first; forwarders { 192.168.109.136; }; };
區域轉發:專門針對於某個特定的域的請求,若是不能給出權威答案,則轉發至指定的服務器進行遞歸查詢;
在bind的主配置文件的區域配置段中定義;
zone "ppp213.com" IN { type forward; //類型爲轉發區域 forward only; //only:只轉發,不找本地。first:先轉發,再找本地 forwarders; { 192.168.109.136; }; };
8、子域委派受權
將子域的管理權受權給子域中的名稱服務器;父域中不保存任何子域數據庫中資源記錄;但爲了可以成功受權,須要添加一條NS記錄,指向子域的名稱服務器;
在子域名稱服務器(192.168.109.2)中添加區域段:
zone "pp.ppp213.com" IN { type master; file "pp.ppp213.com.zone"; allow-transfer { none; }; };
建立pp.ppp213.com.zone文件
$ORIGIN pp.ppp213.com. $TTL 86400 @ IN SOA ns1.pp.ppp213.com. root.pp.ppp213.com. ( 2018041301 3H 30M 10D 8H ) IN NS ns1 ns1 IN A 192.168.109.2 www IN A 1.2.3.4
在父域名稱服務器(192.168.109.136)中,在ppp213.zone文件添加兩行
pp.ppp213.com. IN NS ns1.pp.ppp213.com. ns1.pp.ppp213.com. IN A 192.168.109.2
此時在其餘服務器使用
dig -t a www.pp.ppp213.com @192.168.109.136
能夠獲得 1.2.3.4 的結果
9、Bind中的基礎安全相關的配置:
1.訪問控制列表:
acl,Access Control List,將一個或多個IP地址,歸併爲一個集合,隨後能夠經過實現定義好的名稱對集合中的多個IP地址進行統一調用或設置;
bind內部有四個內置的acl:
any:包括全部的IP地址,整個IP地址棧中的全部有效IP地址;
none:不包括任何一個IP地址;
local:僅包含本地已經配置生效的全部IP地址;
localnet:包含本機全部已經配置並生效的IP地址所在的網段的IP地址;
定義acl的語法格式:
acl acl_name {
[!] ip_addr;
[!] network/prefix;
};
示例:
acl myacl { 192.168.109.136/24; ! 192.168.109.2; 192.168.109.3; };
注意:
1)在調用ACL以前,確保事先已經定義了指定的ACL;
2)一般在主配置文件/etc/named.conf中定義ACL,建議將自定義的ACL放置在配置文件的最前面,以保證後面的操做能夠成功調用到此ACL;
全部的allow*語句,都是能夠調用ACL的,包括:
allow-update { acl_name; };
allow-transfer { acl_name; };
allow-recursion { acl_name; };
allow-query { acl_name; };
allow-notify { acl_name; };
...