CentOS DNS服務詳解與基於bind的智能DNS
安裝bind
安裝DNS服務軟件Bind和相應工具包
#yum install bind bind-utils -y
#service named start
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
資源記錄類型 起始授權結構(SOA):指出當前區域內誰是 主DNS服務器 主機(A): 將域名FQND映射到IP 正向解析 別名(CNAME): 將A記錄指向的域名 指向 另外一個域名 郵件交換器(MX): 指出當前區域內 SMTP郵件服務器IP 名稱服務器(NS): 指出當前區域內有幾個DNS服務器在提供服務 反向解析(PRT): 將IP解析為域名FQND
named.ca文件必須存在,否則不能啟動服務 。此文件是根服務器資源記錄。
bind主配置文件為/etc/named.conf
options {
全局配置
};
logging {
日誌子系統配置
};
zone "." IN {
區域定義:本機能夠為哪些zone進行解析,就要定義哪些zone
};
include "/etc/named.rfc1912.zones"; 這是引入一個子配置文件,效果同等與在主配置文件上設置
include "/etc/named.root.key";
listen-on port 53 { 127.0.0.1; };#定義監聽IPV4端口及IP地址,如果是本機所有地址,填寫localhost listen-on-v6 port 53 { ::1; };#定義監聽IPV6端口及IP地址,如果是本機所有地址,填寫localhost 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; };#允許查詢的IP地址,可以填寫網段192.168.4.0/24 allow-transfer { none; };#允許哪些從DNS服務器IP進行復制,"none" 表示禁止區域傳輸 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"; 在named配置文件中,可以使用以下3種風格的註釋符號 C style: /* */ C++ style: // to end of line Unix style: # to end of line
主配置文件語法檢查命令
named-checkconf 或 service named configtest測試配置文件語法格式。沒有提示表示正確
以域名hunk.tech為例配置一個DNS服務器
正向區域
所謂的正向區域,指的是 FQDN > IP 轉換
創建正向區域步驟
1./etc/named.rfc1912.zones文件,添加一個區域
#vim /etc/named.rfc1912.zones zone "hunk.tech" IN { type master; file "named.hunk.tech"; allow-update { none; }; }; 配置文件的格式是每行後面都必須加分號結束,並且有花括號的地方,花括號兩邊必須要有空格 type: 用於定義區域類型,此時只有一個DNS服務器,所以為master,type可選值為:hint(根)|master(主的)|slave(輔助的)|forward(轉發) file:用於定義區域數據文件路徑,默認該文件保存在/var/named/目錄。
2.在主配置文件中定義的全局中directory設置參數的目錄中創建該區域數據庫文件
所屬組必須為named,且權限為640安全。所以建議復制一個原有的模板進行修改。
#cp -p named.localhost named.hunk.tech必須加-p保留原有權限屬性,
-rw-r-----. 1 root named 152 Jun 21 2007 named.hunk.tech
3.在建該區域數據庫文件定義資源記錄
資源記錄的格式:
name [ttl] IN RRtype Value
資源記錄名 有效時間 IN 類型 資源記錄的值
文件內容如下:
$TTL 600
@ IN SOA 6-DNS-1 admin.hunk.tech. (
0 ; Serial版本號,RFC1912 2.2建議的格式為YYYYMMDDnn 其中nn為修訂號2018011801,不能超過10位。每次更改都要在原來的基礎上加上1
2H ; 刷新時間,設置輔助 DNS多長時間與主 DNS進行Serial核對,此處為2小時。只通知給本區域解析庫文件中定義NS記錄的所有主機
10M ; 重試時間,應該小於刷新時間,當輔助 DNS試圖獲取主 DNS Serial時,如果主 DNS未響應,多長時間重新進行檢查
1D ; 決定輔助 DNS在沒有主 DNS的情況下權威地提供域名解析服務的時間長短
3H ) ; 在8.2版本之前,由於沒有獨立的 $TTL 指令,所以通過 SOA 最後一個字段來實現。但由於 BIND 8.2 後出現了 $TTL 指令,
該部分功能就不再由 SOA 的最後一個字段來負責,由 $TTL 全權負責,SOA 的最後一個字段專門負責 否定回答 ttl
@ IN NS 6-DNS-1
@ IN NS 6-DNS-2
6-DNS-1 IN A 192.168.4.200
6-DNS-2 IN A 192.168.4.201
6-WEB-1 IN A 192.168.4.205
www IN CNAME 6-WEB-1
@ IN MX 10 mail
mail IN A 192.168.4.205
解讀下:
$TTL 600 表示下面資源記錄ttl的值都為600秒。下面的每一條記錄都是可以繼承這行值的。
不帶單位指的是秒,支持這些時間格式:D 天;H 小時;M 分鐘;
@ IN SOA 6-DNS-1 admin.hunk.tech
SOA: 只能有一個,而且必須是第一個資源記錄。SOA記錄定義了一個域內的主DNS是誰
@: 通常可以簡寫為@,代表該區域名稱,
6-DNS-1: 主DNS服務器的FQDN,這裏會自動補全此域後綴。第二種寫法6-DNS-1.hunk.tech. 註意最後這個點是必須加的。
admin.hunk.tech: 此域的管理理郵件地址。@有特殊意義,所以用.表示
@
特殊字符“ @ ”,它就是 ORIGIN 的意思, $ORIGIN 後面定義的內容,如:$ORIGIN hunk.tech. 那之後使用 @ 來代替hunk.tech。
假如這個檔前面沒有定義 $ORIGIN 的話,那這個 @ 的值就以 named.conf 裏的 zone 為準。
@ IN NS 6-DNS-1
@ IN NS 6-DNS-2
NS: 可以有多條,定義了這一個區域哪些是DNS服務器
對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該在後續有一個A記錄
6-DNS-1 IN A 192.168.4.200
6-DNS-2 IN A 192.168.4.201
6-WEB-1 IN A 192.168.4.205
A: 只能定義在正向區域文件中
一行記錄定義一臺主機對應的IP地址
$GENERATE 1-9 HOST$ A 1.2.3.$ 定義了一組數字範圍。$GENERATE 1-9定義了$的值為1-9,
後面的$引用的就是的列表值,效果如下
HOST1.hunk.tech. 600 IN A 1.2.3.1
HOST2.hunk.tech. 600 IN A 1.2.3.2
HOST3.hunk.tech. 600 IN A 1.2.3.3
HOST4.hunk.tech. 600 IN A 1.2.3.4
HOST5.hunk.tech. 600 IN A 1.2.3.5
HOST6.hunk.tech. 600 IN A 1.2.3.6
HOST7.hunk.tech. 600 IN A 1.2.3.7
HOST8.hunk.tech. 600 IN A 1.2.3.8
HOST9.hunk.tech. 600 IN A 1.2.3.9
*.hunk.tech. IN A 5.5.5.5 泛域名.可以用來防止用戶輸入錯誤的信息而能正確跳轉。
比如說,wwwwwwww.hunk.tech 和www.hunk.tech 同樣是指向5.5.5.5
多條A記錄指向不同的IP的話,等同使用DNS做負載均衡
如:
WEB A 1.1.1.1
WEB A 2.2.2.2
6-WEB-1 IN AAAA 1000::A:B:0:0
AAAA:IPV6的資源記錄
@ IN MX 10 mail
MX: 可以有多個
用於標識smtp服務器
包含優先級和FQDN。優先級:0-99,數字越小,級別越高;
www IN CNAME 6-WEB-1
CNAME: 可以有多個
用於指定某臺主機的別名
每一臺主機都必須要有A記錄指向。
4.區域添加好後,使用區域庫命令檢查:
語法格式
named-checkzone "區域名稱" "區域文件"
#named-checkzone hunk.tech /var/named/named.hunk.tech
zone hunk.tech/IN: loaded serial 0
OK
5.重新加載數據庫信息
rndc reload
使用rndc命令。請參考rndc命令。
反向區域
所謂的反向區域,指的是 IP > FQDN 轉換
專業名詞:PTR
創建反向區域步驟
1./etc/named.rfc1912.zones文件,添加一個PTR區域
區域名稱:網絡地址反寫.in-addr.arpa.
比如:
172.16.100. --> 100.16.172.in-addr.arpa.
zone "4.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.4";
allow-update { none; };
};
2.在主配置文件中定義的全局設置中/var/named的目錄中創建該區域數據庫文件
所屬組必須為named,且權限為640安全。所以建議復制一個原有的模板進行修改。
#cp -p named.loopback named.192.168.4必須加-p保留原有權限屬性,
-rw-r-----. 1 root named 168 Dec 15 2009 named.192.168.4
3.在建該區域數據庫文件定義資源記錄
反向解析數據文件裏面只能有SOA、NS、PTR資源記錄,所有A記錄都要改為PTR記錄,
名稱為IP地址,IP地址可以寫全也可以簡寫,如果寫全則是IP地址反寫加上.in-addr.arpa.
例如:200.4.168.192.in-addr.arpa. PTR資源記錄的值為域名。
$TTL 600
@ IN SOA 6-DNS-1.hunk.tech. admin.hunk.tech. (
0 ; serial 參考正向區域的說明
600 ; refresh
600 ; retry
1D ; expire
3H ) ; minimum
NS 6-DNS-1.hunk.tech.
NS 6-DNS-2.hunk.tech.
200 PTR 6-DNS-1.hunk.tech.
201 PTR 6-DNS-2.hunk.tech.
205 PTR 6-WEB-1.hunk.tech.
206 PTR 7-WEB-2.hunk.tech.
格式上,註意是寫全域名哦,記得加上點.
4.區域添加好後,使用區域庫命令檢查:
語法格式
named-checkzone "區域名稱" "區域文件"
#named-checkzone 4.168.192.in-addr.arpa named.192.168.4
zone 4.168.192.in-addr.arpa/IN: loaded serial 0
OK
5.重新加載數據庫信息
rndc reload
使用rndc命令。請參考rndc命令。
通常在應用中,DNS的反向解析並不是很重要,可以不配置,當服務器中有域名作為郵件服務器時,此時可以配置反向解析,
因為郵件中過濾垃圾郵件的技術通常是解析郵箱地址,如果IP地址不能反解成一個域名則視為垃圾郵件。
測試工具與命令
rndc
語法格式:
rndc --> rndc (953/tcp)
rndc COMMAND
? COMMAND:
reload: 重載主配置文件和區域解析庫文件
reload zonename: 重載區域解析庫文件
retransfer zonename: 手動啟動區域傳送,而不管序列號是否增加
notify zonename: 重新對區域傳送發通知
reconfig: 重載主配置文件
querylog: 開啟或關閉查詢日誌文件/var/log/message.可以詳細到DNS查詢的細節。生產中不建議打開,除非用於排錯。
trace: 遞增debug一個級別
trace LEVEL: 指定使用的級別
notrace: 將調試級別設置為 0
flush: 清空DNS服務器的所有緩存記錄
freeze 關閉動態更新
thaw 啟用動態更新
dig
dig只用於測試dns系統,不會查詢hosts文件進行解析。
dig命令不會查緩存,而是直接查詢服務器
語法格式:
dig [-t type] name [@DNS服務器] [query options]
? 查詢選項:
+[no]trace:跟蹤解析過程 : dig magedu.com +trace
+[no]recurse:進行遞歸解析
測試反向解析:
dig -x IP dig –t ptr reverseip.in-addr.arpa
#dig -x 192.168.4.205
<<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -x 192.168.4.205
global options: +cmd
Got answer:
->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4233
flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
OPT PSEUDOSECTION:
EDNS: version: 0, flags:; udp: 4096
QUESTION SECTION:
205.4.168.192.in-addr.arpa. IN PTR
ANSWER SECTION:
205.4.168.192.in-addr.arpa. 600 IN PTR 6-WEB-1.hunk.tech.
----------------------------------------------------------------------------
模擬區域傳送:
dig -t axfr ZONE_NAME @DNS服務器
dig -t axfr hunk.tech.com @10.10.10.11
dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
dig -t NS . @a.root-servers.net
host
語法格式:
host [-t type] name [DNS服務器]
host –t NS hunk.tech 172.16.0.1
host –t soa hunk.tech
host –t mx hunk.tech
host –t axfr hunk.tech
host 1.2.3.4
#host -t A 6-WEB-1.hunk.tech
6-WEB-1.hunk.tech has address 192.168.4.205
#host www.hunk.tech 192.168.4.200
Using domain server:
Name: 192.168.4.200
Address: 192.168.4.200#53
Aliases:
www.hunk.tech is an alias for 6-WEB-1.hunk.tech.
6-WEB-1.hunk.tech has address 192.168.4.205
nslookup
語法格式:
nslookup [-option] [name | -] [DNS服務器]
? 交互式模式:
nslookup>
server IP: 指明使用哪個DNS server進行查詢
set q=RR_TYPE: 指明查詢的資源記錄類型
NAME: 要查詢的名稱
exit: 退出
C:\Users\Hunk>nslookup
默認服務器: public1.alidns.com
Address: 223.5.5.5
> server 192.168.4.200
默認服務器: [192.168.4.200]
Address: 192.168.4.200
> set q=a
> www.hunk.tech
服務器: [192.168.4.200]
Address: 192.168.4.200
名稱: 6-WEB-1.hunk.tech
Addresses: 192.168.4.205
172.18.8.10
Aliases: www.hunk.tech
DNS查詢中出現aa標記的話,就是權威查詢,也就是說,查詢的資源記錄就是在那臺DNS服務器直接查出來,而不是通過其他DNS查詢。
子域 與 委派
是相對父域來說的,指域名中的每一個段。各子域之間用小數點分隔開。放在域名最後的子域稱為最高級子域,或稱為一級域,在它前面的子域稱為二級域。
比如:
www.nansan.sz.hunk.tech.
hunk.tech為父域
sz為hunk.tech的子域,為一級子域
nansan為hunk.tech的子域,為二級子域
www是主機
實現子域的幾個方法:
第一種:
在同一個zone區域中定義
www.nansan.sz 600 IN A 2.2.2.2
------------------------------------------------------------------------------
第二種:
是那種有子公司的公司,使用子域來管理的。
這種情況就是在主DNS服務器/etc/named.rfc1912.zones獨立一個zone區域,並生成文件,交由子域管理員管理此文件
zone "sz.hunk.tech" IN {
type master;
file "named.sz.hunk.tech";
allow-update { none; };
};
zone區域文件named.sz.hunk.tech內容如下:
$ORIGIN .
$TTL 600 ; 10 minutes
sz.hunk.tech IN SOA 6-DNS-1.sz.hunk.tech. admin.sz.hunk.tech. (
21 ; serial
7200 ; refresh (2 hours)
600 ; retry (10 minutes)
86400 ; expire (1 day)
10800 ; minimum (3 hours)
)
NS 6-DNS-1.sz.hunk.tech.
$ORIGIN sz.hunk.tech.
6-DNS-1 A 192.168.4.200
7-WEB-2 A 7.7.7.7
www CNAME 7-WEB-2
----------------------------------------------------------------------------------------------------------------------
第三種:委派
是那種有子公司,並且更大規模的公司,委派由子域來管理的。
這種情況就是獨立一臺DNS服務器專門用來解析該子域服務。/etc/named.rfc1912.zones獨立一個zone區域,並生成文件,交由子域管理員管理此文件
需要將此DNS的主配置文件/etc/named.conf中的以下2行設置,必須聲明為no,而不可以註釋。否則查詢失敗,返回SERVFAIL
dnssec-enable no;
dnssec-validation no;
zone "bj.hunk.tech" IN {
type master;
file "named.bj.hunk.tech";
allow-update { none; };
};
zone區域文件named.bj.hunk.tech內容如下
$ORIGIN .
$TTL 600 ; 10 minutes
bj.hunk.tech IN SOA bj-dns.bj.hunk.tech. admin.bj.hunk.tech. (
23 ; serial
7200 ; refresh (2 hours)
600 ; retry (10 minutes)
86400 ; expire (1 day)
10800 ; minimum (3 hours)
)
NS bj-dns.bj.hunk.tech.
$ORIGIN bj.hunk.tech.
bj-dns A 192.168.4.204
bj-WEB-2 A 8.8.8.8
www
另外,在父域的DNS服務器上面的zone文件要定義委派的子域DNS的權威DNS服務器
bj NS bj-dns #bj子域 的NS 記錄為bj.hunk.tech中定義的DNS服務器
bj-dns A 192.168.4.204 # 對應子域權威DNS的A記錄
註意了,如果設置了主從DNS,那麽,在委派的時候,也是需要把委派域中的DNS服務器同時添加記錄,否則可能會單點故障。
轉發(forward)服務器
轉發功能可以用來在一些服務器上產生一個大的緩存,從而減少到外部服務器鏈路上的流量。它可以使用在和internet沒有直接連接的內部網絡進行域名服務器上,
用來提供對外部域名的查詢。只有當服務器是非授權的,並且緩存中沒有相關記錄時,才會進行轉發
? 註意:被轉發的服務器需要能夠為請求者做遞歸,否則轉發請求不予進行。在主配置文件中定義以下:
recursion yes
? 註意:關閉dnssec功能:
dnssec-enable no;
dnssec-validation no;
(1) 全局轉發: 對非本機所負責解析區域的請求,全轉發給指定的服務器
語法格式:
Options {
forward first 或 only;
forwarders { ip;可以有多個,用;號隔開};
};
如:
forward first;
forwarders { 192.168.4.204; };
(2) 特定區域轉發:僅轉發對特定的區域的請求,比全局轉發優先級高
zone "ZONE_NAME" IN {
type forward;
forward first 或 only;
forwarders { ip;可以有多個,用;號隔開};
};
如:
zone "hunk.com" IN {
type forward;
forward only;
forwarders { 192.168.4.204; };
};
轉發選項:
first :默認值。服務器首先請求轉發列表中的設定的DNS主機 ,如果轉發列表中的DNS主機不應答,該主機將自己從根DNS開始找應答。
only:只會請求轉發列表中的設定的DNS主機 ,如果轉發列表中的DNS主機不應答。也不會繼續找其他應答。
兩種查詢方法與根提示
從客戶端到本地DNS服務器是屬於遞歸查詢,而DNS服務器之間就是叠代查詢
遞歸查詢:客戶端得到結果要麽成功,要麽失敗。(本地客戶端和DNS服務直接交互,被請求的DNS服務器必須給出最終答案)
叠代查詢:服務器以相關參考性應答返回本地DNS。(DNS服務與DNS服務交互,得到的是參考答案)
比如說,客戶機查詢www.hunk.tech的時候,第一次查詢根服務器時,根會告訴你去找tech吧,找到tech的時候,他會說你去找hunk吧,
找到hunk的時候,發現www正好是自己管理的,就返回A記錄的IP地址了
根提示:一般情況下,DNS服務器之間的查詢方式都是叠代查詢。
如果要查詢域不是本地DNS負責的區域,那麽本地DNS就需要向外叠代查詢(叠代查詢從根域開始,如此,本地DNS就必須知道根域的IP地址)。根提示的功能可以讓本地DNS服務器查詢根域DNS服務器。
bind中ACL
這裏的ACL可別與之前學習的文件ACL權限混淆哦,當然,這也是bind安全管理的方法.
把一個或多個地址歸並為一個集合,並通過一個統一的名稱調用
與之前的shell編程中的函數一樣,把一條命令或多條命令放在一個函數體內,以後要用的時候,調用名稱即可。
語法格式:
acl acl_name {
ip;
net/prelen;
……
};
示例:
acl mynet {
172.16.0.0/16;
10.10.10.10;
};
這個ACL相當於mynet中定義了172.16.0.0/16網段所有主機,並且包含了10.10.10.10這一臺主機。
bind有四個內置的ACL
none: 沒有一個主機
any: 任意主機
localhost: 本機
localnet: 本機的IP同掩碼運算後得到的網絡地址
? 註意:只能先定義,後使用;因此一般定義在配置文件中,處於options的前面
智能DNS
實現的基礎就是view視圖
view是BIND9強大的新功能,允許名稱服務器根據詢問者的不同有區別的回答DNS查詢。特別是當運行拆分DNS設置而不需要運行多個服務器時特別有用。
每個視圖定義了一個將會在用戶的子集中見到的DNS名稱空間。
? 一個bind服務器可定義多個view,每個view中可定義一個或多個zone
? 每個view用來匹配一組客戶端
? 多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件
註意:
(1) 一旦啟用了view,所有的zone都只能定義在view中
(2) 僅在允許遞歸請求的客戶端所在view中定義根區域
(3) 客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表
語法格式:
view VIEW_NAME {
match-clients { ACL名稱; };
zone hunk.tech {
type master;
file “named.hunk.tech”; };
include "/etc/named.rfc1912.zones";
};
以下用一個實例來看ACL與view的搭配使用吧。不同地址解析不同的IP,即智能DNS
1.定義好ACL地址範圍,DNS讀取的時候,是由上往下匹配,所以,any必須放至最後
acl acl_net_192 { 192.168.4.0/24; };
acl acl_net_172 { 172.18.0.0/16; };
acl acl_other { any; };
2.把公共相關的合並至/etc/named.rfc1912.zones文件
zone "." IN {
type hint;
file "named.ca";
};
3.各個zone文件內容如下:註意www對應的IP
#vim named1.hunk.tech
$TTL 600 ; 10 minutes
@ IN SOA 6-DNS-1 admin (
24 ; serial
720 ; refresh (2 hours)
600 ; retry (10 minutes)
86400 ; expire (1 day)
10800 ; minimum (3 hours)
)
NS 6-DNS-1
6-DNS-1 A 192.168.4.200
6-WEB-1 A 1.1.1.1 #主要是觀察這裏
www CNAME 6-WEB-1
---------------------------------------------------------------------------
#vim named2.hunk.tech
$TTL 600 ; 10 minutes
@ IN SOA 6-DNS-1 admin (
24 ; serial
720 ; refresh (2 hours)
600 ; retry (10 minutes)
86400 ; expire (1 day)
10800 ; minimum (3 hours)
)
NS 6-DNS-1
6-DNS-1 A 192.168.4.200
7-WEB-3 A 2.2.2.2 #主要是觀察這裏
www CNAME 7-WEB-3
------------------------------------------------------------------------------------------
#vim named3.hunk.tech
$TTL 600 ; 10 minutes
@ IN SOA 6-DNS-1 admin (
24 ; serial
720 ; refresh (2 hours)
600 ; retry (10 minutes)
86400 ; expire (1 day)
10800 ; minimum (3 hours)
)
NS 6-DNS-1
6-DNS-1 A 192.168.4.200
6-WEB-1 A 9.9.9.9 #主要是觀察這裏
www
4.在主配置文件/etc/named.conf定義view
view net_192 {
match-clients { acl_net_192; };
zone "hunk.tech" {
type master;
file "named1.hunk.tech";
};
include "/etc/named.rfc1912.zones";
};
view net_172 {
match-clients { acl_net_172; };
zone "hunk.tech" {
type master;
file "named2.hunk.tech";
};
include "/etc/named.rfc1912.zones";
};
view net_other {
match-clients { acl_other; };
zone "hunk.tech" {
type master;
file "named3.hunk.tech";
};
include "/etc/named.rfc1912.zones";
};
include "/etc/named.root.key";
5.檢查語法:
#named-checkconf
#named-checkzone hunk.tech named1.hunk.tech
zone hunk.tech/IN: loaded serial 24
OK
#named-checkzone hunk.tech named2.hunk.tech
zone hunk.tech/IN: loaded serial 24
OK
#named-checkzone hunk.tech named3.hunk.tech
zone hunk.tech/IN: loaded serial 24
OK
6.重載入配置文件
#rndc reload
server reload successful
7.測試
把DNS查詢日誌打開
#rndc querylog
找一臺192網段的主機進行測試
#ip -4 addr
inet 192.168.4.207/24 brd 192.168.4.255 scope global ens33
從日誌可以看出來查詢匹配了view規則net_192
client 192.168.4.207#44511: view net_192: query: www.hunk.tech IN A +E (192.168.4.200)
找一臺172網段的主機進行測試
#ip -4 addr
inet 172.18.103.222/16 brd 172.18.255.255 scope global dynamic ens36
從日誌可以看出來查詢匹配了view規則net_172
client 172.18.103.222#51655: view net_172: query: www.hunk.tech IN A +E (172.18.103.226)
在本機使用127.0.0.1地址進行測試
#dig www.hunk.tech @127.0.0.1
從日誌可以看出來查詢匹配了view規則net_other
client 127.0.0.1#43506: view net_other: query: www.hunk.tech IN A + (127.0.0.1)
至此,智能DNS範例已經完成。如果想獲取更新實際中的IP段,可以根據這個腳本實現。
聯通電信最新IP網段
安全加固BIND
chroot是Linux系統對應用程序的一種安全約束機制。在應用程序執行了chroot系統調用後,它的執行被限定到chroot後的目錄下。這樣操作後,在最差的情況下,如果BIND被入侵了,那麽黑客所拿到的目錄權限會被限制到chroot後的目錄,不會對系統的其他文件造成泄露或者被惡意修改。
只需要安裝yum install bind-chroot
之後會將原有目錄與配置文件使用BIND重新掛載到/var/named/chroot/下面
使用mount可以看出來
/etc/named on /var/named/chroot/etc/named type none (rw,bind)
/var/named on /var/named/chroot/var/named type none (rw,bind)
/etc/named.conf on /var/named/chroot/etc/named.conf type none (rw,bind)
/etc/named.rfc1912.zones on /var/named/chroot/etc/named.rfc1912.zones type none (rw,bind)
/etc/rndc.key on /var/named/chroot/etc/rndc.key type none (rw,bind)
/usr/lib64/bind on /var/named/chroot/usr/lib64/bind type none (rw,bind)
/etc/named.iscdlv.key on /var/named/chroot/etc/named.iscdlv.key type none (rw,bind)
/etc/named.root.key on /var/named/chroot/etc/named.root.key type none (rw,bind)
/etc/services on /var/named/chroot/etc/services type none (rw,bind)
/etc/protocols on /var/named/chroot/etc/protocols type none (rw,bind)
/lib64/libnss_files-2.12.so on /var/named/chroot/lib64/libnss_files.so.2 type none (rw,bind)
CentOS DNS服務詳解與基於bind的智能DNS