一、DNS的原理
DNS(DomainName Server)是域名解析服務器,提供域名和IP地址之間一種轉換機制,IP地址是平面結構不容易記住,DNS是層次化的結構,便於記憶
下面是DNS原理的通俗易懂圖便於理解下面的講解
DNS的層次化
1)根域:根域位於層次結構的最頂部並用“.”來表示,全球有十三個根服務器,一個主根服務器,十二個輔助根服務器。
2)頂級域:頂級域是按照組織或地理位置來劃分的
.gov:表示政府組織
.com:表示商業組織
.net:網絡中心
.org:非營利性組織
.edu:教育部門
.cn .uk .us:國家國別的代碼,cn表示中國,uk表示英國,us表示美國
3)二級域:由國際域名組織爲互聯網中的個人或部門指定和登記的二級域,如51cto.com,baidu.com
DNS服務器配置大致分爲三種:
(1)主DNS服務器(Master DNS) :數據庫更新由管理員手動完成
(2)輔助DNS服務器 (SlaveDNS):數據庫更新從主服務器或其他輔助DNS服務器那裏完成
(3)緩存DNS服務器:沒有自己的區域數據文件,只是幫助客戶端向外部DNS請求查詢,然後將查詢的結果保存到它的緩存中。
一個域可以有擁有多個從服務器,但只能有一臺主服務器
一臺從服務器也可以從另一臺從服務器那裏獲取數據
客戶端檢索本地數據文件的相關記錄,客戶端將無法自行解釋的需求,通過53端口送給指定的DNS服務器
DNS解析類型:
FQDN(Fully Qualified Domain Name)完全合格域名,由主機名+域名組成,如www.51cto.com
正向解析:FQDN-->IP,把完全合格域名解析爲IP地址
反向解析:IP-->FQDN,把IP解析爲完全合格域名。
二、關於軟件BIND
BIND:BerkeleyInternet Name Daemon,BIND是在Internet上應用最爲廣泛的DNS服務器,提供穩定與可信賴的下層結構以提供域名與IP地址的轉換
Bind的相關軟件包
bind-9.8.2-0.17.rc1.el6.x86_64提供域名服務的主程序和相關文件
bind-libs-9.8.2-0.17.rc1.el6.x86_64提供域名域名服務器所依賴的庫文件
bind-utils-9.8.2-0.17.rc1.el6.x86_64提供了對DNS 服務的測試工具程序
注:bind-chroot:安裝上這個包之後讓named進程有限的活動在/var/named/chroot/中防止******導致服務器的崩潰。這裏就不安裝了,因爲安裝之後除了路徑改變之後其他均不變。所以爲了更好的熟悉過程就暫時不裝了
安裝bind軟件:
首先確保yum源創建好,然後安裝bind軟件
[root@stu2~]# yum -y install bind 查看生成了那些配置文件 [root@stu2~]# rpm -qc bind /etc/logrotate.d/named /etc/named.conf //主配置文件 /etc/named.iscdlv.key /etc/named.rfc1912.zones //區域配置文件 /etc/named.root.key /etc/rndc.conf /etc/rndc.key /etc/sysconfig/named /var/named/named.ca /var/named/named.empty /var/named/named.localhost /var/named/named.loopback
三、配置緩存服務器
把客戶端發送的請求轉發給能解析到的服務器
在主配置文件裏面/etc/named.conf裏面修改
開啓服務service named start (/etc/rc.d/init.d start)
第一次需要開啓服務,之後只需要加載配置文件即可
servicenamed reload (rndc reload)
named-checkconf
DNS的測試工具
[root@stu2named]# rpm -ql bind-utils /usr/bin/dig //測試命令工具 /usr/bin/host //host測試命令工具 /usr/bin/nslookup //nslookup測試命令工具 /usr/bin/nsupdate /usr/share/man/man1/dig.1.gz /usr/share/man/man1/host.1.gz /usr/share/man/man1/nslookup.1.gz /usr/share/man/man1/nsupdate.1.gz
命令的使用
dig[option] 資源記錄類型名稱 @servier-ip
option:
-t指定類型
-x指定IP
@servier-ip說明解析是指定服務器的IP
不寫IP,默認是/etc/resolve.conf裏面指定的IP
資源記錄有類型:
A:正向記錄,用來記錄當前域名所對應的IP地址
NS:(nameserver)指明當前域內有哪些服務器
MX:用來指明一個域的郵件服務器
CNAME:進行正式名稱和別名的對應
SOA:標明當前域的起始授權記錄,指明當前域內的主DNS服務器
PTR:代表“IP地址”與“主機名”的對應關係,作用剛好與A記錄相
nslookup dig host三個命令的使用範例
[root@stu2named]# nslookup //測試工具命令 >server 172.16.0.1 //指向能爲你解析域名服務器的IP地址(一般爲運營商的IP地址) Defaultserver: 172.16.0.1 Address:172.16.0.1#53 >set q=A //用set設置q指定類型爲A記錄,然後輸入FQDN >www.bai.com Server: 172.16.0.1 Address: 172.16.0.1#53 Non-authoritativeanswer: Name: www.bai.com Address:221.5.71.29 //解析到的結果#172
[root@stu2 named]# dig -t A www.baidu.com @172.16.0.1
[root@stu2 named]# host -t A www.baidu.com 172.16.0.1
四、主從DNS服務器的搭建
首先在主配置文件/etc/named.conf中需要註釋掉幾行
然後在區域配置文件/etc/named.rfc1912.zones中創建區域
zone "magedu.com" IN { //zone關鍵字添加正向區域解析庫文件 type master; //指定類型 file "magedu.com.zone"; //指定區域文件名,是相對於/var/named路徑,這裏的相對路徑是根據主配置文件裏面的directory關鍵字定義的 allow-transfer { 172.16.2.16; }; //指定slave服務器的Ip,可以指定多個 }; zone "10.16.172.in-addr.arpa" IN { //zone關鍵字添加一個反向解析庫文件 type master; file "172.16.10.zone"; allow-transfer { 172.16.2.16; }; };
正向解析文件創建目錄爲/var/named/magedu.com.zone
區域創建好之後需要修改權限和屬組
#chmod 640 magedu.com.zone
#chown :named magedu.com.zone
反向區域解析文件 /var/named/172.16.10.zone
配置完之後,檢查語法是否錯誤,然後加載配置文件後即可進行正反向的區域解析。
#named-checkconf
#rndc reload
從slave的配置
在主配置文件/etc/named.conf中需要註釋掉幾行
在區域配置文件/etc/named.rfc1912.zones中創建區域
#rndcreload
#cd/var/named/slaves
#ls即可以查看內容
五、DNS的子域授權
思路:在父域的區域解析庫文件裏面創建子域的NS記錄和子域的A記錄,在子域服務器上面有子域的區域解析庫文件
在/etc/named.conf註釋掉一下四行
options{ // 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; }; recursion yes; logging{ channel default_debug { file"data/named.run"; severity dynamic; }; }; zone"." IN { type hint; file "named.ca"; }; include"/etc/named.rfc1912.zones"; //include"/etc/named.root.key"; 用//表示註釋掉這幾行
在/etc/named.rfc1912.zones添加內容並創建子域區域解析庫文件dns.dep1.magedu.com
zone"dep1.magedu.com" IN { type master; file "dep1.magedu.com.zone"; }; $TTL600 @ IN SOA dns.dep1.magedu.com. admin.dep1.magedu.com. ( 20130813 2H 10M 7D 2D ) IN NS dns IN MX 10 mail dns IN A 172.16.251.253 mail IN A 172.16.251.6 www IN A 172.16.251.6 www IN A 172.16.251.8
實現子域授權
父域是可以直接解析子域的,子域默認是不能解析父域的,但可以進行轉發進行訪問父域
[root@stu2named]# dig -t A www.dep1.magedu.com ;<<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t Awww.dep1.magedu.com ;;global options: +cmd ;;Got answer: ;;->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43341 ;;flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;;QUESTION SECTION: ;www.dep1.magedu.com. IN A ;;ANSWER SECTION: www.dep1.magedu.com. 600 IN A 172.16.251.8 www.dep1.magedu.com. 600 IN A 172.16.251.6 ;;AUTHORITY SECTION: dep1.magedu.com. 536 IN NS dns.dep1.magedu.com. ;;ADDITIONAL SECTION: dns.dep1.magedu.com. 536 IN A 172.16.251.253 ;;Query time: 6 msec ;;SERVER: 172.16.10.8#53(172.16.10.8) ;;WHEN: Thu Aug 15 17:54:40 2013 ;;MSG SIZE rcvd: 103
六、DNS的轉發
當客戶端找自己的DNS服務器解析自己的主機時,該DNS服務器查看不是自己管理範圍,就直接轉發出去通過能解析的
DNS服務器進行解析,將返回結果返回給客戶端自己的DNS服務器,由該服務器將結果返回給客戶端
options { // 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; }; recursion yes; forward only; //只允許轉發 forwarders { 172.16.0.1; }; //轉發到能解析的服務上 // dnssec-enable yes; //關於安全的文件都註釋掉 // dnssec-validation yes; // 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; }; };
總結:深刻理解DNS服務器的工作原理和操作過程對以後的學習有很大的幫助,希望大家互相學習,共同進步,不足之處我會盡量完善!