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正向解析
這里以linuxidc.com域為例
www.linuxidc.com 對應IP 為192.168.29.100;
ftp.linuxidc.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 "linuxidc.com" IN {type master;file "linuxidc.com"; };
其中zone的格式為:
zone “ZONE_NAME IN {type master;file “ZONE_NAME.zone”
}
3 新建解析庫文件/var/named/linuxidc.com.zone
[root@CentOS7 ~]# vim /var/named/linuxidc.com.zone
$TTL 1D
$ORIGIN linuxidc.com.
@ IN SOA linuxidc.com. admin.linuxidc.com. ( 20170526; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum linuxidc.com. IN NS ns1.linuxidc.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/linuxidc.com.zone
5檢查 配置語法
(1)檢查配置文件語法
[root@CentOS7 ~]# named-checkconf
(2)檢查域配置文件語法
[root@CentOS7 ~]# named-checkzone linuxidc.com /var/named/linuxidc.com.zone
zone linuxidc.com/IN: loaded serial 20170526
OK
6 啟動named服務
[root@CentOS7 ~]# systemctl start named
7 測試
注意:要配置DNS服務器為本DNS服務器IP地址
或者使用dig命令則不需要修改DNS服務器
[root@CentOS7 ~]# nslookup www.linuxidc.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: www.linuxidc.com Address: 172.16.254.13 [root@CentOS7 ~]# nslookup ftp.linuxidc.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: ftp.linuxidc.com Address: 1.1.1.1
測試成功,正向解析成功!!
二 DNS反向解析
這里以linuxidc.com域為例
IP地址192.168.29.100/24對應域名為www.linuxidc.com;
192.168.29.200/24對應域名為ftp.linuxidc.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 linuxidc.com. admin.linuxidc.com. ( 20170526; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS linuxidc.com. 100 IN PTR www.linuxidc.com. 200 IN PTR ftp.linuxidc.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.linuxidc.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.linuxidc.com. ;; AUTHORITY SECTION: 29.168.192.in-addr.arpa. 86400 IN NS linuxidc.com.
測試成功!!!
三 主從DNS
這里主DNS服務器IP地址為192.168.29.100/24
從DNS服務器IP地址為192.168.29.3/24
www.linuxidc.com 對應IP 為192.168.29.100;
ftp.linuxidc.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 "linuxidc.com" IN {type master;file "linuxidc.com.zone";allow-transfer {192.168.29.3; }; ##192.168.29.3位從服務器的ip地址。 };
3 新建主服務器解析庫文件vim /var/named/linuxidc.com.zone
$TTL 1D
$ORIGIN linuxidc.com.
@ IN SOA linuxidc.com. admin.linuxidc.com. (20170526; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum linuxidc.com. IN NS ns1.linuxidc.com. mytest.com. IN NS slave.linuxidc.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 "linuxidc.com" IN {type slave; ##表明本機是從服務器file "slaves/linuxidc.com"; ##將同步后的文件放置在哪里,這里是相對路徑,實際路徑為/var/named/slaves/linuxidc.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 linuxidc.com
(2)用從服務器解析www.linuxidc.com
[root@centos7 ~]# dig -t A www.linuxidc.com @192.168.29.3 [……] ;; ANSWER SECTION: www.linuxidc.com. 86400 IN A 172.16.254.13 ;; AUTHORITY SECTION: linuxidc.com. 86400 IN NS slave.linuxidc.com. mytest.com. 86400 IN NS ns1.linuxidc.com. ;; ADDITIONAL SECTION: ns1.linuxidc.com. 86400 IN A 192.168.29.100 slave.linuxidc.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 在linuxidc.com.域的服務器上修改區域數據庫文件
[root@CentOS7 ~]# cat /var/named/linuxidc.com.zone
$TTL 1D
$ORIGIN linuxidc.com.
@ IN SOA linuxidc.com. admin.linuxidc.com. ( 20170526; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum linuxidc.com. IN NS ns1.linuxidc.com. mytest.com. IN NS slave.linuxidc.com. haha.linuxidc.com. IN NS ns2.haha.linuxidc.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.linuxidc.com. IN A 192.168.29.110 ###新添加行,指明子域服務器IP地址。
2 修改子域服務器的主配置文件/etc/named.conf
[root@CentOS7 ~]# vim /etc/named.conflisten-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.linuxidc.com" IN {type master;file "haha.zone"; allow-transfer {192.168.29.0/24; }; };
4 新建主服務器解析庫文件/var/named/haha.zone
域名www.haha.linuxidc.com 對應IP 172.16.11.11
域名ftp. haha.linuxidc.com 對應IP 2.2.2.2
[root@CentOS7 ~]# vim /var/named/haha.zone
$TTL 1D
$ORIGIN haha.linuxidc.com.
@ IN SOA haha.linuxidc.com. admin.haha.linuxidc.com. ( 20170528; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum haha.linuxidc.com. IN NS ns2.haha.linuxidc.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.linuxidc.com @192.168.29.100 ; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.haha.linuxidc.com @192.168.29.100 […….] ;www.haha.linuxidc.com. IN A ;; ANSWER SECTION: www.haha.linuxidc.com. 86400 IN A 172.16.11.11 ;; AUTHORITY SECTION: haha.linuxidc.com. 86400 IN NS ns2.haha.linuxidc.com. ;; ADDITIONAL SECTION: ns2.haha.linuxidc.com. 86400 IN A 192.168.29.110
可以看到,已經可以成功解析