1、DNS簡介
DNS(Domain Name System),域名系統,因特網上做爲域名和IP地址相互映射的一個分佈式數據庫,可以使用戶更方便的訪問互聯網,而不用去記住可以被機器直接讀取的IP數串。經過主機名,最終獲得該主機名對應的IP地址的過程叫作域名解析(或主機名解析)。DNS協議運行在UDP協議之上,使用端口號53。DNS服務器的做用就是就比如生活中的電話簿、114查號臺同樣,爲各類網絡程序找到對應目標主機的IP地址或對應的主機域名。linux
2、DNS功能
每一個IP地址均可以有一個主機名,主機名由一個或多個字符串組成,字符串之間用小數點隔開。有了主機名,就不要死記硬背每臺IP設備的IP地址,只要記住相對直觀有意義的主機名就好了。這就是DNS協議所要完成的功能。數據庫
主機名到IP地址的映射有兩種方式:
1)靜態映射,每臺設備上都配置主機到IP地址的映射,各設備獨立維護本身的映射表,並且只供本設備使用;
2)動態映射,創建一套域名解析系統(DNS),只在專門的DNS服務器上配置主機到IP地址的映射,網絡上須要使用主機名通訊的設備,首先須要到DNS服務器查詢主機所對應的IP地址。vim
經過主機名,最終獲得該主機名對應的IP地址的過程叫作域名解析(或主機名解析)。在解析域名時,能夠首先採用靜態域名解析的方法,若是靜態域名解析不成功,再採用動態域名解析的方法。能夠將一些經常使用的域名放入靜態域名解析表中,這樣能夠大大提升域名解析效率。緩存
正向解析:根據主機名稱(域名)查找對應的IP地址(實際應用中最多的)
反向解析:根據IP地址查找對應的主機域名(不經常使用,通常用於搭建郵件服務器時。)安全
根據服務器與所提供域名解析記錄的關係,將DNS服務器分爲不一樣的角色:
1)緩存域名服務器,也稱爲 惟高速緩存服務器
經過向其餘域名服務器查詢得到域名->IP地址記錄
將域名查詢結果緩存到本地,提升重複查詢時的速度服務器
2)主域名服務器
特定DNS區域的官方服務器,具備惟一性
負責維護該區域內全部域名->IP地址的映射記錄網絡
3)從域名服務器(通俗一點就是用於備份DNS服務器的)
也稱爲 輔助域名服務器
其維護的 域名->IP地址記錄 來源於主域名服務器
搭建DNS服務應用的軟件爲:BIND(Berkeley Internet Name Daemon)tcp
3、DNS服務環境部署記錄分佈式
1)安裝DNS服務所須要的軟件包 [root@test ~]# yum -y install bind bind-chroot bind-util bind-libs ------------------------------------------------------------------------------------------------ 解釋: bind 提供了域名服務的主要程序及相關文件 bind-utils 提供了對DNS服務器的測試工具程序(如nslookup、dig等) bind-chroot 爲bind提供一個假裝的根目錄以加強安全性(將「/var/named/chroot/」文件夾做爲BIND的根目錄) ------------------------------------------------------------------------------------------------ 2)DNS服務器的配置(服務端要能聯網) [root@test ~]# cp /etc/named.conf /etc/named.conf.bak [root@test ~]# vim /etc/named.conf options { listen-on port 53 { any; }; #使用53端口監聽,默認監聽的是127.0.0.1,這裏修改成any(或者直接修改成服務端的ip地址,如服務器ip爲192.168.1.24) listen-on-v6 port 53 { ::1; }; #監聽ipv6的IP地址選項 directory "/var/named"; #DNS的根目錄,因爲安裝了bind-chroot的所致,所以服務的實際工做目錄爲/var/named/chroot/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; }; #容許查詢的主機,默認爲localhost,這裏修改成any recursion yes; #能夠遞歸查詢 dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { #named服務的日誌文件信息 channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { #根(.)域的配置及信息(也能夠經過其它上級域名轉發功能來配置緩存域名服務器,能夠去了解下) type hint; file "named.ca"; }; [root@test ~]# chmod 770 /var/named/ [root@test ~]# ls -lh /etc/named.conf -rw-r-----. 1 root named 984 Nov 20 2015 /etc/named.conf [root@test ~]# /etc/init.d/named start Generating /etc/rndc.key: [ OK ] Starting named: [ OK ] [root@test ~]# ps -ef|grep name named 1592 1 0 15:03 ? 00:00:00 /usr/sbin/named -u named -t /var/named/chroot root 1614 32378 0 15:03 pts/0 00:00:00 grep name [root@test ~]# netstat -tunlp|grep named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1592/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1592/named tcp 0 0 ::1:53 :::* LISTEN 1592/named tcp 0 0 ::1:953 :::* LISTEN 1592/named udp 0 0 127.0.0.1:53 0.0.0.0:* 1592/named udp 0 0 ::1:53 :::* 1592/named 3)客戶端測試 將上面服務器的ip地址添加到客戶端的/etc/resolv.conf文件裏 [root@test2 ~]# cat /etc/resolv.conf nameserver 192.168.1.24 //此處的192.168.1.24是上面DNS服務器的ip地址 [root@test2 ~]# ping www.baidu.com PING www.a.shifen.com (119.75.213.51) 56(84) bytes of data. 64 bytes from 119.75.213.51: icmp_seq=1 ttl=55 time=2.58 ms 64 bytes from 119.75.213.51: icmp_seq=2 ttl=55 time=2.29 ms ....... [root@test2 ~]# dig www.baidu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55147 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 1100 IN CNAME www.a.shifen.com. www.a.shifen.com. 200 IN A 119.75.213.50 www.a.shifen.com. 200 IN A 119.75.213.51 ;; AUTHORITY SECTION: a.shifen.com. 1100 IN NS ns4.a.shifen.com. a.shifen.com. 1100 IN NS ns2.a.shifen.com. a.shifen.com. 1100 IN NS ns3.a.shifen.com. a.shifen.com. 1100 IN NS ns1.a.shifen.com. a.shifen.com. 1100 IN NS ns5.a.shifen.com. ;; ADDITIONAL SECTION: ns5.a.shifen.com. 1100 IN A 119.75.222.17 ns3.a.shifen.com. 1100 IN A 61.135.162.215 ns4.a.shifen.com. 1100 IN A 115.239.210.176 ns1.a.shifen.com. 1100 IN A 61.135.165.224 ns2.a.shifen.com. 1100 IN A 180.149.133.241 ;; Query time: 1 msec ;; SERVER: 192.168.1.233#53(192.168.1.233) ;; WHEN: Wed Jun 21 15:12:20 2017 ;; MSG SIZE rcvd: 260 ------------注意事項------------- 客戶端必需要跟服務器端可以通訊(能ping通)及關閉selinux ---------------------------------------擴展------------------------------------------- 上面在/etc/named.conf文件裏沒有自定義域名去進行解析設置,下面說下自定義域名的設置: 1) DNS主域名服務器配置 [root@test ~]# cp /etc/named.conf /etc/named.conf2.bak [root@test ~]# vim /etc/named.conf #追加下面內容,即添加wangshibo.com域名配置。若是有多個域名,就以下添加多個相似配置。 ...... zone "wangshibo.com" IN { #指定區名。正向解析 type master; #服務器類別,master爲主域名 file "wangshibo.com_zone"; #正向解析區域文件名wangshibo.com_zone,在/var/named目錄下建立 allow-transfer {192.168.1.23;}; #指定從(輔助)域名服務器IP。即DNS從服務器的ip是192.168.1.23 }; zone "1.168.192.in-addr.arpa" IN { #域名對應的ip地址網段爲192.168.1.0,此處必須按照相 。反向解析 同的格式寫 type master; file "192.168.1.zone"; #反向解析文件名192.168.1.zone allow-transfer {192.168.1.23;}; }; [root@test ~]# vim /var/named/wangshibo.com_zone $TTL 1D @ IN SOA ns1.wangshibo.com. mail.www.wangshibo.com. ( 2014102101 #主DNS的此解析文件沒改動一次,都要修改一次這個值,而後重啓naned或rndc reload重啓,從DNS就會自動同步過去 1D 1H 1W 3H ) @ IN NS ns1.wangshibo.com. #主域名的域名地址。NS是域名服務器 ns1.wangshibo.com. IN A 192.168.1.24 #主域名的ip地址 @ IN NS ns2.wangshibo.com. #從域名的域名地址。NS是域名服務器 ns2.wangshibo.com. IN A 192.168.1.23 #從域名的ip地址 @ IN MX 10 mail.ww.wangshibo.com. #郵件服務器的域名地址 mail.www.wangshibo.com. IN A 192.168.1.4 www.wangshibo.com. IN A 192.168.1.2 ftp.wangshibo.com IN A 192.168.1.3 win7.wangshibo.com. IN A 192.168.1.224 linux.wangshibo.com. IN CNAME ns1.wangshibo.com. smb.wangshibo.com. IN CNAME ns1.wangshibo.com. dhcp.wangshibo.com. IN CNAME ns1.wangshibo.com. [root@test ~]# vim /var/named/192.168.1.zone $TTL 1D @ IN SOA ns1.wangshibo.com. mail.www.wangshibo.com. ( 2014102101 #主DNS的此解析文件沒改動一次,都要修改一次這個值,而後重啓naned或rndc reload重啓,從DNS就會自動同步過去 1D 1H 1W 3H ) @ IN NS ns1.wangshibo.com. @ IN NS ns2.wangshibo.com. 24 IN PTR ns1.wangshibo.com. 23 IN PTR ns2.wangshibo.com. @ IN MX 10 mail.www.wangshibo.com. 4 IN PTR mail.www.wangshibo.com. 2 IN PTR www.wangshibo.com. 3 IN PTR ftp.wangshibo.com. 23 IN PTR win7.wangshibo.com. [root@test ~]# /etc/init.d/named restart Stopping named: [ OK ] Starting named: [ OK ] 在客戶端測試 [root@test2 ~]# cat /etc/resolv.conf search wangshibo.com nameserver 192.168.1.24 [root@test2 ~]# dig www.wangshibo.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> www.wangshibo.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29152 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.wangshibo.com. IN A ;; ANSWER SECTION: www.wangshibo.com. 86400 IN A 192.168.1.2 ;; AUTHORITY SECTION: wangshibo.com. 86400 IN NS ns2.wangshibo.com. wangshibo.com. 86400 IN NS ns1.wangshibo.com. ;; ADDITIONAL SECTION: ns1.wangshibo.com. 86400 IN A 192.168.1.24 ns2.wangshibo.com. 86400 IN A 192.168.1.23 ;; Query time: 1 msec ;; SERVER: 192.168.1.24#53(192.168.1.24) #注意這行,說明是主DNS從域名服務器解析的 ;; WHEN: Wed Jun 21 15:39:09 2017 ;; MSG SIZE rcvd: 119 1) DNS從域名服務器配置 從域名服務器的ip爲192.168.1.23 服務的安裝過程在上面已介紹,此處省略 [root@test33 ~]# cp /etc/named.conf /etc/named.conf.bak [root@test33 ~]# vim /etc/named.conf options { listen-on port 53 { any; }; 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; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; 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 "wangshibo.com" IN { type slave; file "wangshibo.com_zone"; masters {192.168.1.24;}; }; zone "1.168.192.in-addr.arpa" IN { type slave; file "192.168.1.zone"; masters {192.168.1.24;}; }; [root@test33 ~]# chmod 770 /var/named/ [root@test33 ~]# ll /var/named/ -d drwxrwx---. 6 root named 4096 Jun 21 15:44 /var/named/ [root@test33 ~]# service named restart Stopping named: [ OK ] Generating /etc/rndc.key: [ OK ] Starting named: [ OK ] 客戶端測試 [root@test2 ~]# dig @192.168.1.23 www.wangshibo.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> @192.168.1.23 www.wangshibo.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12862 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.wangshibo.com. IN A ;; ANSWER SECTION: www.wangshibo.com. 86400 IN A 192.168.1.2 ;; AUTHORITY SECTION: wangshibo.com. 86400 IN NS ns2.wangshibo.com. wangshibo.com. 86400 IN NS ns1.wangshibo.com. ;; ADDITIONAL SECTION: ns1.wangshibo.com. 86400 IN A 192.168.1.24 ns2.wangshibo.com. 86400 IN A 192.168.1.23 ;; Query time: 1 msec ;; SERVER: 192.168.1.23#53(192.168.1.23) #注意這行,說明是從DNS從域名服務器解析的 ;; WHEN: Wed Jun 21 15:53:47 2017 ;; MSG SIZE rcvd: 119 最後,在客戶機的/etc/resolv.conf文件裏添加上面主從DNS地址,就能夠正常解析上面在/var/named/192.168.1.zone裏設置的域名了 # vim /etc/resolv.conf nameserver 192.168.1.24 nameserver 192.168.1.23 -----------------------------------------注意事項-------------------------------------------- a)若是仍是沒法解析,請返回主域名服務器的/var/named目錄給區域配置文件加上權限(單純是爲了練習的話,能夠加到最大權限到777) b)以上的練習都是在關閉防火牆與seLinux的狀態下操做的,若是防火牆開啓,可自行去添加規則
最後務必查看下/var/log/messages日誌的內容,查看DNS主從是否啓動正常,是否實現了同步。ide