一、DNS服務器子域授權的實現
通常自己架設DNS服務器給自己使用的公司都是內部有特殊需求,或者公司內部域名較多,爲了方便以後的管理而架設。我們知道一個域名就是一個區域,一般每個區域都會有專人負責管理,當一個公司人員足夠多時,這時就會有劃分子域給下級部門管理的需求。在一個區域下劃分子域,並給子域指定一個新的DNS服務器,這種方法是可以實現的,我們通常稱這種劃分子區域的方法爲子域授權。
實例:給wubinary.com域名劃分一個blog.wubinary.com的子域。bind的安裝配置及主DNS服務器的架設不再此討論
1、首先架設一個主DNS服務器,編輯/var/named/wubinary.com.zone文件,主DNS服務器的IP爲192.168.0.6,資源記錄數據文件如下:
$TTL 600 @ IN SOA dns.wubinary.com. dnsadmin.wubinary.com. ( 2014031203 2H 4M 1D 2D ) @ IN NS dns.wubinary.com. @ IN NS ns2.wubinary.com. @ IN MX 10 mail.wubinary.com. dns IN A 192.168.0.6 mail IN A 192.168.0.12 www IN A 192.168.0.48 ns2 IN A 192.168.0.80 blog.wubinary.com. IN NS dns.blog.wubinary.com. dns.blog.wubinary.com. IN A 192.168.0.2
注意,以上最後兩行爲子域的DNS服務器,只要在主DNS服務器定義好了子域的DNS服務器就等於給子域授權了。
2、然後在回到子域的服務器,192.168.0.2上配置子域區域。打開/etc/named.rfc1912.zones文件,在最末尾定義子域的區域。
zone "blog.wubinary.com" IN { type master; file "blog.wubinary.com.zone"; };
3、接着再定義子域DNS服務器的資源記錄文件,/var/named/blog.wubinary.com.zone。
$TTL 600 @ IN SOA dns.blog.wubinary.com. dnsadmin.blog.wubinary.com. ( 2014031201 1H 5M 3D 1D ) @ IN NS dns.blog.wubinary.com. dns IN A 192.168.0.2 www IN A 192.168.0.78 ftp IN A 192.168.0.23
4、重新啓動兩邊的DNS服務,測試一下子域授權是否成功。
主域機器測試:
子域機器測試:
測試正常,操作成功!
二、DNS服務器域名解析轉發
DNS轉發的意義在於,定向查詢,一臺DNS服務器在獲取到查詢請求時,自己不嘗試解析域名,而轉發查詢請求給指定的DNS服務器實現此次解析操作。假設,我們現在碰到這麼一種情況,我們的DNS服務器是處在一個內網的網段,與外網不能直接通信,在這個局域網中唯一一個能和外網通信的是路由器或者其它的DNS服務器。那麼如果我們想要實現通過這臺局域網的DNS服務器查詢解析外網的域名,就要用到轉發的功能了。
轉發可以用參數forwarders和forward實現:
forwarders { IP_ADDR1; IP_ADDR; ...}; forward { only|first };
參數說明:
forwarders:用於定義轉發的服務器的IP地址,可以寫多個,用分號隔開。
forward:用於定義轉發的操作,only爲只作轉發操作,有結果則返回結果,沒有結果則什麼操作也不作;first爲先作轉發操作,如果沒有結果則去遞歸查找。
全局和區域:
這兩個參數可以放在全局定義,也可放在區域定義,也可以兩個同時使用,但不管怎樣,放在區域的優先權更高。如果用於特定區域則把轉發定義在區域內,如果用於全局,則把轉發定義在全局。
轉發實例:讓上面的區域wubinary.com可以實現解析外網的域名。
1、區域wubinary.com所設的DNS服務器爲局域網的IP地址,不可以解析外網域名。
2、由上圖可以看出wubinary.com區域不能解析51cto.com的NS記錄,我們添加一個轉發功能。
編輯/etc/named.conf文件,添加轉發ip 192.168.0.1
3、修改完成後,重啓服務,測試一下,可以解析了,轉發成功!
說明:有的時候,如果我們事先已經知道了某個區域DNS服務器的地址,爲了不讓當前DNS服務器向根查詢結果,那麼我們就可以直接使用轉發,向當前DNS服務器指定一個地址,讓它查詢直接向這個地址請求,這樣做的好處能明顯的提高響應速度。
三、DNS中的訪問控制列表
有的時候我們須要在DNS配置文件中指定n個IP地址,如果全都寫在一起的話,每塊地方都要寫一次,那麼相當麻煩,如果使用一個參數定義那一片的IP地址,那麼管理起來就相當方便了,這個就是DNS中的ACL,bind支持的訪問控制表。
格式:
acl ACL_NAME { 172.16.0.0/16; 192.168.0.0/24 127.0.0.0/8; ... ... };
在全局選項中定義ACL,給每個ACL取一個名字,這樣以後每次引用,只須在填定IP地址的地方填寫那個變量就行了。在bind中有幾個事先定義好的ACL:
any: 任何主機 none: 無一主機 local: 本機 localnet: 本機的所在的網絡