DNS and BIND
名稱解析:把一種代號轉換成為另一種代號的功能
是應用程序基于某個搜索鍵在指定的數據庫查詢,查詢到對應的鍵以后,對應鍵被找出來的過程!
passwd —《nsswith》/etc/nsswith.conf
注意:查詢的時候用到的是UDP的53,主從復制走的是tcp(但是也用到udp)
DNS: Domain Name Service,協議(C/S, 53/udp, 53/tcp);應用層協議;
BIND:Bekerley Internat Name Domain, ISC (www.isc.org)
TCP: 面向連接的協議; UDP: User Datagram Protocol,無連接協議
本地名稱解析配置文件:hosts
/etc/hosts %WINDOWS%/system32/drivers/etc/hosts 1.1.1.1 www.magedu.com 1.2.2.2 www.apple.com
這個就導致,一個機器要想知道地址會要很大的一個文件!為了解決這個問題,就把這種集中起來做成一個集中的存儲!就有了DNS!
DNS域名分類
1、 根域
2、 一級域名:Top Level Domain: tld
com, edu, mil, gov, net, org, int,
三類:組織域、國家域(.cn, .ca, .hk, .tw)、反向域 .in-addr.arpa
3、二級域名 (magedu)
4、 三級域名 (www、ftp等)
最多127級域名
ICANN(The Internet Corporation for Assigned Names and Numbers)互聯網名稱與數字地址分配機構,負責在全球范圍內對互聯網通用頂級域名(gTLD)以及國家和地區頂級域名(ccTLD)系統的管理、以及根服務器系統的管理
5.DNS域名結構
DNS解析
DNS查詢類型:
遞歸查詢
遞歸查詢:只發起一次請求,最終能得到答案
迭代查詢
迭代:發起一次請求,不一定得到答案
名稱服務器:域內負責解析本域內的名稱的主機;
根服務器:13組服務器
解析類型:
Name –> IP
IP –> Name
注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹;
DNS服務器的類型:
-
主DNS服務器
-
輔助DNS服務器
-
緩存DNS服務器(一般企業里用為了轉發)
-
轉發器
兩種同步方式push(主服務器向從服務器推送)、pull(從服務器定期從主中拉出數據)
主DNS服務器:維護所負責解析的域內解析庫服務器;解析庫由管理維護; 從DNS服務器:從主DNS服務器或其它的從DNS服務器那里“復制”(區域傳遞)一份解析庫; 序列號:解析庫的版本號;前提:主服務器解析庫內容發生變化,其序列遞增; 刷新時間間隔:從服務器從主服務器請求同步解析庫的時間間隔; 重試時間間隔:從服務器從主服務器請求同步解析庫失敗時,再次嘗試的時間間隔; 過期時長:從服務器始終聯系不到主服務器時,多久多后放棄從服務器角度,停止提供服務; “通知”機制:主服務器解析庫發生變化時,會主動通知從服務器
注意:主的能更改 從的只能復制 當備份,改了主 的以后要同步數據庫(該版本號) 要不從不能同步
區域傳輸
區域傳輸:
完全傳輸:傳送整個解析庫
增量傳輸:傳遞解析庫變化的那部分內容
Domain: Fully Qualified Domain Name
正向:FQDN –> IP
反向: IP –> FQDN
負責本地域名的正向和反向解析庫:
正向區域
反向區域
DNS解析
一次完整的查詢請求經過的流程:
Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 頂級域名DNS-->二級域名DNS…
解析答案:
-
肯定答案:
-
否定答案:請求的條目不存在等原因導致無法返回結果
-
權威答案:查到的最后記錄的確有的
-
非權威答案:別的記錄中轉發的
資源記錄
區域解析庫:由眾多RR組成:
數據庫每一個條叫一個資源記錄(Resource Record),資源記錄有類型 ,用于表示資源的功能
資源記錄:Resource Record, RR
記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX
-
SOA:Start Of Authority,起始授權
-
NS:Name Server,域名服務器
-
MX:mail eXchanger:郵件交換器
-
A:Address,(FQDN–>IP)
-
PTR: PoiTeR,(IP–>FQDN)
-
AAAA:Address,FQDN–>IPv6
-
CNAME:Canonical Name,正式名稱(別名記錄)
DNS:FQDN –> IP
資源記錄定義的格式:
語法:name [TTL] IN rr_type value
注意:
(1) TTL可從全局繼承
(2) @可用于引用當前區域的名字
(3) 同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式響應
(4) 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機
SOA:
name: 當前區域的名字,例如“magedu.com.”; value: 有多部分組成 (1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字; (2) 錄前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換,例如linuxedu.magedu.com; (3) (主從服務協調屬性的定義以及否定的答案的統一的TTL) 例如: magedu.com. 86400 IN SOA ns.magedu.com.(這里是主dns) nsadmin.magedu.com. ( 2015042201 ;序列號 2H ;刷新時間 10M ;重試時間 1W ;過期時間 1D ;否定答案的TTL值 )
NS:
name: 當前區域的名字 value: 當前區域的某DNS服務器的名字,例如ns.magedu.com.; 注意:一個區域可以有多個NS記錄; 例如: magedu.com. IN NS ns1.magedu.com. magedu.com. IN NS ns2.magedu.com. 注意: (1) 相鄰的兩個資源記錄的name相同時,后續的可省略; (2) 對NS記錄而言,任何一個ns記錄后面的服務器名字,都應該在后續有一個A記錄;
MX:
name: 當前區域的名字 value: 當前區域的某郵件服務器(smtp服務器)的主機名; 一個區域內,MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級;數字越小優先級越高; 例如: magedu.com. IN MX 10 mx1.magedu.com. IN MX 20 mx2.magedu.com. 注意: (1) 對MX記錄而言,任何一個MX記錄后面的服務器名字,都應該在后續有一個A記錄;
A:
name: 某主機的FQDN,例如www.magedu.com. value: 主機名對應主機的IP地址; 例如: www.magedu.com. IN A 1.1.1.1 www.magedu.com. IN A 1.1.1.2 mx1.magedu.com. IN A 1.1.1.3 mx2.magedu.com. IN A 1.1.1.3 $GENERATE 1-254 HOST$(這個可以改成想要的) A 1.2.3.$ (一次定義多個A記錄 ---- HOST1-254) *.magedu.com. IN A 5.5.5.5 (解決了 wwww.mageedu.com 三級域名多寫的只能解析) magedu.com. IN A 6.6.6.6 (解決了不寫 www 也能訪問) 注意后邊三個: $GENERATE *.magedu.com. IN A 1.1.1.4 magedu.com. IN A 1.1.1.4 避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址;
AAAA:
name: FQDN value: IPv6
PTR:
name: IP,有特定格式,把IP地址反過來寫,1.2.3.4,要寫作4.3.2.1;而有特定后綴:in-addr.arpa.,所以完整寫法為:4.3.2.1.in-addra.arpa. value: FQDN 例如: 4.3.2.1.in-addr.arpa. IN PTR www.magedu.com. 簡寫成: 4 IN PTR www.magedu.com. 注意:網絡地址及后綴可省略;主機地址依然需要反著寫
CNAME(別名記錄):
name: 別名的FQDN value: 正工名字的FQDN; 例如: web.magedu.com. IN CNAME www.magedu.com.
互聯網域名
域名注冊:
代理商:萬網, 新網;godaddy
注冊完成以后,想自己用專用服務來解析
管理后臺:把NS記錄指向的服務器名稱,和A記錄指向
的服務器地址
BIND的安裝配置:
dns服務,程序包名bind,程序名named
程序包: bind:提供服務 bind-libs:提供庫文件 bind-utils:測試服務 bind-chroot: /var/named/chroot/ /var/named 放的是區域數據庫文件
服務腳本和名稱:/etc/rc.d/init.d/named,unbound.service
主配置文件:
-
/etc/named.conf,
-
/etc/named.rfc1912.zones,
-
/etc/rndc.key
-
/etc/unbound/unbound.conf
解析庫文件:/var/named/ZONE_NAME.ZONE
注意:
(1) 一臺物理服務器可同時為多個區域提供解析;
(2) 必須要有根區域文件;named.ca
(3) 應該有兩個(如果包括ipv6的,應該更多)實現localhost
和本地回環地址的解析庫
rndc: remote name domain controller,
默認與bind安裝在同一主機,且只能通過127.0.0.1連接
named進程
提供輔助性的管理功能;953/tcp
DNS配置與安裝
-
安裝bind
-
設置為開機啟動 chkconfig named on(centos 6)、systemctl enable named (centos 7)并啟動試試
-
配置區域數據庫及相關文件!
/etc/named.conf (此文件是全局配置文件)
主配置文件:/etc/named.conf
全局配置:options {};
日志子系統配置:logging {};
區域定義:本機能夠為哪些zone進行解析,就要定義哪些zone;
zone "ZONE_NAME" IN {};
注意:任何服務程序如果期望其能夠通過網絡被其它主機訪問,至少應該監聽在一個能與外部主機通信的IP地址上
緩存名稱服務器的配置:
監聽外部地址即可;
dnssec: 建議關閉dnssec,設為no
例:
套路:
主DNS名稱服務器: (1) 在主配置文件中定義區域 zone "ZONE_NAME" IN { type {master|slave|hint|forward}; file "ZONE_NAME.zone"; }; (2) 定義區域解析庫文件 出現的內容: 宏定義; 資源記錄; 主配置文件語法檢查: named-checkconf 解析庫文件語法檢查: named-checkzone "magedu.com" /var/named/magedu.com.zone 加載配置文件 rndc status|reload ;service named reload
一、主DNS名稱服務器 正向區域:
1、安裝bind包,啟動服務
2、創建zone信息
vi /etc/named.conf
listen-on port 53 { localhost; }; allow-query {any;};
3、在主配置文件中定義區域(vim named.rfc1912.zones或者在主配置文件中加)
zone "ZONE_NAME" IN { type {master|slave|hint|forward}; file "ZONE_NAME.zone"; }; zone "magedu.com" IN { type master; file "magedu.com.zone"; };
4.配置區域數據庫文件(vim /var/named/magedu.com.zone)
$TTL 86400 magedu.com. IN SOA ns1.magedu.com. admin.magedu.com. (2016092601 1D 10M 1W 1H ) magedu.com. IN NS ns1 magedu.com. IN NS ns2 ns1 IN A 10.1.252.213 ns2 IN A 10.1.252.210 websrv IN A 10.1.252.213 websrv IN A 10.1.252.210 www IN CNAME websrv @ IN MX 10 mailsrv mailsrv IN A 10.1.252.210 $GENERATE 1-9 server$ IN A 1.1.1.6$ * IN A 10.1.252.213 @ IN A 10.1.252.213
5、更改數據庫文件的權限
chgrp named magedu.com.zone
chmod 640 magedu.com.zone
6、主配置文件語法檢查:
named-checkconf
解析庫文件語法檢查:
named-checkzone "magedu.com /var/named/magedu.com.zone
7、重新加載配置文件
rndc status|reload
service named reload
二、從服務器配置
1、應該為一臺獨立的名稱服務器
2、主服務器的區域解析庫文件中必須有一條NS記錄指向從服務器
3、從服務器只需要定義區域,而無須提供解析庫文件;解析庫文件應該放置于/var/named/slaves/目錄中
4、主服務器得允許從服務器作區域傳送
5、主從服務器時間應該同步,可通過ntp進行;
6、bind程序的版本應該保持一致;否則,應該從高,主低
從服務器配置步驟
1、裝包,啟服務
2、更改配置文件 vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query {any;};
allow-transfer {從IP;}; 主服務器
allow-transfer {none;}; 從服務器
(000)更改主的配置文件,使之加上從服務器的記錄
@ IN NS ns2 ns2 IN A 10.1.252.21
3、改vim /etc/named.rfc1912.zones 注意這里建的空間要與主空間的名字要一致
格式
zone "ZONE_NAME" IN { type slave; masters { MASTER_IP; };//這里寫的是主DNS服務器的地址 file "slaves/ZONE_NAME.zone";//從服務器的文件單獨保存在 /var/named/slave 目錄內,/后邊隨便起個名就行沒要求 };
例:
zone "qzx.com" IN { type slave; masters {10.1.253.73;}; file "slaves/qzx.com.slave"; }; rndc reload
傳送成功;也可以看日志/var/log/messages;走的是TCP端口但是也需要UDP協議
4、權限限制 named.conf
訪問控制的指令:
allow-query {}: 允許查詢的主機;白名單;
allow-transfer {}:允許區域傳送的主機;白名單
allow-recursion {}: 允許遞歸的主機,建議全局使用
allow-update {}: 允許更新區域數據庫中的內容
例:為了安全起見只讓固定的從主機能同步,從主機不允許讓別的主機同步
在主的DNS配置文件中加上 allow-transfer {10.1.253.73;};//允許區域傳送的主機;白名單 括號內寫上IP地址 在從的DNS配置文件中加上 allow-transfer {none;};
三、反向區域:
區域名稱:網絡地址反寫.in-addr.arpa. 172.16.100. –> 100.16.172.in-addr.arpa.
(1) 定義區域
zone "ZONE_NAME" IN { type {master|slave|forward}; file "網絡地址.zone" }; 例 zone "1.10.in-addr.arpa" IN { type master; file "10.1.zone"; };
(2) 區域解析庫文件
注意:不需要MX和A,以及AAAA記錄;以PTR記錄為主;
示例:
$TTL 86400 @ IN SOA ns1.qzx.com. admin.magedu.com. ( 2016092901 1H 5M 7D 1D ) IN NS ns1.qzx.com. 73.253 IN PTR ns1.qzx.com. 73.253 IN PTR www.qzx.com. 1.100 IN PTR ftp.qzx.com.
(3)、語法檢查
[root@localhost named]# named-checkconf [root@localhost named]# named-checkzone "1.10.in-addr.arpa" 10.1.zone
(4)重讀配置文件
[root@localhost named]# rndc reload server reload successful
測試命令講解
測試命令dig
dig [-t type] name [@SERVER] [query options]
dig只用于測試dns系統,不會查詢hosts文件進行解析
查詢選項:
+[no]trace:跟蹤解析過程 : dig +trace magedu.com
+[no]recurse:進行遞歸解析
測試反向解析:
dig -x IP = dig –t ptr reverseip.in-addr.arpa
模擬區域傳送:
dig -t axfr ZONE_NAME @SERVER
dig -t axfr magedu.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 [SERVER]
host –t NS magedu.com @172.16.0.1
host –t soa magedu.com
host –t mx magedu.com
host –t axfr magedu.com
host 1.2.3.4
nslookup命令:
nslookup [-option] [name | -] [server]
? 交互式模式:
nslookup>
server IP: 指明使用哪個DNS server進行查詢
set q=RR_TYPE: 指明查詢的資源記錄類型
NAME: 要查詢的名稱
測試:改客戶端主機 vim /etc/resolv.conf
配置文件的重新加載
rndc命令
rndc:
rndc –> rndc (953/tcp)
rndc COMMAND
COMMAND:
-
reload: 重載主配置文件和區域解析庫文件
-
reload zone: 重載區域解析庫文件
-
retransfer zone: 手動啟動區域傳送過程,而不管序列號是增加
-
notify zone: 重新對區域傳送發通知
-
reconfig: 重載主配置文件
-
querylog: 開啟或關閉查詢日志文件/var/log/message(默認不記錄查詢,打開后每查詢一次就記錄一次)
-
trace: 遞增debug一個級別
-
trace LEVEL: 指定使用的級別
-
notrace:將調試級別設置為 0
-
flush:清空DNS服務器的所有緩存記錄
-
status :查詢狀態
bind中ACL
bind中基礎的安全相關的配置:
acl: 把一個或多個地址歸并為一個集合,并通過一個統一的名
稱調用
格式:
acl acl_name { ip; net/prelen; …… };
示例:
acl mynet { 172.16.0.0/16; 10.10.10.10; };
bind有四個內置的acl:
-
none: 沒有一個主機
-
any: 任意主機
-
localhost: 本機
-
localnet: 本機的IP同掩碼運算后得到的網絡地址
注意:只能先定義,后使用;因此一般定義在配置文件中,處于options的前面
訪問控制
訪問控制的指令:
allow-query {}: 允許查詢的主機;白名單;
allow-transfer {}:允許區域傳送的主機;白名單
allow-recursion {}: 允許遞歸的主機,建議全局使用
allow-update {}: 允許更新區域數據庫中的內容
子域
子域授權:分布式數據庫
正向解析區域子域方法:
定義一個子區域:
實現了在mgedu.com這個DNS中查找他的子域study.magedu.com的DNS
即在主DNS中添加子域的名稱及地址
例想要添加子域study.mage.com study IN NS ns1.study.magedu.com. ns1.study IN A 10.1.0.111
例2,在magedu.com中添加子域 ops、fin ops.magedu.com. IN NS ns1.ops.magedu.com. ops.magedu.com. IN NS ns2.ops.magedu.com. ns1.ops.magedu.com. IN A 1.1.1.1 ns2.ops.magedu.com. IN A 1.1.1.2 fin.magedu.com. IN NS ns1.fin.magedu.com. fin.magedu.com. IN NS ns2.fin.magedu.com. ns1.fin.magedu.com. IN A 3.1.1.1 ns2.fin.magedu.com. IN A 3.1.1.2
注意:關閉dnssec功能:
dnssec-enable no;
dnssec-validation no
這兩項是DNS安全的功能要 no掉 注釋也不行,默認yes
原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/53407