DNS子域授權過程
子域授權就相當於是劃片管理,是由上至下的授權。由根開始"."。
例如:.com .net 就是由根授權名稱空間,其實就是由.決定要劃分什麼的名稱空間,由它委派子名稱空間。
DNS中最重要的就是NS記錄,其中每個NS裏面的負責人就是SOA,在父域上定義一條NS記錄和一條A記錄就可以完成子域授權了
.com IN NS wd.com.
wd.com IN A 10.10.10.1
【這就表示在.com這個片裏面有一臺主機叫叫wd。以後這個.com這一片就歸這個wd這臺主機來管理了,哪誰是這臺主機呢?下面的A記錄就給予很明確的答案,10.10.10.1就是管理.com這個片的這臺主機】
前提:magedu.com這個域要對tech.magedu.com. fin.magedu.com.這兩個子域完成授權,首先得規劃好這兩個子域裏面是由誰管理的。
注意:子域和父域沒有必要在同一個網段,只要能夠通信就可以了,這裏只是以正向區域的子域授權爲例子。
在正向區域文件裏面magedu.com.zone
tech.magedu.com. IN NS dns.tech.magedu.com.
dns.tech.magedu.com. IN A 172.16.17.1
fin.magedu.com. IN NS dns.fin.magedu.com
dns.fin.magedu.com. IN A 172.16.18.1
我們這裏是授權到子域裏面的一個主的服務器,如果,我這裏子域裏面的服務器要想還有個從的服務器,那這個從的服務器是否在互聯網上能使用呢?
答案是肯定的不能,因爲當用戶在查詢www.tech.magedu.com.的時候.這裏的服務器看到後,發現這個不是歸自己這裏解析的,它會把這個條目提交給跟"."根。根發現這個是.com那個片的,於是會把這個任務交給.com,之後.com發現這個又是它下面的.tech域名服務器。而.tech這裏發現具體的負責人就只有172.16.17.1
如果我們想要使用這個子域當中的有多臺從服務器,那麼就需要給每臺從服務器添加NS記錄以及對應的A記錄。例如ns2是從服務器
tech.magedu.com. IN NS dns.tech.magedu.com.
dns.tech.magedu.com. IN A 172.16.17.1
tech.magedu.com. IN NS ns2.tech.magedu.com.
ns2.tech.magedu.com. IN A 172.16.17.2
fin.magedu.com. IN NS dns.fin.magedu.com
dns.fin.magedu.com. IN A 172.16.18.1
對於遠程的查詢時沒有主從之分的,主從服務器只是本地管理區域傳送的時候有意義,當用戶查詢的時候,服務器這裏是輪循返回信息,這種方式實現負載均衡。
先到主服務的正向區域文件完成區域授權
vim /var/namec/magedu.com.zone
tech.magedu.com. IN NS dns.tech.magedu.com.
tech.magedu.com. IN NS ns2.tech.magedu.com.
dns.tech.magedu.com. IN A 172.16.17.1
ns2.tech.magedu.com. IN A 172.16.17.2
fin.magedu.com. IN NS dns.fin.magedu.com
dns.fin.magedu.com. IN A 172.16.18.1
【注意在建立的時候這個從服務器ns2可不是隨便寫的。如果沒有的話切忌不要寫上去,因爲服務器這裏是輪循的,第一次查詢的時候是有dns負責,第二次查詢的時候是由ns2負責,當然第三次又有dns複製查詢,如果沒有ns2那麼用戶就不能夠查詢信息了】
【-----更改過文件後一定要在序列號上面加一否則從服務器是沒辦法同步的哦!!!-----】
同時用rndc reload也是可以通知從服務器過來同步信息的。
手動通知某一個區域過來同步信息 rndc notify magedu.com
配置環境
我們需要第三臺主機第三臺主機的IP是17.16.17.1用它來做我們的子域服務器主機名dns.tech.magedu.com 主服務器的IP 172.16.16.3,從服務器的IP 172.16.16.1
rpm -e bind-libs bind-utils 【這裏我們用的就是bind97做的實驗,所用卸載已經安裝過的】
yum -y install bind97-libs bind97-utils bind97 【這裏要保證yum源能訪問或者用本地yum源】
mv /etc/named.conf /etc/named.conf.bar 【將原來的主配置文件更名,這裏我們要自己建立這個文件】
vim /etc/namec.conf 【創建過程】
options{
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca"; 【named.ca這個文件會自動生成】
};
zone "localhost" IN{
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
};
zone "tech.magedu.com" IN {
type master;
file "tech.magedu.com.zone";
zone "17.16.172.in-addr.arpa" IN {
type master;
file "172.16.17.zone";
};
cd /var/named
我們是在做實驗爲了方便,我們把這四個文件從原來的地方複製過來
scp 172.16.16.3:/var/named/localhost.zone ./【從172.16.16.3當中把原文件直接複製到當前目錄下,不需要更名】
scp 172.16.16.3:/var/named/127.0.0.zone ./【從172.16.16.3當中把原文件直接複製到當前目錄下,不需要更名】
scp 172.16.16.3:/var/named/magedu.zone ./tech.magedu.zone 【從172.16.16.3當中把原文件直接複製到當前目錄下,並且更名爲tech.magedu.zone】
scp 172.16.16.3:/var/named/172.16.zone ./172.16.17.zone
【從172.16.16.3當中把原文件直接複製到當前目錄下,並且更名爲tech.magedu.zone】
chmod 640 /named.conf
chown :named /etc/named.conf
【tech.magedu.com.zone和172.16.17.zone這兩個文件我們需要修改】
vim tech.magedu.zone
$TTL 86400
$ORIGIN tech.magedu.com.
@ IN SOA wd.tech.magedu.com. admin.tech.magedu.com. (
2012102001
2H
10M
11D
1D)
IN NS wd
IN NS ns1
IN NS ns2
IN MX 10 mail
ns2 IN A 172.16.17.5
wd IN A 172.16.17.1
ns1 IN A 172.16.17.3
mail IN A 172.16.17.2
www IN A 172.16.17.1
ftp IN CNAME www
vim 172.16.17.zone
$TTL 86400
$ORIGIN 17.16.172.in-addr.arpa.
@ IN SOA wd.tech.magedu.com. admin.tech.magedu.com. (
2012102001
2H
10M
11D
1D
)
IN NS wd.tech.maged.com.
IN NS ns1.tech.magedu.com.
IN NS ns2.tech.magedu.com.
1 IN PTR wd.tech.magedu.com.
1 IN PTR www.tech.magedu.com.
3 IN PTR ns1.tech.magedu.com.
2 IN PTR mail.tech.magedu.com.
5 IN PTR ns2.tech.magedu.com.
好了我們的文件已經準備好了,現在檢查下是否有語法錯誤
named-checkconf
named-checkzone "tech.magedu.com" tech.magedu.com.zone
named-checkzone "17.16.172.in-addr-arpa" 172.16.17.zone
啓動服務
service named start
測試
dig -t A www.tech.magedu.com @127.0.0.1 【測試是否可以進行子域解析】
dig -t A www.magedu.com @127.0.0.1 【測試是否可以解析父域】
【經測試發現是無法解析父域的,因爲當接到這個查詢的時候它會轉發給跟"."經過根查詢,但是我們並沒有聯網,所以無法查詢。即使我們聯網了我們也是沒辦法查詢的,因爲我們授權的子域,和"."授權的子域是不一樣的,這個在根那裏並不承認。因爲不是它授權的嘛!】
【當然瞭如果發現不是自己負責的域,但是我們還想查詢怎麼辦呢?當然就是轉發給父域咯】
編輯當前主機(172.16.17.1)的主配置文件定義轉發
注意這裏的forward是有兩個參數
forward fist 遞歸轉發(轉發的目標服務器如果沒有響應,則自己再到跟服務器發起迭代查詢)
forward only (僅向目標主機尋求結果,如果目標主機解析不到結果,就認爲查詢不到結果)
很顯然我們這裏使用only,因爲fist對於我們來說並沒有意義(要記得我們是自己授權的啊)
vim /etc/named.conf
options{
directory "/var/named";
forward only 【定義轉發咯】
forwards { 172.16.16.3; 172.16.16.1; }; 【只向這兩臺服務器轉發】
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN{
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
};
zone "tech.magedu.com" IN {
type master;
file "tech.magedu.com.zone";
zone "17.16.172.in-addr.arpa" IN {
type master;
file "172.16.17.zone";
};
檢查主配置文件是否有錯誤named-checkconf
重啓服務service named restart
然後再次做測試,此時已經可以解析父域了
dig -t A www.magedu.com @127.0.0.1
以上我們做的是隻要不是當前服務器負責的域,都會轉發給172.16.16.3和172.16.16.1了,那如果這兩臺主機也沒有聯網了呢?那不就沒有辦法了嘛!所以啊我們也只是把屬於父域查詢範圍的轉發給父域,改進一下以上的做法。修改主配置文件。
vim /etc/named.conf
options{
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN{
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "127.0.0.zone";
};
zone "tech.magedu.com" IN {
type master;
file "tech.magedu.com.zone";
};
zone "17.16.172.in-addr.arpa" IN {
type master;
file "172.16.17.zone";
};
zone "magedu.com" IN {
type forward;
forward only;
forwards { 172.16.16.3; 172.16.16.1; };
};
zone "16.16.172.in-addr.arpa" IN {
type forward;
forward only;
forwards { 172.16.16.3; 172.16.16.1; };
};
檢查主配置文件是否有錯誤named-checkconf
重啓服務service named restar
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.