相關理論介紹:
什麼是DNS?
DNS( Domain Name System)是“域名系統”的英文縮寫,是因特網的一項服務,它作爲將域名和IP地址相互映射的一個分佈式數據庫,能夠使人更方便的訪問互聯網。DNS 使用TCP和UDP端口53。當前,對於每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符。
DNS域名空間:
整個DNS架構是一顆倒置的樹狀層次結構,這個樹狀結構稱爲DNS域名空間(DNS domain namespace)。自頂而下依次是根域,頂級域,二級域,其種二級域是供公司和個人申請使用。
FQDN:(Full Qualified Domain Name)完全合格限定域名,是指包含全路徑的主機名(列出了所有域),保證可以在DNS空間中準確定位主機,也就是主機名的一種完全表示形式。
DNS軟件:實現DNS服務的程序
BIND:Berkely Internet Name Domain ,ISC (www.isc.org) ,使用最廣方的DNS軟件
DNS服務器:域名服務器是指保存有該網絡中所有主機的域名和對應IP地址,並具有將域名轉換爲IP地址功能的服務器。
解析類型:
Name-->IP 正向解析
IP-->Name 反向解析
注意:正反向解析是完全不同的兩顆解析樹,不必在同一個服務器上,正反向區域記錄也沒必要完全對應
DNS查詢模式:
遞歸(Recursion):一次詢問就要得到結果的查詢方式,客戶端本地指向的DNS服務器,多工作在此種模式,它收到客戶端請求後,會全權負責代替客戶端去做解析,知道得到答案回覆給客戶端。
迭代(Interactive):每次查詢得到的是一個相對答案,需要多次詢問,才能得到最終答案,互聯網上DNS之間的查詢模式多是迭代查詢。每個DSN只專門負責自己改解析的區域。
主DNS服務器:維護所負解析的域內解析庫服務器;解析庫由管理員維護
從 DNS服務器:從主DNS服務器或其它DNS服務器那裏"複製"(區域傳遞)一份解析庫
序列號:解析庫的版本號,前提,任何時候,主服務器解析庫發生變化,其序列遞增
刷新時間:從服務器從主服務器請求同步的時間間隔
重試時長:從服務器請求同步失敗時,再次嘗試的時間間隔(小於刷新間隔)
過期時長:從服務器始終聯繫不上主服務器時候,多久之後放棄服務器角色,停止提供服務
"通知"機制:即便下次同步時間沒到,如果主服務器記錄有變更,會主動通知從服務器過來同
步數據區域傳送:
全量傳送:傳遞整個解析庫
增量傳送:傳送解析庫變化的那部分內容
區域解析庫:由衆多資源記錄組成
資源記錄:Resource Record (RR)
記錄類型:A, PTR, SOA, NS, CNAME, MX...
SOA: Start Of Authority, 起始授權記錄,一個區域解析庫有且僅有一個SOA記錄,且必須爲解析庫的第一條記錄
A: Internet Address,作用 FQDN-->IP
AAAA: FQDN-->IPV6
PTR: PoinTeR, IP-->FQDN
NS: Name Server, 專用於標明當前區域的DNS服務器
CNAME: Canonical Name,別名記錄
MX: Mail Exchanger, 郵件交換器,標明當前域內誰是郵件服務器
資源記錄定義的格式:
語法:name [TTL] IN RR_type value
注意:
1.TTL可以全局集成,TTL是指允許其他服務器將數據在緩存中存放TTL 所指定的時間。如果你的數據不是經常變動或變動不大,可以考慮將TTL默認
值設爲幾天
2.@可用於引用當前區域的名字
3.同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式響應
4.同一個值也可能有過個不同的定義名字,通過多個不同的名字指向同一個值定義,僅表示通過多個不同的名字找到同一個主機
注:爲了方便描述,下文所用到的 hsp.com. 是一個虛擬的域名
SOA:(Satart Of Authorization 起始授權記錄)
name: 當前區域的名字,例如“hsp.com.”
value: 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字
1.當前區域的主DNS服務器FQDN,也可以使用當前區域的名字
2.當前區域的管理員的郵箱地址,但郵箱地址中不可使用@,一般用.替換,如admin.hsp.com
3.(主從服務協調的屬性以及否定的答案的統一的TTL)
如:
hsp.com.86400IN SOA ns.hsp.com. nsadmin.hsp.com. (
201509100;序列號
2H;刷新時間
10M;重試時間
1W ;過期時間
1D ;否定答案的TTL值
)
NS:Name Server
name:當前區域的名字
value:當前區域的某DNS服務器的名字,例如:ns.hsp.com.
注意:一個區域可以有多個NS記錄
例如:
hsp.com.IN NS ns1.hsp.com.
hsp.com.IN NS ns2.hsp.com.
注意:
1.相鄰的兩個資源記錄的name相同時,後續的可省略,上述示列中第二行的name hsp.com. 可以省略不寫
2.對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該在後續有一個A記錄
MX: Mail Exchanger
name:當前區域的名字
value:當前區域的某郵件服務器(smtp)的主機名
一個區域內,MX記錄可以有多個,但是每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級,數字越小,優先級越高
例如:
hsp.com.IN MX 10 mx1.hsp.com.
IN MX 20 mx2.hsp.com.
注意:
1.對於MX記錄而言,任何一個MX記錄後面的服務器名字,都應在後續有一個A記錄
A:Address
name:某主機的FQDN名,如www.hsp.com.
value:主機名對應的主機的IP地址
例如:
www.hsp.com.IN A 1.1.1.1
www.hsp.com.IN A1.1.1.2
mx1.hsp.com.IN A 1.1.1.3
mx2.hsp.com.IN A 1.1.1.3
注:一下兩種書寫代表泛域名解析,避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析至某特定地址
*IN A 1.1.1.4
hsp.com.IN A 1.1.1.4
AAA: IPv6的A紀錄
name:FQDN
value:IPv6,同上,只是IP地址是IPv6格式的地址
PRT:
name:IP地址,遵循固定格式,IP地址需反向書寫,1.2.3.4 要寫做4.3.2.1,且特定後綴是in-addr.arpa.,完整寫法爲4.3.2.1-in-addr.arpa.
value:FQDN
例如:
4.3.2.1.in-addr.arpa.IN PRT www.hsp.com.
簡寫成:4IN PTR www.hsp.com.
注意:網絡地址及後綴可以省略,主機地址依然需要反向書寫
CNAME:
name:別名的FQDN
value:正式名字的FQDN
如下配置:如果訪問www.hsp.co.cn ,則會被引導至www.hsp.com.
www.hsp.com.cn IN CNAME www.hsp.com.
實驗目標:搭建DNS服務器,實現正向,反向解析,及DNS服務器主從複製功能 ,子域授權,視圖。
實驗環境:
1.主機S1 IP地址爲:172.17.0.10
主機S2 IP地址爲:172.17.0.30
主機S7 IP地址爲: 172.17.0.20
實驗步驟:
首先在S1上實現緩存服務器設置
一:檢查bind軟件包有無安裝如下軟件包,如果沒有,使用yum install安裝
~]$rpm -qa bind* bind-libs-9.8.2-0.37.rc1.el6.x86_64 #庫文件 bind-9.8.2-0.37.rc1.el6.x86_64 #bind 程序 bind-utils-9.8.2-0.37.rc1.el6.x86_64 #工具包 bind的相關文件路徑: /etc/named.conf #主配置文件 /etc/named.rfc1912.zones #區域配置文件 /var/named #保存區解析庫文件的目錄
二:編輯主機S1的bind的配置文件(etc/named.conf,/etc/named.rfc1912.zones)
配置文件中可以使用//或/* */ 來註釋 options { Opions 裏定義的全局配置,會對所有區域生效,如監聽端口扥等 // 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"; // allow-query { localhost; }; #允許查詢的客戶端,可以使用any ;none;localhost,IP等來做限制 recursion yes; #是否認允許給客戶端遞歸查詢,本地DNS這個一定要開啓 dnssec-enable no; #dnssec 安全相關的高級配配置,關閉dnssec功能 dnssec-validation no; #dnssec 安全相關的高級配置,關閉dnssec功能 // dnssec-lookaside auto; /* 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; #hint 是根區域類型, 可選類型有hint|master|slave 分別代表根區域|主區域|從區域 file "named.ca"; #區域解析庫文件 }; include "/etc/named.rfc1912.zones"; #代表會讀取/etc/named.rfc1912.zones中定義的區域文件 //include "/etc/named.root.key"; ]#named-checkconf #檢查配置文件是否有語法錯誤,沒有任何輸出則代表語法正確 [root@S1 ~]# service named start #嘗試啓動bind 服務 Generating /etc/rndc.key: [ OK ] Starting named: [ OK ] [root@S1 ~]# ss -tuan | grep 53 #檢查默認端口53有沒有正常監聽 udp UNCONN 0 0 172.17.0.10:53 *:* ...省略了其它不相關的N行輸出 注:至此,S1 server 172.17.0.10 已經可以作爲一個緩存服務器工作。
三:修改主機S1的區域配置文件 (/etc/named.rfc1912.zones),添加如下zone
zone "hsp.com" IN { type master; file "hsp.com.zone"; allow-update { none; }; }; ]$named-checkconf #檢查配置文件是否有語法錯誤 四:創建區正向解析庫文件 ]$cd /var/named/ [root@S1 named]# vim hsp.com.zone #創建區域數據文件hsp.com.zone,文件內容如下 [root@S1 named]# chmod 640 hsp.com.zone #修改權限爲640 [root@S1 named]# chown .named hsp.com.zone #改變屬組爲named [root@S1 named]# ll hsp.com.zone #驗證權限和屬組 -rw-r----- 1 root named 374 Sep 20 21:57 hsp.com.zone [root@S1 named]# named-checkzone "hsp.com" hsp.com.zone #檢查區域數據文件是否有語法錯誤 zone hsp.com/IN: loaded serial 3940705495 OK [[email protected] /var/named]$chown :named hsp.com.zone #修改hsp.com.zone的屬組爲named(因named服務會以named用戶來運行服務) [email protected] /var/named]$ll hsp.com.zone #驗證文件權限爲640,屬組爲named -rw-r----- 1 root named 330 Sep 17 00:02 hsp.com.zone [[email protected] /var/named]$service named start #啓動named服務 Starting named: [ OK ] [root@S1 named]# host -t A ns1.hsp.com 172.17.0.10 #使用host 命裏測試能否成功正向解析ns1.hsp.com, Using domain server: Name: 172.17.0.10 Address: 172.17.0.10#53 Aliases: ns1.hsp.com has address 172.17.0.10 #對照hsp.com.zone數據文件,可知解析成功 #同理,解析mx1.hsp.com,對照hsp.com.zone文件,可知解析成功 [root@S1 named]# dig -t A mx1.hsp.com. 172.17.0.10 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A mx1.hsp.com. 172.17.0.10 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14750 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;mx1.hsp.com.INA ;; ANSWER SECTION: mx1.hsp.com.86400INA172.17.0.40 #此處可見解析成功 ;; AUTHORITY SECTION: hsp.com.86400INNSns1.hsp.com. hsp.com.86400INNSns2.hsp.com. ;; ADDITIONAL SECTION: ns1.hsp.com.86400INA172.17.0.10 ns2.hsp.com.86400INA172.17.0.30 ;; Query time: 3 msec ;; SERVER: 172.17.0.10#53(172.17.0.10) ;; WHEN: Mon Sep 21 00:15:18 2015 ;; MSG SIZE rcvd: 113 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 45733 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;172.17.0.10.INA ;; AUTHORITY SECTION: .10783INSOAa.root-servers.net. nstld.verisign-grs.com. 2015092000 1800 900 604800 86400 ;; Query time: 3 msec ;; SERVER: 172.17.0.10#53(172.17.0.10) ;; WHEN: Mon Sep 21 00:15:18 2015 ;; MSG SIZE rcvd: 104 測試泛域名解析: [root@S1 named]# host -t A 88.hsp.com 172.17.0.10 #嘗試正向解析不存在的主機88.hsp.com Using domain server: Name: 172.17.0.10 Address: 172.17.0.10#53 Aliases: 88.hsp.com has address 172.17.0.99 #解析到了172.17.0.99 ,正是在區域文件的添加的泛域名解析的IP,所以成功。
注:至此主DNS正向解析成功完成 ;接下來,將在S1上創建反向解析區域和解析庫文件。
]$vim /etc/named.rfc1912.zones #修改區域配置文件,在文件末尾添加如下反向解析區域"0.17.172.in-addr.arpa" zone "0.17.172.in-addr.arpa" IN { type master; file "0.17.172.zone"; }; ~]$cd /var/named/
[root@S1 named]# vim 0.17.172.zone #創建如下反向解析文件
[root@S1 named]# chmod 640 0.17.172.zone #修改權限爲640 [root@S1 named]# chown .named 0.17.172.zone #修改其屬組爲named [root@S1 named]# ll 0.17.172.zone #驗證權限,屬組修改成功 -rw-r----- 1 root named 347 Sep 21 00:31 0.17.172.zone [root@S1 named]# named-checkzone "0.17.172.in-addr.arpa" 0.17.172.zone #檢查反向解析文件有無語法錯誤 zone 0.17.172.in-addr.arpa/IN: loaded serial 3940705495 OK [root@S1 named]# rndc reload #重新加載配置文件 server reload successful [root@S1 named]# dig -x 172.17.0.40 @172.17.0.10 #反向解析IP 172.17.0.40 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 172.17.0.40 @172.17.0.10 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3858 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;40.0.17.172.in-addr.arpa.INPTR ;; ANSWER SECTION: 40.0.17.172.in-addr.arpa. 86400INPTRmx1.hsp.com. #解析正確 ;; AUTHORITY SECTION: 0.17.172.in-addr.arpa.86400INNSns1.hsp.com. ;; ADDITIONAL SECTION: ns1.hsp.com.86400INA172.17.0.10 ;; Query time: 1 msec ;; SERVER: 172.17.0.10#53(172.17.0.10) ;; WHEN: Wed Sep 30 02:00:21 2015 ;; MSG SIZE rcvd: 101 也可以使用nslookup 來做測試: [root@S1 named]# nslookup > 172.17.0.10 #指定DNS服務器 Server:172.17.0.10 Address:172.17.0.10#53 10.0.17.172.in-addr.arpaname = ns1.hsp.com. 10.0.17.172.in-addr.arpaname = www.hsp.com.0.17.172.in-addr.arpa. > 172.17.0.40 Server:172.17.0.10 Address:172.17.0.10#53 40.0.17.172.in-addr.arpaname = mx1.hsp.com. #解析成功
至此,主DNS服務器正反向解析成功
小結一下以上測試用到過的的命令有dig, nslook,host
dig [-t type] name [@SERVER] [query options]
dig用於測試dns系統,因此,不會查詢hosts文件進行解析; 查詢選項: +[no]trace:跟蹤解析過程 +[no]recurse:進行遞歸解析 測試反向解析: dig -x IP @SERVER 模擬區域傳送: dig -t axfr ZONE_NAME @SERVER [root@S2 slaves]# dig -t axfr hsp.com @172.17.0.10 #可傳送整個解析區域 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t axfr hsp.com @172.17.0.10 ;; global options: +cmd hsp.com.86400INSOAns1.hsp.com. admin.hsp.com. 3940705495 7200 600 604800 86400 hsp.com.86400INNSns1.hsp.com. hsp.com.86400INMX10 mx1.hsp.com. *.hsp.com.86400INA172.17.0.99 ftp.hsp.com.86400INCNAMEwww.hsp.com. mx1.hsp.com.86400INA172.17.0.40 ns1.hsp.com.86400INA172.17.0.10 www.hsp.com.86400INA172.17.0.10 hsp.com.86400INSOAns1.hsp.com. admin.hsp.com. 3940705495 7200 600 604800 86400 ;; Query time: 2 msec ;; SERVER: 172.17.0.10#53(172.17.0.10) ;; WHEN: Thu Sep 24 22:23:30 2015 ;; XFR size: 9 records (messages 1, bytes 229)
host命令:
host [-t type] name [SERVER]
[root@S2 slaves]# host -t A www.hsp.com 172.17.0.10 Using domain server: Name: 172.17.0.10 Address: 172.17.0.10#53 Aliases: www.hsp.com has address 172.17.0.1
nslookup命令:
nslookup [-option] [name | -] [server] 交互式模式: nslookup> server IP: 指明使用哪個DNS server進行查詢; set q=RR_TYPE: 指明查詢的資源記錄類型; NAME: 要查詢的名稱;
然後實現從DNS服務器配置
一:如上文創建主DNS服務器時一樣,編輯主配置文件/etc/named.conf, 註釋掉不需要的配置,關閉dnssec等等。
二:編輯/etc/named/named.rfc ,添加如下兩個區域文件:
zone "hsp.com" IN { type slave; #類型爲slaves masters {172.17.0.10;}; #指定它的主DNS服務器 file "slaves/hsp.com.zone"; #路徑必須在slaves下,區域名和主DNS中的區域名必須對應 }; zone "0.17.172.in-addr.arpa" IN { type slave; #類型爲slaves masters {172.17.0.10;}; #指定它的主DNS服務器 file "slaves/0.17.172.zone"; #路徑必須在slaves下,區域名和主DNS中的區域名必須對應 };
三:啓動named 服務
[root@S2 slaves]# named-checkconf #檢查配置文件有無語法錯誤,沒有任何輸出代表語法正確 [root@S2 slaves]# service named restart #重啓named服務 Stopping named: [ OK ] Generating /etc/rndc.key: [ OK ] Starting named: [ OK ] [root@S2 slaves]# ls #可以發現區域文件已經自動傳送過來了 0.17.172.zone hsp.com.zone [root@S2 slaves]# host -t A www.hsp.com 172.17.0.30 #正解www.hsp.com Using domain server: Name: 172.17.0.10 Address: 172.17.0.10#53 Aliases: www.hsp.com has address 172.17.0.10 #正解成功 [root@S2 slaves]# host -t PTR ftp.hsp.com 172.17.0.30 #通過從DNS服務器正解ftp.hsp.com Using domain server: Name: 172.17.0.30 Address: 172.17.0.30#53 Aliases: ftp.hsp.com is an alias for www.hsp.com.
四:驗證主從同步功能,主DNS服務器S1的修改,能否自動傳送到從DNS服務器S2
修改主DNS服務器,添加一條A記錄 172.17.0.66,並將版本號+1
[root@S1 named]# rndc reload server reload successful #tail /var/log/messages #查看系統日誌
查看DNS服務器區域文件是否有剛剛添加的新記錄
至此: 主從,同步完成。
創建子域並實現子域授權:
此時將創建子域ops.hsp.com,並將S7作爲子域的DNS服務器
S7 172.17.0.20
一:創建子域ops.hsp.com DNS服務器
[root@s7 named]# vim /etc/named.rfc1912.zones #創建如下區域 zone "ops.hsp.com" IN { type master; file "ops.hsp.com.zone"; }; [root@s7 named]# named-checkconf #檢查配置文件語法 [root@s7 named]# vim /var/named/ops.hsp.com.zone #區域解析庫文件內容如下
[root@s7 named]# named-checkzone "ops.hsp.com" ops.hsp.com.zone #檢查解析庫文件語法 zone ops.hsp.com/IN: loaded serial 2015092000 OK [root@s7 named]# systemctl restart named.service #重啓服務 [root@s7 named]# systemctl status named.service #查看服務狀態 named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; disabled) Active: active (running) since Mon 2015-09-21 18:37:43 CST; 11s ago.... ...此處略去N行輸出信息... www.ops.hsp.com has address 172.17.0.23 [root@s7 named]# host -t A ns1.ops.hsp.com 172.17.0.20 Using domain server: Name: 172.17.0.20 Address: 172.17.0.20#53 Aliases: ns1.ops.hsp.com has address 172.17.0.20
二:驗證能否解析子域本身
[root@s7 named]# host -t A www.ops.hsp.com 172.17.0.20 #可以解析ops區域 Using domain server: Name: 172.17.0.20 Address: 172.17.0.20#53 Aliases: www.ops.hsp.com has address 172.17.0.23
三:在主DNS服務器S1授權子域ops.hsp.com
如下圖所示,在主DNS服務器上添加
四:在主DNS服務器測試能否解析子域
[root@S1 named]# dig -t A ns1.ops.hsp.com @172.17.0.10 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A ns1.ops.hsp.com @172.17.0.10 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1483 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;ns1.ops.hsp.com.INA ;; ANSWER SECTION: ns1.ops.hsp.com.86099INA172.17.0.20 #成功解析 ;; AUTHORITY SECTION: ops.hsp.com.86099INNSns1.ops.hsp.com. ;; Query time: 4 msec ;; SERVER: 172.17.0.10#53(172.17.0.10) ;; WHEN: Wed Sep 30 03:14:38 2015 ;; MSG SIZE rcvd: 63
五:測試在子域能否解析父域
[root@s7 named]# dig -t A ftp.hsp.com @172.17.0.20 ; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A ftp.hsp.com @172.17.0.20 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33341 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ftp.hsp.com.INA ;; ANSWER SECTION: ftp.hsp.com.86400INCNAMEwww.hsp.com. #解析成功 www.hsp.com.85911INA172.17.0.10 ;; AUTHORITY SECTION: hsp.com.85911INNSns1.hsp.com. ;; ADDITIONAL SECTION: ns1.hsp.com.85911INA172.17.0.10 ;; Query time: 145 msec ;; SERVER: 172.17.0.20#53(172.17.0.20) ;; WHEN: Wed Sep 30 03:15:41 CST 2015 ;; MSG SIZE rcvd: 108
視圖
Bind View:爲了實現來自不同區域的客戶,解析到不同的之地址,返回到不同的結果
試圖:
一個bind服務器可以定義多個view,每個view中可以定義一個或多個zone 每個view用來匹配一組客戶端
多個view內可能需要對同一個區域進行解析,但使用不同區域解析庫文件
view VIEW_NAME {
match-clients {};
}
注意:
1.一旦啓用了view,使用zone都只能定義在view中
2.僅有必要在匹配到允許遞歸請求的客戶所在的view中定義根區域
3.客戶端請求到達時,是自上而下
利用視圖,實現分離解析:(不同客戶端請求解析同一主機,得到不同的解析結果)
重新規劃S1,S2的IP地址如下圖所示
S1有兩張網卡,地址分別爲192.168.1.110,172.17.0.10
S2IP地址爲192.168.1.111
期望172.17網段客戶機和其它網段客戶機對www.hsp.com解析出不同結果
一:先在主配置文件中定義一個acl方便後續使用
二:創建視圖internal,external
view internal { #視圖internal的起始標記 match-clients { mynet; }; allow-recursion { mynet; }; zone "." IN { #所有需要查詢的ZONE,都必須放置於視圖中,所有,將/etc/named.conf 中的根區域移動至此處 type hint; file "named.ca"; }; zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; 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 { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; zone "hsp.com" IN { type master; file "hsp.com.zone"; zone "0.17.172.in-addr.arpa" IN { type master; file "0.17.172.zone"; notify yes; also-notify {172.17.0.30;}; }; }; #視圖internal的結束標記 view external { #視圖external,用來爲S2 192.168.1.111提供單獨解析,因爲其IP並不會被上面internal 中的acl匹配到,所以用此視圖中的區域解析庫文件 match-clients { any; }; zone "hsp.com" in { type master; file "hsp.com.external"; #單獨的及解析庫文件 allow-update { none; }; }; }; [ root@S1 named]# named-checkconf #檢查語法
[root@S1 named]# cp -a hsp.com.zone hsp.com.external #複製原解析庫作爲模板 並做如下修改
[root@S1 named]# rndc reload #重載配置文件 server reload successful
三:驗證解析結果
[root@S2 ~]# dig -t A music.hsp.com @192.168.1.110 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t A music.hsp.com @192.168.1.110 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18864 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;music.hsp.com.INA ;; ANSWER SECTION: music.hsp.com.86400INA172.17.0.166 #它用的hsp.com.external庫文件解析的,實驗成功 ;; AUTHORITY SECTION: hsp.com.86400INNSns1.hsp.com. ;; ADDITIONAL SECTION: ns1.hsp.com.86400INA172.17.0.10 ;; Query time: 5 msec ;; SERVER: 192.168.1.110#53(192.168.1.110) ;; WHEN: Wed Sep 30 04:54:35 2015 ;; MSG SIZE rcvd: 81 [root@s7 ~]# dig -t A music.hsp.com @172.17.0.10 ; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A music.hsp.com @172.17.0.10 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4712 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;music.hsp.com.INA ;; ANSWER SECTION: music.hsp.com.86400INA172.17.0.66 #解析出來的仍舊是172.17.0.66,因爲它被Internal view匹配到了 ;; AUTHORITY SECTION: hsp.com.86400INNSns1.hsp.com. ;; ADDITIONAL SECTION: ns1.hsp.com.86400INA172.17.0.10 ;; Query time: 5 msec ;; SERVER: 172.17.0.10#53(172.17.0.10) ;; WHEN: Wed Sep 30 05:00:43 CST 2015 ;; MSG SIZE rcvd: 92
補充:
bind中基礎的安全相關的配置:
acl:把一個或多個主機歸併爲一個集合,並通過一個統一的名稱調用:
acl acl_name {
ip;
ip
net/prelen;
};
示列:
acl mynet {
172.17.0.0/16;
};
bind 有四個內置的acl;
none:沒有一個主機
any:任意主機
local:本機
localnet:本機的IP同掩碼運算後得到的網絡地址
注意:acl 只能先定義後使用,因此,其一般定義在配置文件的options前面
訪問控制的指令
allow-query {}: 允許查詢的主機,白名單,如果不指定主機,所有被拒接
allow-transfer {}: 允許區域傳送的主機,白名單,如果不指定主機,所有被拒接
allow-recursion {}:允許遞歸的主機
allow-update {}: 允許更新的主機,比較危險,一般情況是拒絕所有 allow-update {none}
注:訪問控制指令放在zone 中,只對zone生效,如果放在options中,對所有zone生效