1. 程式人生 > >DNS正反向區域解析(二)

DNS正反向區域解析(二)

域名查詢工具

Nslookup命令

>server 202.106.0.20  #指定DNS伺服器
>set q=A              #指定要查詢的型別(A,PTR,MX,CNAME,NS)
>www.baidu.com        #指定要查詢的域名

dig命令

此命令是DNS工具包帶的,可以用來查詢域名相關資訊

dig [ -t type ] [ -x addr ] [ name ] [ @server ]
-t A www.baidu.com @202.106.0.20  #檢視域名的IP地址,指定DNS伺服器,預設使用本地DNS地址
-t NS www.baidu.com               #檢視域名的NS伺服器
-t NS .                           #檢視根的NS伺服器
-t NS com                         #檢視com.的NS伺服器
-t MX baidu.com                   #檢視域的郵件域名
-t SOA baidu.com                  #檢視域的權威伺服器的SOA記錄
-t CNAME www.baidu.com            #檢視域名的別名
-x 192.168.60.200 @192.168.60.10  #反向解析查詢

示例:

[[email protected] ~]# dig -t a www.baidu.com
 
; < <>> DiG 9.8.3-P1 < <>> -t a www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 59830
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
 
;; QUESTION SECTION:       #顯示dig提的問題
;www.baidu.com.			IN	A
 
;; ANSWER SECTION:         #回覆dig提的問題
www.baidu.com.		448	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	0	IN	A	115.239.211.112
www.a.shifen.com.	0	IN	A	115.239.210.27
 
;; Query time: 15 msec    
;; SERVER: 192.168.5.1#53(192.168.5.1)
;; WHEN: Sat Jul  2 21:30:06 2016
;; MSG SIZE  rcvd: 103

Dig查詢結果顯示資訊除了QUESTION SECTION和ANSWER SECTION外,還會碰見下面兩類資訊:

AUTHORITY SECTION       #顯示A記錄的權威伺服器

ADDITIONAL SECTIONdd    #顯示A記錄的權威伺服器的A記錄

Dig的另外幾種常見用法

# 檢視202.106.0.20是否給遞迴
[[email protected] ~]# dig +recurse -t www.baidu.com @202.106.0.20
 
# 顯示查詢www.baidu.com的詳細過程使用本地DNS
[[email protected]
~]# dig +trace -t www.baidu.com

DNS資源記錄

DNS伺服器的解析功能有兩種,一種是正向解析,一種是反向解析。正反向解析技術不同,因此不應該存放於同一個資料庫檔案中進行,每一種解析在DNS伺服器上都需要有對應的資料庫檔案。在資料庫檔案中每一條都是一個資源記錄,資源記錄是有型別的,用於表示資源的功能,常用的有如下記錄:

SOA(Start Of Authority)  #起始授權記錄
NS(Name Server)          #域名伺服器記錄,標明自己就是DNS伺服器
MX(mail eXchanger)       #郵件交換器記錄
A(Address)               #域名轉IPv4地址(正向解析)
PTR(PoiTeR)              #IP地址轉換為域名(反向解析)
AAAA(Address)            #域名轉IPv6地址
CNAME(Canonical Name)    #正式名稱(別名記錄)

正向區域檔案

$TTL 600
@       IN    SOA    dns.ywnds.com.    root.ywnds.com. (
                                        0      ; serial
                                        1D     ; refresh
                                        1H     ; retry
                                        1W     ; expire
                                        3H )   ; minimum
@       IN    NS      dns

$TTL 600 :生存時間欄位以秒為單位定義改資源記錄中的資訊存放在DNS快取中的時間長度。

資源記錄格式

NAME    IN     TYPE    Value
NAME:名稱欄位,此欄位是資源記錄引用的域物件名,可以是一臺獨立的主機(如www)也可以是整個域(如wangfeng7399.com);欄位值”.”表示根,“@”表示預設域即當前域。

IN:此欄位用於將當前記錄標識為一個網際網路的DNS資源記錄。

TYPE:資源記錄型別,介紹常用的幾種型別,如下:

SOA(start OF authority):起始授權記錄,其中NAME欄位必須是區域名稱如ywnds.com.或“@”表示,Value欄位必須是主DNS伺服器的FQDN

例如: @    IN  SOA  dns.ywnds.com.  root.ywnds.com.

其中,root.ywnds.com.是管理員郵箱,沒有用@表示是因為@有特殊意義。這些引數的意義是輔助DNS用來更新主DNS的標誌來更新資料,如:

serial = 2913 (序列號=2913、這個序列號的作用是當輔域名伺服器來複制這個檔案的時候,如果號碼增加了就複製)

refresh = 10800 (3 hours) (重新整理=10800秒、輔域名伺服器每隔3小時查詢一個主伺服器)

retry = 3600 (1 hour) (重試=3600秒、當輔域名服務試圖在主伺服器上查詢更新時,而連線失敗了,輔域名伺服器每隔1小時訪問主域名伺服器)

expire = 604800 (7 days) (到期=604800秒、輔域名伺服器在向主服務更新失敗後,7天后刪除中的記錄。)

default TTL = 3600 (1 hour) (預設生存時間=3600秒、快取伺服器儲存記錄的時間是1小時。也就是告訴快取伺服器儲存域的解析記錄為1小時)

NS(Name Server): 域名伺服器,其中NAME欄位必須是區域名稱如ywnds.com.或“@”表示,Value欄位是DNS伺服器的FQDN(可以是相對名稱)

