1. 程式人生 > >Linux系統——DNS

Linux系統——DNS

 DNS系統的作用
1. DNS伺服器
Internet中,大部分網站、郵件服務等伺服器都使用了域名形式的地址,這種地址形式要比使用IP地址形式更加直觀,更加容易被使用者記住。
FQDN格式(完整域名格式):在常見域名後新增“.”(根域)。
DNS系統在網路中的作用就是維護著一個地址資料庫,其中記錄了各種主機域名:與IP地址的對應關係,以便為客戶程式提供正向或反向的地址查詢服務,即正向解析與反向解析。
(1)正向解析:根據域名查IP地址,是DNS服務最常用的基本功能
分類:
a)A記錄
b)Cname(別名解析、多個域名同一IP解析)
(2)反向解析:根據IP查域名,不是很常用,應用於例如反垃圾郵件的驗證等
a)PTR反向解析
每臺DNS伺服器都負責管理有個有限範圍(一個或幾個域)內的主機域名和IP地址的對應關係,這些特定的DNS域或IP地址段稱為“zone”(區域)。

2. DNS伺服器的分類
根據管理的區域地質資料的來源不同,DNS系統可以分為不同的型別:
(1)快取域名伺服器
只提供域名解析結果的快取功能,本身並不能解析
(2)主域名伺服器
自主維護一個域名的解析記錄本
(3)從域名伺服器
與主域名伺服器提供完全相同的DNS解析服務,通常用於DNS伺服器的熱備份。
對客戶機來說,無論使用主域名伺服器還是從域名伺服器,查詢結果是一樣的。
(4)智慧解析伺服器
根據不同訪問地域的使用者返回給他不同的解析響應包

3. DNS伺服器的查詢方式(以www.baidu.com為例)
(1)DNS伺服器遞迴查詢:
當客戶機向DNS 伺服器發出解析請求,DNS伺服器先在DNS的本地快取和hosts對映檔案中檢視。若沒有,客戶機會向LDNS求助,LDNS先檢視LDNS的本地快取及hosts對映檔案。若還沒有,檢視DNS為什麼類別,若是快取域名解析伺服器,通過網路查詢,若為主域名伺服器,檢視LDNS域名解析記錄本;若仍沒有,通過DNS服務迭代查詢查詢。
(2)DNS伺服器迭代查詢:
LDNS先去求助點(.)域名伺服器,(.)域名伺服器不知道www.baidu.com在哪,於是將(.com)伺服器位置告訴LDNS,(.com)伺服器在將baidu.com伺服器的位置告訴LDNS,baidu.com伺服器將www.baidu.com的域名解析返回給LDNS,LDNS將解析記錄存在本地並將其傳送給客戶機。

4. DNS埠
TCP 53埠
UDP 53埠
### 配置快取域名伺服器
#### BIND的安裝和控制
1. RPM包的主要作用
bind:提供了域名伺服器的主要程式及相關檔案
bind-utils:提供了對DNS伺服器的測試工具程式,如nslookup等
bind-libs:提供了bind、bind-utils需要使用的庫函式
bind-chroot:為BIND服務提供一個偽裝的根目錄(將/var/named/chroot資料夾作為BIND的根目錄)以提高安全性。也成為jail(監牢)機制。
BIND安裝以後,會自動增加一個名為named的系統服務
```
[[email protected] ~]# mount /dev/sr0 /media/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
[

[email protected] ~]# yum -y install bind bind-chroot bind-utils

```
2. 主配置檔案 /etc/named.conf

```
[[email protected] ~]# cp /etc/named.conf{,.bak}
[[email protected] ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.214.154; }; #監聽IP
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; }; #允許連線本機的IP範圍
forwarders {202.106.0.20} #告訴DNS去什麼位置解析(另一個DNS的IP地址)
recursion yes; # 是否迭代查詢
}
[[email protected] etc]# named-checkconf /etc/named.conf
[[email protected] etc]# /etc/init.d/named start
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]

```
解析配置檔案

```
[[email protected] ~]# vim /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
search localdomain
nameserver 192.168.214.145
[[email protected] ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=1 ttl=128 time=4.89 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=2 ttl=128 time=5.16 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=3 ttl=128 time=4.95 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=4 ttl=128 time=5.70 ms


```
配置主域名解析
1. 正向解析
```
[[email protected] etc]# vim named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
listen-on port 53 { 192.168.214.163; };
// 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; }; #允許所有使用者訪問
forwarders { 202.106.0.20; }; #手動新增,指定到哪個DNS下解析
recursion yes;
// 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;
};
};

zone "." IN {
type hint;
file "named.ca";
};
zone "yunjisuan.com" IN { #手動新增的,正向解析
type master; #主域名解析
file "yunjisuan.com.zone"; #解析記錄本 allow-transfer { } 允許哪個從域名連線
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

[[email protected] etc]# cd /var/named/ # 記錄本的位置
[[email protected] named]# ls
chroot dynamic named.empty named.loopback
data named.ca named.localhost slaves
[[email protected] named]# cp -p named.empty yunjisuan.com.zone #複製模板
[[email protected] named]# vim yunjisuan.com.zone
$TTL 3H #時間週期
@ IN SOA yunjisuan.com. root.ns1.yunjisuan.com. ( #兩部分:要解析的域名(以.結尾)管理員的郵箱(使用者.當前DNS的主機名.)
20181125 ; serial #當前日期(如果主域名伺服器的數字比主域名的大,從域名就會找主域名下載解析記錄本)
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.yunjisuan.com #DNS解析位置
ns1 A 192.168.214.163
www A 192.168.214.2
news A 102.168.214.1
bbs CNAME news
* A 192.168.214.161
[[email protected] named]# named-checkzone yunjisuan.com yunjisuan.com.zone
zone yunjisuan.com/IN: loaded serial 20181125
OK
[[email protected] named]# /etc/init.d/named start
Starting named: named: already running [ OK ]
[[email protected] named]# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.214.163

```
2. 反向解析

```
[[email protected] etc]# vim named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
listen-on port 53 { 192.168.214.163; };
// 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; }; #允許所有使用者訪問
forwarders { 202.106.0.20; }; #手動新增,指定到哪個DNS下解析
recursion yes;
// 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;
};
};

zone "." IN {
type hint;
file "named.ca";
};
zone "yunjisuan.com" IN { #手動新增的,正向解析
type master; #主域名解析
file "yunjisuan.com.zone"; #解析記錄本 allow-transfer { } 允許哪個從域名連線
};
zone "214.168.192. in-addr.arpa" IN { #IP地址反著寫,反向解析
type master;
file "192.168.214.arpa";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[[email protected] named]# named-checkconf /etc/named.conf
[[email protected] named]# cd /var/named/
[[email protected] named]# ls
chroot dynamic named.empty named.loopback yunjisuan.com.zone
data named.ca named.localhost slaves
[[email protected] named]# cp -p named.empty 192.168.214.arpa
[[email protected] named]# vim 192.168.214.arpa
$TTL 3H
@ IN SOA yunjisuan.com. root.ns1.yunjisuan.com. (
20181125 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.yunjisuan.com.
2 PTR www.yunjisuan.com.
79 PTR ns1.yunjisuan.com.
[[email protected] named]# /etc/init.d/named restart
[[email protected] named]# nslookup www.yunjisuan.com

```