DNS(Domain Name System) 域名解析系統。在互聯網上的每一個計算機都有一個唯一的地址稱爲“IP 地址“ ip地址 不方便記憶,DNS允許用戶用一串常見的字母取代(即域名)。用戶可能通過域名 查找互聯網的的計算機和 服務。DNS可以將此名稱解析爲與之相關的信息即IP地址。
DNS域名管理系統的域名是由圓點分開一串單詞或縮寫組成的,每一個域名都對應一個惟一的IP 地址,這一命名 的方法或這樣管理域名的系統叫做域名管理系統。
DNS的結構分爲頂級域名和一級域名
頂級域名是用以識別域名所屬類別、應用範圍、註冊國家等公用信息的代碼。
通用頂級域名指的是來自任何國家的任何人都可以自由使用的頂級域名,如".COM"代表商業 實體;".org"代表非營利性組織;".net"代表網絡服務者;專用頂級域名".mil"代表軍事機構;".edu"代表教育機構;".gov"代表政府機構。凡屬於美國的機構,在此頂級域名下注冊時,無需加註國家代碼。
國家代碼:此標準是將國家與地區的英文名稱縮寫爲兩位英文字母形成代碼,如cn代表中國;hk 代表 香港;tw代表 中國臺灣;us代表美國;uk代表英國等等。多數國家要求凡在域名 中加入其國家代碼的,主機必須處於該國。 但也有些國家並無這方面的要求。
二級域名
指由域名使用者自己設計的,能夠體現使用者的特殊性,並據以同其他人的域名相區別的字符串。
反向域
.in-addr.arpa即是把IP地址反過來寫加上這個後綴,如172.16.1.1的反向域爲1.1.16.172.in-addr.arpa這裏的. 一個都不可以少。
DNS域名解析過程
一、根域
所謂的根域就是所謂的".",其實我們的網址配置當中應該是有最後有一個點的,一般我們在瀏覽器裏輸入時會省 略後面的點。這個點就代表了根域。
二、域名劃分
這就是我們上面介紹的頂級域和一級域,及反向域。
三、域名服務器
能提供域名解析的服務器,
記錄類型及DNS數據庫文件格式
DNS數據庫文件是一個文本文件,只能包含資源記錄或宏定義
資源記錄的格式:
name [ttl] IN rrtype value
例如,www.baidu.com 假如他的IP爲192.168.0.0
那麼它的格式應該寫爲以下這樣
name [ttl] IN rrtype value
www.baidu.com. 200 IN A 192.168.0.0
注意:com後面的點不可少省,[ttl]的時間單位是秒可以省略不寫,IN是關鍵是這個不變,rrtype是 記錄文件類型,value是值。
SOA是區域數據爲文件的第一條記錄只能有一個
name:區域名稱,如badu.com.通常可以簡寫爲@
value:主DNS的
A記錄
A(Address)記錄是用來指定主機名(或域名)對應的IP地址記錄。就是服務器的IP,域名綁定,就是告訴DNS當你輸入域名的時候給你引導向設置在DNS的A記錄所對應的服務器。簡單的說,A記錄是指定域名對應的IP地址。
NS記錄
NS(Name Server)記錄是域名服務器記錄,用來指定該域名由哪個DNS服務器來進行解析。您註冊域名時,總有默認的DNS服務器,每一個註冊的域名都是一個DNS服務器來進行解析的。
MX記錄
MX(Mail Exchanger)記錄是郵件交換記錄,它指向一個郵件服務器,用於電子郵件系統發郵件時根據收信人的地址後綴來定位郵件服務器。
CNAME記錄
CNAME(canonical Name)別名記錄,允許您將多個名字映射到同一臺計算機。通常用於同時提供www和mail服務的計算機。
TXT記錄
TXT記錄,一般指某個主機名或域名的說明,多數指管理員的郵箱地址。
TTL值
TTL(Time-To-Live):是IP協議包中的一個值,它告訴網絡路由器包在網絡中的時間是否太長而被丟棄。有很多原因使包在一定時間內不能被傳遞到目的地。就是一條域名解析記錄在DNS服務器中的存留時間。當各地的DNS服務器接受到解析請求時,就會向域名指定的NS服務器發出解析請求從而獲得解析記錄;在獲得這個記錄後,記錄會在DNS服務器中保存一段時間,這段時間內如時果再接到這個域名的解析請求,DNS服務器將不再向NS服務器發出請求,而是直接返回剛纔獲得的記錄,而這個記錄在DNS服務器上保留的時間,就是TTL值。
PTR值
PTR用一個IP地址映射到對應的域名,也就是A記錄的反向,就是IP地址反向解析。
DNS數據庫的記錄:正解、反解、Zone的意義
主機名(FQDN)的查詢到IP的流程爲:正解。
從IP到主機名(FQDN)的查詢的流程爲:反解。
不管是正解還是反解,每個域的記錄就是一個域(Zone),也叫做地址池。
正解文件資源記錄(Resource Rrcord,RR)格式:
[domain] [ttl] IN [RR type] [RR data]
[待查數據] [暫存時間(秒)] IN [資源類型] [資源內容]
一般ttl是可以省略的
常見的正解文件記錄格式如下:
[domai] IN [RR type] [RR data]
主機名. IN A IPV4的IP地址
主機名. IN AAAA IPV6的IP地址
域名. IN NS 服務器主機的名子
域名. IN SOA 管理這個域名的重要參數
域名. IN MX 優先級 接收郵件的服務器主機名子
主機別名. IN CNAME 實際代表這個主機別名的主機名字
RR type的解釋
1.A AAAA:查詢IP的記錄
2.NS:查詢管理區域名的服務器主機名
3.SOA:查詢管理域名的服務器管理信息
4.CNAME:設置某主機的別名
5.MX:查詢某域名的郵件服務器主機名
反解文件記錄的RR數據
反解的Zone必須把IP反過來寫,而在結尾加上.in-addr.arpa.
PRT就是反解,即是查詢IP反對應的主機名。
搭建服務器的軟件
我們要使用的DNS軟件就是使用柏克萊大學發展出來的BIND,下面我們就來安裝bian軟件[root@localhost ~]# rpm -qa | grep '^bind'
bind-utils-9.8.2-0.17.rc1.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6.x86_64
[root@localhost ~]# yum install bind
[root@localhost ~]# /etc/init.d/named start <====啓動,這裏可能會等一會,可能系統要 隨機數,也可以拼命敲 鍵盤直到出現以下結果
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
DNS的正解、反解查詢命令:host、 nslookup、 dig
host [-a] FQDN [server]
host -l domain [server]
選項和參數:
-a:代表列出該主機所有的相關信息,包括IP 、TTL、與排錯信息
-l:若後面接的那個domain設置允許allow-transfer時,則列出domain所管理的所有主機名對應的參數
server:這個參數可有可無。
nslookup [FQDN] [server]
可以直接在nslookup加上待查詢的主機名或者是IP,[server]可有可無。
dig [options] FQDN [@server]
+trace:就是從. 開始追蹤,正解或反解過程中所經過的網關。
-t type :查詢的數據主要有MX、NS、SOA等類型,
-x:查詢反解信息。
假設我們有以下案例,看看DNS服務器是怎麼搭建的
tianmiaomiao.com 172.16.251.
mail 172.16.251.1
www 172.16.251.2
pop mail<========pop是mail的別名
ftp www<=========ftp是www的別名
dns 172.16.251.7
先定義正向區域
[root@localhost ~]# mv /etc/named.conf /etc/named.conf.origin《=把原配置文件給它移走,我自已創建一個
[root@localhost ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "." IN { 《==========================定義根區域
type hint;
file "named.ca";
};
zone "localhost."IN {
type master;
file "named.localhost";
};
zone " tianmiaomiao.com." IN {
type master;
file "tianmiaomiao.com.zone";
};
[root@localhost named]# chown root:named /etc/named.conf<======更改文件的屬主和屬組
[root@localhost named]# chmod 640 /etc/named.conf<============更改文件的權限
編輯區域文件
[root@localhost ~]# cd /var/named
[root@localhost named]# vim tianmiaomiao.com.zone
$TTL 600
@ IN SOA dns.tianmiaomiao.com. admin.tianmiaomiao.com.(
2014031001
2H
10M
7D
1D)
@ IN NS dns
@ IN MX 10 mail
dns IN A 172.16.251.7
mail IN A 172.16.251.2
www IN A 172.16.251.1
pop IN CNAME mail
ftp IN CNAME www
[root@localhost named]# chown root:named tianmiaomiao.com.zone
[root@localhost named]# chmod 640 tianmiaomiao.com.zone
[root@localhost named]# service named configtest
zone localhost/IN: loaded serial 0
zone tianmiaomiao.com/IN: loaded serial 2014031001
[root@localhost named]# service named restart
Stopping named: [ OK ]
下面定義反向解析:
第一步編輯配置文件vim /etc/named.conf,在後面加上
[root@localhost named]vim /etc/named.conf
zone "251.16.172.in-addr.arpa" IN {
type master;
file "172.16.251.zone";
};
[root@localhost named]# cp tianmiaomiao.com.zone 172.16.251.zone -p《==修改我們上面編輯好的文件, 並保持原來的屬主和屬組
[root@localhost named]# vim 172.16.251.zone
$TTL 600
@ IN SOA dns.tianmiaomiao.com. admin.tianmiaomiao.com.(
2014031001
2H
10M
7D
1D)
IN NS dns.tianmiaomiao.com.
7 IN PTR dns.tianmiaomiao.com.
1 IN PTR www.tianmiaomiao.com.
2 IN PTR mail.tianmiaomiao.com.
[root@localhost named]# service named configtest
zone localhost/IN: loaded serial 0
zone tianmiaomiao.com/IN: loaded serial 2014031001
zone 251.16.172.in-addr.arpa/IN: loaded serial 2014031001
定義主從同步這裏我們再打開一個虛擬機,首先在主服務器的區域文件中添加一條A記錄和NS記錄
[root@localhost named]# vim tianmiaomiao.com.zone
$TTL 600
@ IN SOA dns.tianmiaomiao.com. admin.tianmiaomiao.com.(
2014031001
2H
10M
7D
1D)
@ IN NS dns
@ IN NS ns2
@ IN MX 10 mail
ns2 IN A 172.16.24.55
dns IN A 172.16.251.7
mail IN A 172.16.251.2
www IN A 172.16.251.1
pop IN CNAME mail
ftp IN CNAME www
先確保從服務器可以跟主的通信
[root@localhost ~]# ping 172.16.251.208
ping 172.16.251.208 (172.16.251.208) 56(84) bytes of data.
64 bytes from 172.16.251.208: icmp_seq=1 ttl=64 time=1.80 ms
這一次我們編輯原來配置文件 ,把沒用的項目都給他刪了,只留以下幾項,(你也可以把原來的註釋掉)
[root@localhost ~]vim /etc/named.conf
options {
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";
recursion yes;
/* Path to ISC DLV key */
};
logging {
channel default_debug {
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";
recursion yes;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";《==這一項我們保留
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "tianmiaomiao.com" IN {
type slave;
masters { 172.16.251.7; };
file "slaves/tianmiaomiao.com.zone";
};
[root@localhost ~]# service named start
[root@localhost ~]# ss -tunl
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:55088 *:*
udp UNCONN 0 0 192.168.1.124:53 *:* 《===53 號端口監聽了
udp UNCONN 0 0 172.16.24.55:53 *:* 《===53 號端口監聽了
udp UNCONN 0 0 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::111 :::*
tcp LISTEN 0 128 *:111 *:*
tcp LISTEN 0 3 192.168.1.124:53 *:* 《===53號 端口監聽了
tcp LISTEN 0 3 172.16.24.55:53 *:* 《===53號 端口監聽了
tcp LISTEN 0 3 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 128 *:22 *:*