例如: @    IN   NS   dns

MX(mail eXchanger): 郵件交換器,其中NAME欄位必須是區域名稱,用來標識smtp伺服器。Value欄位有優先順序(0-99,數字越小,級別越高)和FQDN。

例如: @    IN   MX 10  mail

A(Address): 域名轉IPv4地址(正向解析),其中NAME欄位是FQDN(可以使用相對名稱),Value欄位是IP地址。

例如: dns    IN   NS   192.168.60.10

CNAME : 用來設定別名。

區域的型別

區域型別是用來定義一個此域的有效標識,格式如下:

zone "." IN {
  type hint;
  file "named.ca";
};
hint : 表示提示區域,一般根使用的區域。

master : 主DNS伺服器使用的區域標識。

slave : 一般輔助DNS伺服器使用的區域標識。

forward : 轉發區域使用的區域標識。

安裝DNS

Linux系統上提供DNS服務的軟體有幾款,其中最好的就是bind軟體,目前Linux6上面已經是bind9.8了。直接安裝以下RPM包即可。

[[email protected] ~]# yum install bind bind-utils bind-libs
[[email protected] ~]# service iptables stop
[[email protected] ~]# setenforce 0

解釋各個包的意義:

bind-libs:提供的庫檔案

bind-utils:提供的DNS客戶端工具

bind:伺服器主包

bind-devel:提供標頭檔案和庫檔案做二次開發使用(可省略)

bind-chroot:把DNS配置做根切換(可省略)

bind-dyndb-ldap:用於把DNS區域檔案存入到資料庫或Ldap中(可省略)

Bind的檔案

/etc/named.conf              #配置檔案
/etc/rc.d/init.d/named       #服務指令碼
/var/named/name.ca           #根域區域配置檔案
/var/named/named.localhost   #localhost區域配置檔案
/var/named/named.loopback    #反向解析配置檔案

快取記憶體DNS

快取記憶體DNS伺服器:192.168.60.10

在DNS安裝完成之後,其實就是一個快取記憶體DNS伺服器,但想要提供服務還需要調整一下監聽地址和允許訪問主機。下面介紹一下Bind主配置檔案/etc/named.conf(許可權640;root屬主;named屬組)。

[[email protected] ~]# cat /etc/named.conf
options {
  listen-on port 53 { any; };                                 #IPv4監聽地址,改為“any”或註釋掉都表示監聽所有,預設是“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 { any; };                                       #允許查詢者,改為“any”或註釋掉都表示允許所有,預設是“localhost”
  recursion yes;                                              #允許給其它使用者遞迴預設開啟
  allow-recursion { 192.168.60.0/24; };                       #訪問控制,只允許給192.168.60.0網段的使用者遞迴。可省略。
};
 
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"; 

#定義日誌(由於DNS查詢太頻繁儘量不要開啟日誌)
logging {
channel default_debug   {
file "data/named.run";
severity dynamic;
};
};
 
#預設DNS根域檔案
zone "." IN {
  type hint;
  file "named.ca";
};
 
#包含檔案
include "/etc/named.rfc1912.zones";
//include "/etc/named.root.key";          #在做實驗時都把此檔案給註釋掉,不然不影響實驗正常結果。預設是開啟的。

[[email protected] ~]# service named start
[[email protected] ~]# dig -t A www.baidu.com @192.168.60.10
#測試快取記憶體伺服器(DNS伺服器必須能上網)

正向解析DNS

在快取記憶體DNS伺服器的基礎上做正向解析DNS伺服器

在/etc/named.conf檔案中新增正向解析區域

[[email protected] ~]# vim /etc/named.conf
zone "ywnds.com" IN {
  type master;
  file "ywnds";
  allow-transfer { none; };
};

在/var/named/下新增正向區域檔案

[[email protected] ~]# vim /var/named/ywnds
$TTL 1D
@       IN    SOA    dns.ywnds.com.    root.ywnds.com. (
                                        0      ; serial
                                        1D     ; refresh
                                        1H     ; retry
                                        1W     ; expire
                                        3H )   ; minimum
@       IN    NS      dns
dns     IN    A       192.168.60.10
@       IN    MX 10   mail
mail    IN    A       192.168.60.100
www     IN    A       192.168.60.200
[[email protected] ~]# chown root:named /var/named/ywnds

dig驗證

DNS正反向區域解析(二)DNS正反向區域解析(二)

反正解析DNS

在/etc/named.conf檔案中新增正向解析區域

[[email protected] ~]# vim /etc/named.conf
zone "60.168.192.in-addr.arpa" IN {
  type master;
  file "ywnds.com";
  allow-transfer { none; };
};

在/var/named/下新增反向區域檔案

[[email protected] ~]# vim /var/named/ywnds
$TTL 1D
@       IN    SOA    dns.ywnds.com.    root.ywnds.com. (
                                        0      ; serial
                                        1D     ; refresh
                                        1H     ; retry
                                        1W     ; expire
                                        3H )   ; minimum
        IN    NS      dns.ywnds.com.
200     IN    PTR     www.ywnds.com.
100     IN    PTR     mail.ywnds.com.
[[email protected] ~]# chown root:named /var/named/ywnds

PS: 反向解析必須要寫FQDN

驗證

[[email protected] ~]# dig -x 192.168.60.200 @192.168.60.