BIND的安裝配置web
bind是幹啥的?數據庫
你們知道dns是FQDN解析成ip地址的協議,而bind這個軟件就是dns協議的功能的實現。而named是bind程序的運行的進程名緩存
咱們來看看bind這個程序有那些包組成吧,且都給咱們提供哪些功能。 安全
程序包:服務器
bind-libs:被bind和bind-utils包中的程序共同用到的庫文件;網絡
bind-utils:bind客戶端程序集,例如dig, host, nslookup等;dom
bind:提供的dns server程序、以及幾個經常使用的測試程序;ide
bind-chroot:選裝,讓named運行於jail模式下;工具
怎樣利用bind搭建一個dns服務器呢?oop
前期安裝軟件後的組成部分功能介紹:
bind程序:
主配置文件:/etc/named.conf
注:options定義了bind的特性。如:是否只容許本地客戶端查詢
/etc/named.iscdlv.key
/etc/named.rfc1912.zones 注:定義區域的的地方
/etc/named.root.key
解析庫文件:
/var/named/目錄下;
通常名字爲:ZONE_NAME.zone
注意:(1) 一臺DNS服務器可同時爲多個區域提供解析;
(2) 必需要有根區域解析庫文件: named.ca;
(3) 還應該有兩個區域解析庫文件:localhost和127.0.0.1的正反向解析庫;
正向:named.localhost
反向:named.loopback
rndc:remote name domain contoller
bind程序安裝完成以後,默認便可作緩存名稱服務器使用;若是沒有專門負責解析的區域,直接便可啓動服務;
CentOS 6: service named start
CentOS 7: systemctl start named.service
主配置文件詳細剖析
主配置文件格式:
全局配置段:
options { ... }
日誌配置段:
logging { ... }
區域配置段:
zone { ... }
那些由本機負責解析的區域,或轉發的區域;
注意:每一個配置語句必須以分號結尾;
緩存名稱服務器的配置:
listen-on port 53;
listen-on port 53 { 172.16.100.67; }; 注:監聽能與外部主機通訊的地址;
學習時,建議關閉dnssec 注:這個是安全的一個選項
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
//allow-query { localhost; }; 注:關閉僅容許本地查詢:
測試工具
dig, host, nslookup等
測試工具--dig命令:
dig [-t RR_TYPE] name [@SERVER] [query options]
dig作什麼的:用於測試dns系統,所以其不會查詢hosts文件;
查詢選項:
+[no]trace:跟蹤解析過程;
+[no]recurse:進行遞歸解析;
dig -x IP 注意:反向解析測試
dig -t axfr DOMAIN [@server] 模擬徹底區域傳送:
測試工具--host命令
host [-t RR_TYPE] name SERVER_IP
測試工具--nslookup命令:
nslookup [-options] [name] [server]
交互式模式:
nslookup>
server IP:以指定的IP爲DNS服務器進行查詢;
set q=RR_TYPE:要查詢的資源記錄類型;
name:要查詢的名稱;
rndc命令:named服務控制命令
rndc status 查看bind的運行狀態
rndc flush
rndc reload 從新加載配置文件
如何配置解析一個正向區域?
以magedu.com域爲例:
(1) 定義區域 注:在主配置文件中或主配置文件輔助配置文件中實現;
例如: /etc/named.rfc1912.zones這個輔助文件裏定義zone
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:區域名字即爲域名;
(2) 創建區域數據文件(主要記錄爲A或AAAA記錄)
建立位置:在/var/named目錄下創建區域數據文件;
文件爲:/var/named/magedu.com.zone
$TTL 3600
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. (
2017010801
1H
10M
3D
1D )
IN NS ns1
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.16.100.67
mx1 IN A 172.16.100.68
mx2 IN A 172.16.100.69
www IN A 172.16.100.67
web IN CNAME www
bbs IN A 172.16.100.70
bbs IN A 172.16.100.71
權限及屬組修改:
# chgrp named /var/named/magedu.com.zone
# chmod o= /var/named/magedu.com.zone
檢查語法錯誤:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
(3) 讓服務器重載配置文件和區域數據文件
# rndc reload 或# systemctl reload named.service
配置解析一個反向區域
(1) 定義區域
在主配置文件中或主配置文件輔助配置文件中實現;即/etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
反向區域的名字:反寫的網段地址.in-addr.arpa 舉例:100.16.172.in-addr.arpa
(2) 定義區域解析庫文件(主要記錄爲PTR)
示例,區域名稱爲100.16.172.in-addr.arpa;
$TTL 3600
$ORIGIN 100.16.172.in-addr.arpa.
@ IN SOA ns1.magedu.com. nsadmin.magedu.com. (
2017010801
1H
10M
3D
12H )
IN NS ns1.magedu.com.
67 IN PTR ns1.magedu.com.
68 IN PTR mx1.magedu.com.
69 IN PTR mx2.magedu.com.
70 IN PTR bbs.magedu.com.
71 IN PTR bbs.magedu.com.
67 IN PTR www.magedu.com.
權限及屬組修改:
# chgrp named /var/named/172.16.100.zone
# chmod o= /var/named/172.16.100.zone
檢查語法錯誤:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
(3) 讓服務器重載配置文件和區域數據文件
# rndc reload 或# systemctl reload named.service
怎樣爲一個主服務器配置一個從服務器實現冗餘呢?
注意:從服務器是區域級別的概念;
首先選一臺主機安裝bind程序
配置一個從區域:On Slave 以下
(1) 定義區域
定義一個從區域;
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { MASTER_IP; };
};
配置文件語法檢查:named-checkconf
(2) 重載配置
rndc reload 或者 systemctl reload named.service
在主dns上須要作以下操做
(1) 確保區域數據文件中爲每一個從服務配置NS記錄,而且在正向區域文件須要每一個從服務器的NS記錄的主機名配置一個A記錄,且此A後面的地址爲真正的從服務器的IP地址;
注意:時間要同步; ntpdate命令實現時間同步;
場景描述:假如公司某部門比較龐大須要獨立的dns,怎樣實現配置一個子域並受權?
子域受權:
正向解析區域受權子域的方法:
ops.magedu.com. IN NS ns1.ops.magedu.com.
ops.magedu.com. IN NS ns2.ops.magedu.com.
ns1.ops.magedu.com. IN A IP.AD.DR.ESS
ns2.ops.magedu.com. IN A IP.AD.DR.ESS
場景:當某dns不能上網,它能夠把請求轉發給其餘dns實現域名解析
定義轉發:
注意:被轉發的服務器必須容許爲當前服務作遞歸;
(1) 區域轉發:僅轉發對某特定區域的解析請求;
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { SERVER_IP; };
};
first:首先轉發;轉發器不響應時,自行去迭代查詢;
only:只轉發;
(2) 全局轉發:針對凡本地沒有經過zone定義的區域查詢請求,統統轉給某轉發器;
options {
... ...
forward {only|first};
forwarders { SERVER_IP; };
.. ...
};
bind中的安全相關的配置:
acl:訪問控制列表;把一個或多個地址歸併一個命名的集合,隨後經過此名稱便可對此集全內的全部主機實現統一調用;
acl acl_name {
ip;
net/prelen;
};
示例:
acl mynet {
172.16.0.0/16;
127.0.0.0/8;
};
bind有四個內置的acl
none:沒有一個主機;
any:任意主機;
local:本機;
localnet:本機所在的IP所屬的網絡;
訪問控制指令:
allow-query {}; 容許查詢的主機;白名單;
allow-transfer {}; 容許向哪些主機作區域傳送;默認爲向全部主機;應該配置僅容許從服務器;
allow-recursion {}; 容許哪此主機向當前DNS服務器發起遞歸查詢請求;
allow-update {}; DDNS,容許動態更新區域數據庫文件中內容;
bind view:
視圖:
view VIEW_NAME {
zone
zone
zone
}
view internal {
match-clients { 172.16.0.0/8; };
zone "magedu.com" IN {
type master;
file "magedu.com/internal";
};
};
view external {
match-clients { any; };
zone "magecdu.com" IN {
type master;
file magedu.com/external";
};
};
課外做業:whois命令; 註冊一個域名;
博客做業:正向解析區域、反向解析區域;主/從;子域;基本安全控制;
檢查配置文件語法錯誤:
named-checkconf [/etc/named.conf]