簡介:
DNS服務器的作用就是就好比生活中的電話簿、114查號臺一樣,爲各種網絡程序找到對應目標主機的IP地址或對應的主機域名。
DNS系統的作用:
正向解析:根據主機名稱(域名)查找對應的IP地址(實際應用中最多的)
反向解析:根據IP地址查找對應的主機域名(不常用,一般用於搭建郵件服務器時。)
根據服務器與所提供域名解析記錄的關係,將DNS服務器分爲不同的角色:
緩存域名服務器
也稱爲 唯高速緩存服務器
通過向其他域名服務器查詢獲得域名->IP地址記錄
將域名查詢結果緩存到本地,提高重複查詢時的速度
主域名服務器
特定DNS區域的官方服務器,具有唯一性
負責維護該區域內所有域名->IP地址的映射記錄
從域名服務器(通俗一點就是用於備份DNS服務器的)
也稱爲 輔助域名服務器
其維護的 域名->IP地址記錄 來源於主域名服務器
搭建DNS服務應用的軟件爲:BIND(Berkeley Internet Name Daemon)
官方站點:https://www.isc.org/
相關軟件包:
bind-9.3.3-7.el5.i386.rpm
bind-utils-9.3.3-7.el5.i386.rpm
bind-chroot-9.3.3-7.el5.i386.rpm
caching-nameserver-9.3.3-7.el5.i386.rpm
cache-nameserver軟件包實際上只是提供了一些配置樣例文件,對於熟悉BIND配置文件的系統管理員來說,也可以不用安裝該軟件包
bind,提供了域名服務的主要程序及相關文件
bind-utils,提供了對DNS服務器的測試工具程序(如nslookup、dig等)
bind-chroot,爲bind提供一個僞裝的根目錄以增強安全性(將“/var/named/chroot/”文件夾作爲BIND的根目錄)
caching-nameserver,爲配置BIND作爲緩存域名服務器提供必要的默認配置文件,這些文件在配置主、從域名服務器時也可以作爲參考
named作爲標準的系統服務腳本,通過”service named start/stop/restart“的形式可以實現對服務器程序的控制
named默認監聽TCP、UDP協議的53端口,以及TCP的953端口:
其中UDP 53端口一般對所有客戶機開放,以提供解析服務;
TCP 53端口一般只對特定從域名服務器開放,提高解析記錄傳輸通道;TCP 953端口默認只對本機(127.0.0.1)開放,用於爲rndc遠程管理工具提供控制通道
如果沒有安裝bind-chroot軟件包,則主配置文件默認位於 /etc/named.conf,數據文件默認保存在 /var/named/ 目錄
1、安裝軟件包
[root@centos etc]# yum -y install bind
2、修改相關目錄權限
安裝完BIND以後,BIND的主配置文件通常是保存在兩個位置:
/etc/named.conf -BIND服務主配置文件
/var/named/ -域的zone配置文件
[root@centos etc]# cd /var/named
[root@centos named]# chown -R named:named /var/named/
[root@centos named]# chmod -R 664 /var/named/
[root@centos named]# chmod 775 /var/named
[root@centos named]#chmod +x /var/named/data /var/named/dynamic /var/named/slaves
或者直接暴力 chmod -R 770 /var/named/
[root@centos named]# chown root:named /etc/named.conf
3、修改/etc/named.conf
[root@centos etc]# cat /etc/named.conf
options {
listen-on {192.168.183.128;}; # 監聽地址
listen-on {172.20.33.33;}; # 監聽地址
allow-transfer {"none";};
recursion yes; # DNS是否可遞歸
allow-query {any;}; # 允許所有地址
max-cache-ttl 900;
directory "/var/named";
pid-file "/var/named/named.pid";
dump-file "/var/named/named_dump.db";
statistics-file "/var/named/named.status";
forward only;
forwarders { 180.76.76.76 ; }; # 轉發地址
query-source address 172.20.33.33; # 轉發請求源地址
};
acl external_ip {
172.20.32.0/22; # 定義外網地址段
};
view "external" { # 定義外網IP的區域文件,這裏注意view的時候所有的zone都要寫在view區域裏面
match-clients {external_ip;};
zone "babyshen.com" in {
type master; # 指定我們要配置的是域主DNS服務器
file "zone.babyshen.com.external"; # 指定域的zone文件名
allow-update{none;};
};
};
acl internal_ip {
192.168.183.0/24; # 定義內網地址
};
view "internal" { # 定義內網IP的區域文件,這裏注意view的時候所有的zone都要寫在view區域裏面
match-clients {internal_ip;};
zone "babyshen.com" in {
type master;
file "zone.babyshen.com.internal";
allow-update{none;};
};
};
view "default" { # 默認的,匹配不到以上執行這個
match-clients {any;};
allow-query {any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
4、建立zone.babyshen.com.external和zone.babyshen.com.internal文件
[root@centos etc]# cd /var/named
[root@centos named]# cat zone.babyshen.com.external
$TTL 60
@ IN SOA babyshen.com admin.babyshen.com. (
2016121201 ; serial
86400 ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
ns1 IN A 172.20.33.33
@ IN A 172.20.33.33
www IN A 172.20.33.33
* IN A 172.20.33.33
[root@centos named]# cat zone.babyshen.com.internal
$TTL 60
@ IN SOA babyshen.com admin.babyshen.com. (
2016121201 ; serial
86400 ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
ns1 IN A 192.168.183.128
@ IN A 192.168.183.128
www IN A 192.168.183.128
* IN A 192.168.183.128
5、檢查文件是否有語法錯誤
1)檢查主配置文件是否有錯誤
[root@centos named]# named-checkconf /etc/named.conf
2)檢查區域文件是否有錯誤
[root@centos named]# named-checkzone babyshen.com zone.babyshen.com.external
zone babyshen.com/IN: loaded serial 2016121201
OK
[root@centos named]# named-checkzone babyshen.com zone.babyshen.com.external
zone babyshen.com/IN: loaded serial 2016121201
OK
6、可以實現
1)當用192.168.183.0/24這個段去解析www.babyshen.com的時候,解析地址爲192.168.183.128
2)當用172.20.32.0/22這個段去解析www.babyshen.com的時候,解析地址爲172.20.33.33
3)當解析其他域名的時候(不在view裏面的域名,即babyshen.com以外的域名),轉發給180.76.76.76解析
即完成了DNS的簡單部署,實現了DNS轉發和view的實現
記錄類型
1.A記錄:A記錄是來指定與主機名對應的IP地址記錄,通俗的來說A記錄就是服務器的IP地址,域名綁定A記錄就是告訴DNS服務器,當你輸入域名時引導你去正確的對應服務器。A記錄就是域名的IP地址。
2.NS記錄:NS記錄爲域名服務器記錄,用來指定該域名由哪個DNS服務器來進行解析,註冊域名後,會有一個默認的DNS服務器,每個註冊的域名都是由一個DNS域名服務器來進行解析,一般NS記錄出現的形式說,ns1.domain.xx.. ns2.domain.xx等等。NS記錄就是指定由哪個DNS服務器來進行你的域名解析。
3.MX記錄:MX記錄爲郵件交互記錄,它指向一個郵件服務器,在使用mail系統時,發件人根據收件人地址的後綴來定位mail server。例如我們要發郵件給[email protected],我的郵件系統通過DNS查找到basbyshen.com這個域名,繼而查找到的MX記錄,如果MX記錄存在,我的計算機就將郵件發送到MX記錄所指定的郵件服務器。
4.CNAME記錄:CNAME記錄爲別名記錄,允許多個名字映射到一臺服務器上,通常用於提供多個服務。例如我有一臺計算機域名爲host.babyshen.com,需要同時提供mail服務和www服務。則全稱爲www.babyshen.com,和mail.babyshen.com。實際上這兩個域名指向的都是host.babyshen.com。
5.TXT記錄:TXT記錄一般用於某個主機名或者域名的記錄,IN TXT “location:””21vianet DAXING ROOM”這段應該是說明我們這臺主機的存放位置的相關信息。TXT記錄還有拓展的應用有SPF記錄。SPF記錄一般用於反垃圾遊戲,MX記錄作用是向發信人指明某個域名的郵件服務器有哪些。SPF記錄則正好相反,SPF記錄向收信者表明,哪些郵件服務器是經過某個域名的認可發郵件的。主要針對僞造域名的垃圾郵件。例如我的郵件服務器收到郵件是來自[email protected]的郵件,那這份郵件到底是不是babyshen.com發送過來的。我們可以查詢babyshen.com的SPF記錄,防止別人僞造域名來發郵件。
6.TTL:簡單的說TTL值就是一條域名解析記錄在DNS服務器裏的存留時間,當DNS服務器接收到解析請求時,會向域名指定的NS服務器發出解析請求從來獲得解析記錄,獲得這條記錄後,記錄會在DNS服務器中保留一段時間這段時間DNS服務器不再向NS服務器發出請求,收到解析請求後直接返回。這個記錄在DNS服務器上保存的時間就是TTL值。一般增大TTL值,可以節約域名解析時間,訪問網站會加速。
7.PTR值:反向解析的記錄類型,可以看出是A記錄的反向。PTR主要用於郵件服務器,比如[email protected]給[email protected]發郵件,郵件服務器收郵件時會查看頭文件,並分析是由哪個IP地址發出來的。然後根據這個IP地址進行反解,如果解析的結果和IP地址相對應就接受這封郵件,不對應就拒絕。
8.泛域名以及泛解析:泛域名是指在一個域名的根下,所有以同樣形式未建立的子域名。例如*.babyshen.com。
泛解析是指把*.babyshen.com的A記錄解析到某個IP地址上,通過訪問任意的babyshen.com都能訪問到你解析的站點上去。
9.SOA記錄:初始授權記錄,SOA記錄表明了DNS服務器之間的聯繫,SOA記錄表明了誰是這個域的所有者。一般用於主從服務器。
<1>Serial:表示當前DNS數據庫的版本號,供從服務器判斷是否需要從主服務器上獲取新數據。
<2>Refresh:設置SDNS多長時間與MDNS連接一次。
<3>Retry:當SDNS向MDNS試圖獲取serial時候,如果MDNS無響應,多長時間重新檢查。
<4>Expire:數值決定SDNS在沒有MDNS權威的提供下解析域名的時間長短。
<5>Minimum:一些沒有生存週期的解析記錄的生存時間。
<6>Notify:可設置MDNS更新時都會主動通知SDNS。