DNS,全稱Domain Name System,即功能變數名稱解析系統 。 DNS功能 主機名到IP地址的映射有兩種方式: 通過主機名,最終得到該主機名對應的IP地址的過程叫做功能變數名稱解析(或主機名解析)。在解析功能變數名稱時,可以首先採用靜態功能變數名稱解析的方法,如果靜態功能變數名稱解析不成功,再採用動態功能變數名稱解析的方法。可以將一 ...
DNS,全稱Domain Name System,即功能變數名稱解析系統。
DNS幫助用戶在互聯網上尋找路徑。在互聯網上的每一個電腦都擁有一個唯一的地址,稱作“IP地址”(即互聯網協議地址)。由於IP地址(為一串數字)不方便記憶,DNS允許用戶使用一串常見的字母(即“功能變數名稱”)取代。比如,您只需鍵入www.baidu.com,而不是“119.75.217.109”。即可訪問ICANN的官方網站。DNS命名用於Internet等TCP/IP網路中,通過用戶友好的名稱查找電腦和服務。當用戶在應用程式中輸入DNS名稱時,DNS服務可以將此名稱解析為與之相關的其他信息,如IP地址。因為,你在上網時輸入的網址,是通過功能變數名稱解析系解析找到相對應的IP地址,這樣才能上網。其實,功能變數名稱的最終指向是IP
DNS功能
每個IP地址都可以有一個主機名,主機名由一個或多個字元串組成,字元串之間用小數點隔開。有了主機名,就不要死記硬背每台IP設備的IP地址,只要記住相對直觀有意義的主機名就行了。這就是DNS協議所要完成的功能。
主機名到IP地址的映射有兩種方式:
1)靜態映射,每台設備上都配置主機到IP地址的映射,各設備獨立維護自己的映射表,而且只供本設備使用;
2)動態映射,建立一套功能變數名稱解析系統(DNS),只在專門的DNS伺服器上配置主機到IP地址的映射,網路上需要使用主機名通信的設備,首先需要到DNS伺服器查詢主機所對應的IP地址。
通過主機名,最終得到該主機名對應的IP地址的過程叫做功能變數名稱解析(或主機名解析)。在解析功能變數名稱時,可以首先採用靜態功能變數名稱解析的方法,如果靜態功能變數名稱解析不成功,再採用動態功能變數名稱解析的方法。可以將一些常用的功能變數名稱放入靜態功能變數名稱解析表中,這樣可以大大提高功能變數名稱解析效率。
DNS重要性
1、技術角度看
DNS解析是互聯網絕大多數應用的實際定址方式; 功能變數名稱技術的再發展、以及基於功能變數名稱技術的多種應用,豐富了互聯網應用和協議。
2、資源角度看
功能變數名稱是互聯網上的身份標識,是不可重覆的唯一標識資源; 互聯網的全球化使得功能變數名稱成為標識一國主權的國家戰略資源。
DNS的工作原理
以訪問www.為例說明(主機為Windows系統)
1)客戶端首先檢查本地c:\windows\system32\drivers\etc\host文件,是否有對應的IP地址,若有,則直接訪問WEB站點,若無
2)客戶端檢查本地緩存信息,若有,則直接訪問WEB站點,若無
3)本地DNS檢查緩存信息,若有,將IP地址返回給客戶端,客戶端可直接訪問WEB站點,若無
4)本地DNS檢查區域文件是否有對應的IP,若有,將IP地址返回給客戶端,客戶端可直接訪問WEB站點,若無,
5)本地DNS根據cache.dns文件中指定的根DNS伺服器的IP地址,轉向根DNS查詢。
6)根DNS收到查詢請求後,查看區域文件記錄,若無,則將其管轄範圍內.com伺服器的IP地址告訴本地DNS伺服器
7).com伺服器收到查詢請求後,查看區域文件記錄,若無,則將其管轄範圍內.xxx伺服器的IP地址告訴本地DNS伺服器
8).xxx伺服器收到查詢請求後,分析需要解析的功能變數名稱,若無,則查詢失敗,若有,返回www.的IP地址給本地伺服器
9)本地DNS伺服器將www.的IP地址返回給客戶端,客戶端通過這個IP地址與WEB站點建立連接
安裝DNS伺服器軟體
[root@CentOS7 ~]# yum install bind
配置相關配置文件
/etc/named.conf ,/etc/named.rfc1912.zones 為DNS主配置文件
/var/named/目錄為DNS資料庫文件存放目錄,每一個域文件都放在這裡。
/etc/rc.d/init.d/named 為DNS服務的服務腳本。
一 DNS正向解析
這裡以mytest.com域為例
www.mytest.com 對應IP 為192.168.29.100;
ftp.mytest.com 對應IP為1.1.1.1 。
1 首先編輯/etc/named.conf文件
listen-on port 53 { any; };
allow-query { any; };
dnssec-enable no;
dnssec-validation no;
2 編輯區域配置文件/etc/named.rfc1912.zones
zone "mytest.com" IN {
type master;
file "mytest.com";
};
其中zone的格式為:
zone “ZONE_NAME IN {
type master;
file “ZONE_NAME.zone”
}
3 新建解析庫文件/var/named/mytest.com.zone
[root@CentOS7 ~]# vim /var/named/mytest.com.zone
$TTL 1D
$ORIGIN mytest.com.
@ IN SOA mytest.com. admin.mytest.com. (
20170526; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
mytest.com. IN NS ns1.mytest.com.
ns1 IN A 192.168.29.100
www IN A 172.16.254.13
ftp IN A 1.1.1.1
4 修改解析庫文件許可權
[root@CentOS7 ~]# chgrp named /var/named/mytest.com.zone
5檢查 配置語法
(1)檢查配置文件語法
[root@CentOS7 ~]# named-checkconf
(2)檢查域配置文件語法
[root@CentOS7 ~]# named-checkzone mytest.com /var/named/mytest.com.zone
zone mytest.com/IN: loaded serial 20170526
OK
6 啟動named服務
[root@CentOS7 ~]# systemctl start named
7 測試
註意:要配置DNS伺服器為本DNS伺服器IP地址
或者使用dig命令則不需要修改DNS伺服器
[root@CentOS7 ~]# nslookup www.mytest.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.mytest.com
Address: 172.16.254.13
[root@CentOS7 ~]# nslookup ftp.mytest.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: ftp.mytest.com
Address: 1.1.1.1
測試成功,正向解析成功!!
二 DNS反向解析
這裡以mytest.com域為例
IP地址192.168.29.100/24對應功能變數名稱為www.mytest.com;
192.168.29.200/24對應功能變數名稱為ftp.mytest.com;
1 首先編輯/etc/named.conf文件
listen-on port 53 { any; };
allow-query { any; };
dnssec-enable no;
dnssec-validation no;
2 編輯區域配置文件/etc/named.rfc1912.zones
zone "29.168.192.in-addr.arpa" IN {
type master;
file "name.29.168.192";
};
格式為:
zone "NET_IP.in-addr.arpa" IN { #NET_IP 為反向解析的IP 網段
type master;
file "NAME_ZONE"; #NAME_ZONE為反向解析庫配置文件名稱
};
3 新建解析庫文件
$TTL 1D
$ORIGIN 29.168.192.in-addr.arpa.
@ IN SOA mytest.com. admin.mytest.com. (
20170526; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS mytest.com.
100 IN PTR www.mytest.com.
200 IN PTR ftp.mytest.com.
4 修改解析庫文件所屬組
[root@CentOS7 ~]# chgrp named name.29.168.192
5 語法檢查
(1)檢查配置文件語法
[root@CentOS7 ~]# named-checkconf
(2)檢查域配置文件語法
[root@CentOS7 ~]# named-checkzone 29.168.192.in-addr.arpa /var/named/name.29.168.192
zone 29.168.192.in-addr.arpa/IN: loaded serial 20170526
OK
6 啟動named服務
[root@CentOS7 ~]# systemctl start named
7 測試
[root@CentOS7 ~]# dig -x 192.168.29.200 @192.168.29.100
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -x 192.168.29.200 @192.168.29.100
[……]
200.29.168.192.in-addr.arpa. 86400 IN PTR ftp.mytest.com.
[root@CentOS7 ~]# dig -x 192.168.29.100 @192.168.29.100
[……]
;; ANSWER SECTION:
100.29.168.192.in-addr.arpa. 86400 IN PTR www.mytest.com.
;; AUTHORITY SECTION:
29.168.192.in-addr.arpa. 86400 IN NS mytest.com.
測試成功!!!
三 主從DNS
這裡主DNS伺服器IP地址為192.168.29.100/24
從DNS伺服器IP地址為192.168.29.3/24
www.mytest.com 對應IP 為192.168.29.100;
ftp.mytest.com 對應IP為1.1.1.1
1首先編輯主伺服器/etc/named.conf文件
listen-on port 53 { any; };
allow-query { any; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
2 編輯主伺服器的區域配置文件/etc/named.rfc1912.zones
zone "mytest.com" IN {
type master;
file "mytest.com.zone";
allow-transfer {192.168.29.3; }; ##192.168.29.3位從伺服器的ip地址。
};
3 新建主伺服器解析庫文件vim /var/named/mytest.com.zone
$TTL 1D
$ORIGIN mytest.com.
@ IN SOA mytest.com. admin.mytest.com. (
20170526; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
mytest.com. IN NS ns1.mytest.com.
mytest.com. IN NS slave.mytest.com. ###添加從伺服器的NS解析記錄。
ns1 IN A 192.168.29.100
slave IN A 192.168.29.3 ###指定從伺服器的IP地址。
www IN A 172.16.254.13
ftp IN A 1.1.1.1
4 編輯從伺服器/etc/named.conf文件
listen-on port 53 { any; };
allow-query { any; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
5 配置從伺服器的區域配置文件/etc/named.rfc1912.zones
zone "mytest.com" IN {
type slave; ##表明本機是從伺服器
file "slaves/mytest.com"; ##將同步後的文件放置在哪裡,這裡是相對路徑,實際路徑為/var/named/slaves/mytest.com
masters {192.168.29.100; }; ##指定主伺服器的ip地址
};
6 語法檢查
在主從兩個伺服器上都進行語法檢查
[root@CentOS7 ~]# named-checkconf
7 在主從兩個伺服器上開啟服務
[root@CentOS7 ~]# systemctl start named
8 測試
(1)查看從伺服器已經取得解析資料庫文件
[root@centos7 ~]# ll /var/named/slaves/
total 4
-rw-r--r--. 1 named named 348 May 26 15:22 mytest.com
(2)用從伺服器解析www.mytest.com
[root@centos7 ~]# dig -t A www.mytest.com @192.168.29.3
[……]
;; ANSWER SECTION:
www.mytest.com. 86400 IN A 172.16.254.13
;; AUTHORITY SECTION:
mytest.com. 86400 IN NS slave.mytest.com.
mytest.com. 86400 IN NS ns1.mytest.com.
;; ADDITIONAL SECTION:
ns1.mytest.com. 86400 IN A 192.168.29.100
slave.mytest.com. 86400 IN A 192.168.29.3
;; Query time: 2 msec
;; SERVER: 192.168.29.3#53(192.168.29.3)
;; WHEN: Fri May 26 15:37:13 CST 2017
;; MSG SIZE rcvd: 129
可以看到解析成功。說明從伺服器已生效。
四 子域授權
這裡子域伺服器為192.168.29.110
1 在mytest.com.域的伺服器上修改區域資料庫文件
[root@CentOS7 ~]# cat /var/named/mytest.com.zone
$TTL 1D
$ORIGIN mytest.com.
@ IN SOA mytest.com. admin.mytest.com. (
20170526; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
mytest.com. IN NS ns1.mytest.com.
mytest.com. IN NS slave.mytest.com.
haha.mytest.com. IN NS ns2.haha.mytest.com. ###新添加的行
ns1 IN A 192.168.29.100
slave IN A 192.168.29.3
www IN A 172.16.254.13
ftp IN A 1.1.1.1
ns2.haha.mytest.com. IN A 192.168.29.110 ###新添加行,指明子域伺服器IP地址。
2 修改子域伺服器的主配置文件/etc/named.conf
[root@CentOS7 ~]# vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
3 編輯子域伺服器的區域配置文件/etc/named.rfc1912.zones
[root@CentOS7 ~]# vim /etc/named.rfc1912.zones
zone "haha.mytest.com" IN {
type master;
file "haha.zone";
allow-transfer {192.168.29.0/24; };
};
4 新建主伺服器解析庫文件/var/named/haha.zone
功能變數名稱www.haha.mytest.com 對應IP 172.16.11.11
功能變數名稱ftp. haha.mytest.com 對應IP 2.2.2.2
[root@CentOS7 ~]# vim /var/named/haha.zone
$TTL 1D
$ORIGIN haha.mytest.com.
@ IN SOA haha.mytest.com. admin.haha.mytest.com. (
20170528; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
haha.mytest.com. IN NS ns2.haha.mytest.com.
ns2 IN A 192.168.29.110
www IN A 172.16.11.11
ftp IN A 2.2.2.2
5 語法檢查
在兩個伺服器上都進行語法檢查
[root@CentOS7 ~]# named-checkconf
6 在兩個伺服器上開啟服務
[root@CentOS7 ~]# systemctl start named
7測試
[root@centos7 ~]# dig -t A www.haha.mytest.com @192.168.29.100
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.haha.mytest.com @192.168.29.100
[…….]
;www.haha.mytest.com. IN A
;; ANSWER SECTION:
www.haha.mytest.com. 86400 IN A 172.16.11.11
;; AUTHORITY SECTION:
haha.mytest.com. 86400 IN NS ns2.haha.mytest.com.
;; ADDITIONAL SECTION:
ns2.haha.mytest.com. 86400 IN A 192.168.29.110
可以看到,已經可以成功解析