1、DNS簡介數據庫
1、DNS簡介 vim
DNS是計算機域名系統 (Domain Name System 或Domain Name Service) 的縮寫,它是由域名解析器和域名服務器組成的。域名服務器是指保存有該網絡中全部主機的域名和對應IP地址,並具備將域名轉換爲IP地址功能的服務器。其中域名必須對應一個IP地址,一個域名能夠有多個IP地址,而IP地址不必定有域名。域名系統採用相似目錄樹的等級結構。域名服務器爲客戶機/服務器模式中的服務器方,它主要有兩種形式:主服務器和轉發服務器。將域名映射爲IP地址的過程就稱爲「域名解析」。緩存
1. DNS解析分正向解析和反向解析安全
正向解析:bash
正向解析是指域名到ip地址的解析過程。服務器
反向解析網絡
反向解析是指Ip地址到域名的解析過程。ide
2. DNS查詢:分遞歸查詢和迭代查詢工具
遞歸查詢: 即客戶端向本地DNS服務器請求查詢域名,本地DNS服務器收到查詢任務後如自身沒法回答則向其餘服務器查詢,直到查到結果後返回結果給客戶端。期間DNS服務器可能要查詢不少其餘DNS服務器。
迭代查詢:即客戶端向本地服務器請求查詢域名,本地DNS服務器沒法回答,則給客戶端返回另外一個能查詢域名的服務器地址,客戶端再向另外一服務器查詢,期間可能客戶端需查詢多個DNS服務器,最終查到結果。oop
3. 主從DNS服務器:
主DNS服務器(Master DNS): 數據庫的修改更新;
輔助DNS服務器 (SlaveDNS):請求主DNS服務器的數據同步更新;
緩存DNS服務器:它主要用來緩存查詢的地址信息,而不用承擔任何其餘的工做。它沒有區域文件,也不從其餘DNS服務器傳輸數據。它能響應客戶機的查詢,可是沒有受權。
4. 資源記錄類型
1>.SOA記錄:SOA名叫起始受權機構記錄,用於說明負責解析的DNS服務器中哪個是主服務器。
2>.NS(NAME SERVER):名稱服務器記錄,用於說明這個區域由哪些DNS服務器負責解析,NS和A記錄是成對出現 如:
NAME TTL IN RPT VALUE 51yunxuexi.club. 400 IN NS ns.51yunxuexi.club. ns.51yunxuexi.club. 400 IN A 1.1.1.1
3>.A記錄(address):地址A記錄把FQND(域名)解析到IPv4地址,把主機名解析到IPv4地址,正向解析
4>.AAAA記錄(address):AAAA資源記錄把FQDN解析到IPv6地址,把主機名解析到IPv6地址
5>.PTR指針記錄(pointer):和A記錄相反,用於實現IP地址映射到FQDN,反向解析
6>.MX記錄: 全稱是郵件交換記錄(郵件交換器),在使用郵件服務器的時候,MX記錄是無可或缺的,好比A用戶向B用戶發送一封郵件,那麼他須要向DNS查詢B的MX記錄,DNS在定位到了B的MX記錄後反饋給A用戶,而後A用戶把郵件投遞到B用戶的MX記錄服務器裏!優先級,0-99,數字越小,優先級越高
7>.CNAME記錄:也可說是別名記錄,規範名字(CNAME)資源記錄建立特定FQDN的別名。用戶可使用CNAME記錄來隱藏用戶網絡的實現細節,使鏈接的客戶機沒法知道。好比一個網站a.com 在發佈的時候,他能夠創建一個別名記錄,把B.com發佈出去,這樣不容易被外在用戶所察覺!達到隱藏本身的目的!
8>.SRV記錄:它是DNS服務器的數據庫中支持的一種資源記錄的類型,它記錄了哪臺計算機提供了哪一個服務這麼一個簡單的信息。SRV 記錄:通常是爲Microsoft的活動目錄設置時的應用。
5. 區域
區域是用於存儲DNS域名的數據庫。DSN服務器是以區域爲單位來管理域名空間的。DNS數據庫表稱爲區域文件(Zone File)。數據庫中包含着DNS域的RR【資源記錄】,數據庫表中,RR是用文本形式表示的。
一臺DNS服務器能夠管理一個或多個區域,而一個區域也能夠由多臺DNS服務器來管理。
在DNS服務器中必須先創建區域,而後才能夠根據須要在區域中創建子域以及在區域中添加RR。
能夠建立正向查找區域和反向查找區域兩種區域。
1>.區域類型有主要區域(主區域)、輔助區域(從區域)和存根區域、準發區域、提示區域等。
主要區域:它是新區域的主副本,負責在新建立區域的服務器上管理和維護本區域的RR。
輔助區域:它是主區域的副本【備份】,主要區域中的DNS服務器將把區域信息傳遞給輔助區域中的DNS服務器。使用輔助區域的目的是提供冗餘、減小包含主要區域數據庫文件的DNS服務器的負載。輔助區域的數據沒法修改,其全部數據都是從主要區域複製而來。
存根區域:它只包含用於標識該區域的受權DNS服務器所需的RR。含有存根區域的DNS服務器對該區域沒有管理權。存根區域只能建立只含有NS、SOA和A記錄的區域的副本。其所屬的主要區域一般是一個受委派區域。
2>.區與域的關係:
區包含了域中除了代理給別處的子域外所含有的全部域名和數據。若是域的子域沒有被代理出去,則該區包含該子域名和子域中的數據。
6. 區域傳輸(區域傳送)
將一個區域文件複製到多個服務器上的過程叫作區域傳輸。它是經過從主服務器上將區域文件的信息複製到輔助服務器上來實現的。
主服務器是區域複製的來源服務器,它既能夠是主要區域,也能夠是輔助區域。
*若是主服務器是主要區域,區域傳輸則直接從主要區域取得區域文件。
*若是主服務器是輔助區域,區域傳輸僅傳輸區域文件的一個只讀副本。
兩種區域文件複製方式:
AXFR:所有區域文件複製,複製整個區域文件。
IXFR:增量區域文件複製,僅僅複製區域裏變化的記錄。
2、 bind軟件包的安裝以及配置文件簡介
1、bind軟件包的安裝
在使用DNS服務器時首先要確保bind軟件包是否已經安裝,可使用rpm –qa | grep bind 查看。可使用rpm命令安裝,也可使用yum源安裝及所依賴軟件包。首先要安裝如下三個軟件包。
bind-9.8.2-0.17.rc1.el6.x86_64 bind的安裝包
bind-utils-9.8.2-0.17.rc1.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6.x86_64
源碼包安裝能夠在http://www.isc.org/官網下載安裝
bind-chroot軟件包:切換named根目錄,增強DNS服務器的安全
caching-nameserver.i386軟件包 能夠快速構建DNS緩存名稱服務器
2、DNS監聽的協議及端口
53/UDP 默認查詢過程當中使用的是UDP協議,因不須要三次握手,速度快
53/TCP 主從服務數據傳輸時爲確保數據的準確、性完整性和安全行,使用的是TCP
953/TCP rndc遠程域名服務控制器則使用953端口監聽
3、bind配置文件簡介
/etc/named.conf bind服務進程的主配置文件,主要定義bind進程的工做屬性和區域的定義
/etc/rnd.key 遠程名稱控制器,rndc的密鑰文件
/etc/rndc.conf rndc的配置文件
/etc/var/named/ 區域數據文件,可自定義名稱
/etc/rc.d/init.d/named { start|stop|restart|status|reload }服務進程的啓動中止重啓等
/usr/sbin/named bind的主程序文件
/usr/sbin/named-checkconf named-checkconf命令檢查配置文件是否有語法錯誤
/usr/sbin/named-checkzone named-checkzone命令檢查區域文件是否有語法錯誤
/usr/sbin/rndc rndc命令是遠程控制工具
/usr/sbin/rndc-confgen rndc-confgen 命令是rndc配置文件生成器(/etc/rndc.conf)
/var/named/named.ca Internet的13個根服務器名字和地址,DNS接到客戶端主機的查詢請求時,若是在Cache中找不到相應的數據,就會經過根服務器進行逐級查詢。
Dig–t NS . 能夠查詢跟節點的NS服務器(能夠訪問互聯網的狀況下)
/var/named/named.localhost 本地localhost主機的正向解析
/var/named/named.loopback 本地localhost主機的反向解析
/etc/resolv.conf DNS服務器地址
3、/etc/named.cong主配置文件
區域的定義,每一個選項後面必需要加分號,定義全局選項
options { // listen-onport 53 { 127.0.0.1; }; #默認監聽本地53端口 listen-on port 53 { any; }; #監聽全部地址的53端口 listen-on-v6 port 53 { ::1; }; directory "/var/named"; #自定義區域數據文件存放目錄 allow-query { localhost; }; #默認只容許本地查詢 recursion yes; #是否容許遞歸 }; logging { #日誌 channeldefault_debug { file "data/named.run"; #日誌文件存放目錄 severity dynamic; }; };
區域zone的定義:
zong 「ZONE NAME」 IN{
type { master(主) | slave(從) | hint(根區域) | forward(轉發) }區域類型
}
若是定義的數據類型爲主區域則還需定義 file 「區域數據文件路徑」;
若是定義的數據類型爲主區域則還需定義 file 「區域數據文件」;
master (主服務器地址;)
如 master (master_ip; ) 先後有空格
zone 「.」 IN { #定義根區域 type hint; #定義根區域類型 file 「named.ca」; #定義根區域數據文件 };
1、配置緩存服務器
打開並編輯/etc/name.conf文件,也能夠在named.rfc1912.zones文件中添加zone區域 zone "localhost" IN { #定義本地localhost正向解析zone區域 type master; #定義主區域類型 file"named.localhost"; #定義區域數據文件 }; zone "0.0.127.in-addr.arpa" IN { #定義本地localhost反向解析zone區域 type master; #定義主區域類型 file"named.loopback"; #定義區域數據文件 };
檢查named配置文件語法是否正確 [root@localhost etc]# named-checkconf [root@localhost etc]# 使用named-checkconf命令,無報錯則說明配置文件語法正確 檢查zone區域配置是否正確 [root@localhost etc]# named-checkzone "0.0.127.in-addr.arpa"/var/named/named.loopback zone 0.0.127.in-addr.arpa/IN: loaded serial0 OK [root@localhost etc]# named-checkzone"localhost" /var/named/named.localhost zone localhost/IN: loaded serial 0 OK [root@localhost etc]# 使用named-cone命令檢查區域是否有語法錯誤,返回OK則說明無語法錯誤 重啓DNS服務器 [root@localhost etc]# service named restart 中止 named:. [肯定] 啓動 named: [肯定] [root@localhost etc]#
可使用tail /var/log/messages查看服務是否啓動正常
[root@localhost log]# tail /var/log/messages Aug 29 22:43:10 localhost named[21072]: automatic empty zone: 9.E.F.IP6.ARPA Aug 29 22:43:10 localhost named[21072]: automatic empty zone: A.E.F.IP6.ARPA Aug 29 22:43:10 localhost named[21072]: automatic empty zone: B.E.F.IP6.ARPA Aug 29 22:43:10 localhost named[21072]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA Aug 29 22:43:10 localhost named[21072]: command channel listening on 127.0.0.1#953 Aug 29 22:43:10 localhost named[21072]: command channel listening on ::1#953 Aug 29 22:43:10 localhost named[21072]: zone 0.0.127.in-addr.arpa/IN: loaded serial 0 Aug 29 22:43:10 localhost named[21072]: zone localhost/IN: loaded serial 0 Aug 29 22:43:10 localhost named[21072]: managed-keys-zone ./IN: loaded serial 7 Aug 29 22:43:10 localhost named[21072]: running [root@localhost log]#
使用dig –t NS. 命令測試本地緩存解析
配置環境:在萬網註冊域名爲 www.51yunxuexi.club
NS主DNS服務器master:192.168.1.192
NSSOA爲ns1.51yunxuexi.club.
www服務器:192.168.1.106 192.168.1.103
mail服務器: 192.168.1.104
有一臺ftp在www主機上,ftp是www的別名CNAME
SOA:起始受權記錄格式
ZONE NAME TTL IN SOA FQDN(主DNS名稱) ADMIN MAIL( Serialnumber Refresh Retry Expire Nattl ) $TTL 600 @ IN SOA [FQDN]51yunxuexi.club. admin.com.[管理員郵箱] ( 2015083001;serial #版本號(最長爲10位數字) refresh #定義檢查週期時間 1H;retry #定義重試時間 1W;expire #定義過時時間 3H );minimum #定義否認答案時長 時間單位:M(分鐘)、H(小時)、D(天)、W(周)、默認單位是秒
ZONE NAME(區域名稱) 指/etc/named.conf中的zone 「51yunxuexi.club」,可使用@來代替51yunxuexi.club,@能夠自動讀取zone name。
A)、打開並編輯/etc/named.conf,添加正向解析和反向解析的zone。
B)、在/var/named/目錄下建立51yunxuexi.club.zone
打開並編輯51yunxuexi.club.zone建立正向解析
[root@localhost named]# vim /var/named/51yunxuexi.club.zone
修改/var/named /51yunxuexi.club.zone的文件權限和屬組 [root@localhost named]# chmod 640 51yunxuexi.club.zone [root@localhost named]# chown root:named51yunxuexi.club.zone [root@localhost named]# 使用named-checkconf和named-checkzone命令檢查主配置文件和數據區域文件是否有語法錯誤。 [root@localhost named]# named-checkconf [root@localhost named]# named-checkzone"51yunxuexi.club" /var/named/51yunxuexi.club.zone zone 51yunxuexi.club/IN: loaded serial 2015080301 OK [root@localhost named]#
C)、打開並編輯/var/named/192.168.1.zone建立反向解析
使用named-checkconf 和named-zone命令檢查配置文件是否有語法錯誤 [root@localhost ~]# [root@localhost ~]# named-checkconf [root@localhost ~]# named-checkzone"1.168.192.in-addr.arpa" /var/named/192.168.1.zone zone 1.168.192.in-addr.arpa/IN: loaded serial2015080301 OK [root@localhost ~]#
我在這裏使用nslookup命令測試正反向解析是否能正常解析