本節我將分別對DNS的子域授權、DNS配置轉發器、DNS配置轉發區域以及DNS的view進行講解,本節本來是想跟上一節內容一起講解的,但是由於字數問題我就又分了單獨一節來講。
實驗環境:Centos6.5x86_64
主DNS服務器 ns.magedu.com 172.16.6.20
子DNS服務器 ns.sub.magedu.com 172.16.6.50
子域授權(這裏只講解正向解析)
子域授權,顧名思義就是在一個域的基礎上又創建子域,當然這個子域必須在父域中進行聲明,下面我們就來看下他是怎麼實現的。
父域中配置
首先得在父域的解析庫文件中添加子域的NS記錄以及A記錄
[root@localhost ~]# vim /var/named/magedu.com.zone $TTL 3600 @ IN SOA ns.magedu.com. admin.magedu.com ( 2014080609 版本每次務必改 1H 10M 7D 1D ) IN NS ns IN NS ns2 sub IN NS ns.sub 添加子域服務器的NS記錄 IN MX 10 mail ns IN A 172.16.6.20 ns2 IN A 172.16.106.20 ns.sub IN A 172.16.6.50 添加子域服務器的A記錄 mail IN A 172.16.6.21 www IN A 172.16.6.22 web IN CNAME www
還是版本的問題,每次修改之後必須得改。
子域服務器配置
子域服務器中的/etc/named.conf文件還是跟父域中的一樣,只要是修改/etc/named.rfc1912.zones
[root@localhost ~]# vim /etc/named.rfc1912.zones // named.rfc1912.zones: // // Provided by Red Hat caching-nameserver package // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt // (c)2007 R W Franks // // See /usr/share/doc/bind*/sample/ for example named configuration files. // zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; 新添加一條 zone "sub.magedu.com" IN { type master; file "sub.maedu.com.zone"; };
配置好之後檢查語法
[root@localhost ~]# named-checkconf
配置子域服務器中的解析庫文件
[root@localhost ~]# vim /var/named/sub.magedu.com.zone $TTL 3360 @ IN SOA sub.magedu.com. admin.magedu.com. ( 注意子域的名稱 2014080601 1H 10M 1W 2D ) IN NS ns IN MX 10 mail ns IN A 172.16.6.50 www IN A 172.16.6.52 mail IN A 172.16.6.51
配置好之後別忘了語法檢查
[root@localhost ~]# named-checkzone "sub.magedu.com" /var/named/sub.magedu.com.zone zone sub.magedu.com/IN: loaded serial 2014080601 OK
確認無誤之後就可以進行重新加載了
[root@localhost ~]# rndc reload server reload successful
配置好之後就可以進行測試了
對www.sub.magedu.com 進行測試,結果返回正確結果172.16.6.52
這樣一個子域授權就正式完成了並且可以運行了。
DNS配置轉發器
下面我們用DNS來配置一個轉發器,一旦該服務器本身不能解析,則器會將請求轉發給轉發器指向的服務器進行解析。
這裏我們就對子域服務進行配置轉發功能。
轉發器的設置非常簡單,只需要對/etc/named.conf進行配置
[root@localhost ~]# vim /etc/named.conf 只需要對options進行修改 options { //listen-on port 53 { 127.0.0.1; }; //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 { localhost; }; recursion yes; forward only; 注意格式:這裏的only表示轉發後無論返回什麼答案都選擇相信 forwarders { 172.16.6.20; }; 設置轉發的服務器 //dnssec-enable yes; //dnssec-validation yes; //dnssec-lookaside auto; /* Path to ISC DLV key */ //bindkeys-file "/etc/named.iscdlv.key"; };
配置完成不要忘記重讀配置文件
[root@localhost ~]# rndc reconfig
好了,下面我們來測試一下
我們選擇對www.magedu.com進行測試,他不屬於子域服務器的管轄範圍
測試成功,返回正確值172.16.6.22
DNS配置轉發區域
我們不但可以配置轉發,而且還可以控制想要轉發的區域。
[root@localhost ~]# vim /etc/named.rfc1912.zones 加入一個zone zone "magedu.com" IN { type forward; forward only; forwarders { 172.16.0.1; };爲了實驗更加直觀,這裏我們選擇一臺可以上網的主機 };
配置後重讀配置文件
[root@localhost ~]# rndc reconfig
配置成功後進行測試。
在測試之前,這裏我們對這個轉發區域的意思進行解釋,當所查詢的地址屬於magedu.com.域時,則會將該地址發給172.16.0.1去解析,如果172.16.0.1無法解析,則選擇相信,不再查詢;如果所查地址不屬於該域,則不給於轉發,讓服務器自己去迭代查詢。由於本服務器沒有連接網絡,而轉發後的服務器172.16.0.1能上外網。所以要是我們以www.baidu.com和www.magedu.com爲例,理論上來說結果應該是www.baidu.com無法查詢到結果,而www.magedu.com能夠查詢到結果。我們來驗證一下。
第一個www.baidu.com無法查詢到結果,驗證無誤,OK。
第二個結果能夠得到結果122.10.114.6,驗證無誤,也OK。
這樣,區域轉發的功能我們就完成了。
view視圖功能
我們知道網通和電信之間進行相互訪問速度比較慢,那是因爲每一次相互訪問都會經過北京的一個機房中唯一的一個通信機房,而帶寬是非常有限,因此爲了避免沒有意義的相互訪問,這裏我們就引入了view的概念,即腦裂。
下面我們就來配置下:
需要注意的是在寫視圖時,所有的zone都必須在view裏面,所有要把/etc/named.conf裏的根的zone也要放到view裏去。
[root@localhost ~]# vim /etc/named.rfc1912.zones // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // (c)2007 R W Franks // // See /usr/share/doc/bind*/sample/ for example named configuration files. // acl mwjnet { 172.16.0.0/16; 爲了實驗更加直觀,這裏就只對172.16網段的地址進行控制 }; 這裏創建一個訪問控制列表 view local { match-clients { mwjnet; }; view調用控制列表mwjnet zone "." IN { type hint; file "named.ca"; }; zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; zone "sub.magedu.com" IN { type master; file "sub.magedu.com.zone"; 這裏文件中定義了www.sub.magedu.com.指向的地址爲 }; 172.16.6.52 zone "magedu.com" IN { type forward; forward only; forwarders { 172.16.6.20; }; }; }; view tel { match-clients { any; }; zone "sub.magedu.com" IN { type master; file "magedu.com.2"; 這裏文件中定義了www.sub.magedu.com. 指向的地址爲 }; 爲2.3.4.5 };
配置完成之後先檢測語法
[root@localhost ~]# named-checkconf
生成相應的解析庫文件,這裏只須生成/var/named/magedu.com.2
$TTL 3360 @ IN SOA sub.magedu.com. admin.magedu.com. ( 2014080701 1H 10M 1w 3D ) IN NS ns ns IN A 172.16.6.50 www IN A 2.3.4.5
檢測語法並重新加載
當然還要修改權限以及數組,這裏我就沒有附上操作了
[root@localhost ~]# named-checkzone "sub.magedu.com" /var/named/magedu.com.2 zone sub.magedu.com/IN: loaded serial 2014080701 OK [root@localhost ~]# rndc reload server reload successful
下面就可以進行測試了需要注意的是爲了方便測試,我對服務器設置了IP別名,192.168.1.23和172.16.6.50都是指該服務器。
用192網段的地址主機
結果爲2.3.4.5
當用172.16網段的主機時
這樣結果就跟我們預想的一樣,不同的網段去到同一個服務器上找到的地址不同,這樣我們的視圖功能就已經完成並且可以使用。
本節的內容就講到這裏了,講的不好的地方希望大家多提建議,不對的地方非常歡迎指正,謝謝!