DNS正解區域檔案
在DNS中,我們知道有域和區域的概念,域的英文名稱是domain,它是一種邏輯概念;而區域英文全稱zone,它是一種實體概念。且zone分為正解區域和反解區域
正解區域:提供正向解析的服務,即FQDN-->IP的過程
反解區域:提供反向解析的服務,即IP-->FQDN的過程
不管好似正解區域還是反解區域,都通過了一個配置檔案,這個檔案中的每一個條目就是一個資源記錄(Resource Record,RR)。
資源記錄的類型主要有這些,且這些資源記錄的格式為:
SOA:起始授權記錄(Start Of Authority ),定義資料檔案是為哪個區域建立的
格式:
ZONE_NAME TTL IN SOA (主DNS)FQDN ADMINISTRATOR_MAILBOX (
serial number
refresh
retry
expire
nagitive TTL )
說明:TTL是某個解析記錄儲存在DNS伺服器上面的有效時長,可以省略。如果每個資源記錄的TTL一樣,可以在該檔案中的最前面這樣聲明即可:TTL 600
切記SOA記錄必須是檔案中的第一個資源記錄條目,可以出現在正解和反解區域檔案中
這裡的郵件位址不能使用@符号,@符号在這裡表示為域名。是以郵件位址一般這樣寫:
admin.xsl.com.
例如:寫一個SOA的資源記錄條目
xsl.com. 600 IN SOA ns.xsl.com. admin.xsl.com. (
2014082001
1H
5M
1W
1D )
注意:這裡的機關可以是分鐘(M),小時(H),天(D),周(W),預設機關是秒
NS:Name Server,NS記錄表示的是某個域内的DNS伺服器,是以它的格式是這樣的:
ZONE_NAME TTL IN NS NS_FQDN
NS_FQDN TTL IN A IP
由于NS記錄是指定DNS伺服器的,是以這裡需要指定某個域内的DNS伺服器的是誰?這個伺服器的ip位址是什麼。是以需要兩條記錄。
這裡的A表示的是A記錄,格式就是上面的。
例如:在這裡寫一個NS記錄的例子:
xsl.com. TTL IN NS ns1.xsl.com. #這裡的域名可以使用@表示
xsl.com. TTL IN NS ns2.xsl.com.
ns1.xsl.com. TTL IN A 1.1.1.1 #其實這裡的主機名也可以省略,即寫ns1
ns2.xsl.com. TTL IN A 2.2.2.2
A:Address,A記錄是定義某個主機(FQDN)到ipv4的過程,格式在上面已經說過,這裡不再寫了。
不過要說明的時,A記錄隻能出現在正解區域檔案中。
AAAA:這個也是A記錄,不過定義的是FQDN到ipv6的過程
MX:Mail eXchanger,這是郵件資源記錄。由于郵件伺服器可能有多個,是以我們使用優先級pri來判斷優先選擇使用哪個郵件伺服器。優先級pri範圍是0-99,數字越小越優先
郵件資源記錄條目一般定義在正解區域檔案中
郵件資源記錄的格式和NS資源記錄的格式大緻相同:
ZONE_NAME TTL IN MX PRI FQDN
FQDN TTL IN A IP
例如:在這裡寫個MX資源記錄的例子:
xsl.com. 600 IN MX 10 mail.xsl.com.
mail.xsl.com. 600 IN A 3.3.3.3
CNAME:Canonical NAME,一般之出現在正解區域檔案中
格式是:
FQDN(new) TTL IN CNAME FQDN(old)
例如:mail.xsl.com.這個主機的别名為ml.xsl.com.
ml.xsl.com 600 IN CNAME mail.xsl.com(這個是真名)
PTR:domain name pointer ,這是一個反向解析的資源記錄,隻能出現在反解區域檔案中。
格式是:IP.in-addr.arpa TTL IN PTR FQDN
例如:192.168.20.10的域名為www.xsl.com.,可以這麼寫:
10.20.168.192.in-addr.arpa 600 IN PTR www.xsl.com.
例如:以192.168.20.10的主機名是www.xsl.com.為了建立DNS反解區域檔案
.20.168.192.in-addr.arpa 600 IN SOA ns1.xsl.com. admin.xsl.com. (
2014082101
1H
10M
1D
1D )
10.20.168.192.in-addr.arpa 600 IN PTR www.xsl.com.
剛剛說個區域分為正解和反解區域。這隻不過是從查詢角度來說的,如果從傳輸資料的角度來劃分,那麼區域類型可以這麼劃分:
主區域:Master,定義主伺服器的區域
從區域:Slave,定義從伺服器的區域
提示區域:hint,定義根域DNS伺服器的區域
轉發區域:forword,定義轉發到某個DNS伺服器的區域
其中這些區域包含正解區域或者反解區域。懂了嗎?
在這裡手動示範建立一個DNS伺服器
1、環境需求:作者使用的是RHEL5.8的系統
2、軟體需求:由于目前使用DNS的軟體大多使用的bind這個軟體,是以,在這裡我們也使用bind這個軟
件來搭建一個DNS伺服器。目前bind軟體最新的是bind97,而系統預設就安裝了bind這個軟體,是以
我們再此先解除安裝系統預設安裝的軟體。在安裝其他的軟體。
解除安裝之前的軟體:rpm -e bind-libs
rpm -e bind-utils
安裝新版的bind軟體:yum install bind97-libs
yum install bind97
yum install bind97-utils
3、安裝完成了上述3個軟體後,系統預設會生成DNS的配置檔案(/etc/named/named.conf)
在這裡,我們不使用預設的配置檔案,直接手動生成。
重命名DNS配置檔案:mv /etc/named.conf /etc/named.conf.old
手動生成DNS配置檔案:vim /etc/named.conf
options {
directory "/var/named" ; #定義是以區域的資料檔案
allow-recursion { 192.168.108.0/24; } #定義可以進行遞歸查詢的網段主機
##option這裡可以定義多個工作屬性,且全局生效
};
zone "." IN {
type hint ; #指定根伺服器的類型,其他DNS伺服器隻要解析不了的,都會将請求發給根
file "named.ca" ; #指定根伺服器的資料檔案,這裡的資料檔案都是使用相對路徑
zone "localhost" IN {
type master ;
file "named.localhost" ;
zone "0.0.127.in-addr.arpa" IN {
file "named.loopback" ;
zone "xsl.com" IN {
file "xsl.com.zone" ;
zone "108.168.192.in-addr.arpa" IN {
file "108.168.192.in-addr.arpa.zone" ;
};
說明:這裡的每一個zone表示的就是一個區域,其中以.in-addr.arpa結尾的表示是反向區域。其中type指定的是區域類型,file表示的是這個區域的資料檔案,該資料檔案以相對路徑來表示。
4、修改DNS的配置檔案屬主和屬組
chown root:named /etc/named.conf
5、手動生成每個區域的資料檔案
在這裡我不在手動生成本地區域的正解資料檔案和反解資料檔案。這裡隻手動生成xsl.com這個區域的正解資料檔案。
vim /var/named/xsl.com.zone
$TTL 600
@ IN SOA ns1.xsl.com. admin.xsl.com. (
2014082301
1H
5M
1D
1D )
IN NS ns1.xsl.com.
ns1.xsl.com. IN A 192.168.108.251
www IN A 10.100.10.1
www IN A 10.100.10.2
www IN A 192.168.108.15
ftp IN A 192.168.1.1
ftp IN A 192.168.108.252
mail IN CNAME ftp
6、修改xsl.com.zone這個檔案的屬主和屬組
chown root:named /var/named/xsl.com.zone
不過,在建立完成了DNS伺服器之後,要確定SElinux處于關閉狀态
使用getenforce可以檢視SElinux處在的狀态
setenforce 0:關閉SElinux
setenforce 1:開啟SElinux
不過在指令行修改的,可以立即生效,但是不會永久生效。要想永久生效,可以修改SELinux的配置檔案/etc/selinux/config
修改完成之後,在使用service named restart重新開機該服務即可
為了驗證在建立配置檔案和資料檔案的準确性,我們可以使用這些指令來檢查配置檔案和資料檔案的文法是否正确:
named-checkconf:如果沒有什麼其實表示DNS的配置檔案的文法是正确的
named-checkzone "區域" 該區域的資料檔案 :檢查某個區域的資料檔案的文法是否正确。
這兩個指令是檢查文法是否正确的,文法正确不代表這些檔案一定是正确的。邏輯錯誤是檢查不出來的。
接下介紹一些關于DNS的指令
dig -t {A|NS|MX} @server_ip
{A|NS|MX}:可以來檢視相關資源記錄的資訊
@server_ip:表示由指定的DNS伺服器來負責解析
dig +trace [-t] [-A|-MX|-NS] 主機名 [@server_ip]:跟蹤整個解析過程
dig +recurse 主機名 :允許該主機使用遞歸查詢
+norecurse :不允許某主機使用遞歸查詢
nslook 主機名:也可以用來解析主機名,在windows下也可以使用
nslook互動式指令:
nslook回車
server ip #使用指定DNS伺服器來負責解析
主機名 #要解析的主機名
host 主機名:也可以用來解析某個主機名