<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 19.5 協同工作的 DNS: Slave DNS 及子域授權設定 我們在本章一開始就曾談過,DNS 大概是未來最重要的網絡服務之一,因為所有的主機名需求都得要 DNS 提供才行。 因此,ISP 在提供 domain name 注冊時,就強調得要有兩部以上的 DNS 服務器才行。而為了簡化 DNS 管理人員的負擔, 使用 Master/Slave DNS 架構的情況會比較好!為什么呢?讓我們再回憶一下 Slave DNS 的特色: * 為了不間斷的提供 DNS 服務,你的領域至少需要有兩部 DNS 服務器來提供查詢的功能; * 承上,這幾部 DNS 服務器應該要分散在兩個以上的不同 IP 網域才好; * 為方便管理,通常除了一部主要 Master DNS 之外,其他的 DNS 會使用 slave 的模式; * slave DNS 服務器本身并沒有數據庫,他的數據庫是由 master DNS 所提供的; * master/slave DNS 必需要可以相互傳輸 zone file 的相關信息才行,這部份需要 /etc/named.conf 之設定輔助。 除此之外,如果你有朋友或者是學生想要跟你要一個子域,那又該如何設定另一部 DNS 服務器呢?就讓我們依序來談談啰~ * * * ### 19.5.1 master DNS 權限的開放 我們使用 [19.4.3](#DNS_master_case) 的案例,繼續來架設一部支持該案例的 slave DNS 吧!基本的假設為: * 提供 slave DNS 服務器進行 zone transfer 的服務器為 master.centos.vbird * centos.vbird 及 100.168.192.in-addr.arpa 兩個 zone 都提供給 slave DNS 使用 * master.centos.vbird 的 named 僅提供給 slave.centos.vbird 這部主機進行 zone transfer * Slave DNS server 架設在 192.168.100.10 這部服務器上面 (所以 zone file 要修訂) 如上所示,我們的 master.centos.vbird 這部服務器除了 named.conf 需要調整之外,兩個 zone file 也都需要調整! 在 named.conf 當中,需要設定哪個 IP 可以對我的 zone 進行傳輸 (allow-transfer),而在 zone file 當中,就是各加入一筆 NS 的記錄即可!增加的部分如下所示: ``` # 1\. 修訂 named.conf,主要修改 zone 參數內的 allow-transfer 項目 [root@www ~]# vim /etc/named.conf ....前面省略.... zone "centos.vbird" IN { type master; file "named.centos.vbird"; allow-transfer { 192.168.100.10; }; // 在這里新增 slave 的 IP }; zone "100.168.192.in-addr.arpa" IN { type master; file "named.192.168.100"; allow-transfer { 192.168.100.10; }; // 在這里新增 slave 的 IP }; ``` 在上頭所列示的那兩個數據庫檔案當中,你必須要新增所需要的 NS 標志才行!NS 對應的主機名為 slave.centos.vbird, IP 則是 192.168.100.10 呦!結果如下: ``` # 2\. 在 zone file 里面新增 NS 標志,要注意需要有 A(正解) 及 PTR(反解) 的設定 [root@www ~]# vim /var/named/named.centos.vbird $TTL 600 @ IN SOA master.centos.vbird. vbird.www.centos.vbird. ( 2011080402 3H 15M 1W 1D ) @ IN NS master.centos.vbird. @ IN NS slave.centos.vbird. master.centos.vbird. IN A 192.168.100.254 slave.centos.vbird. IN A 192.168.100.10 @ IN MX 10 www.centos.vbird. ....(底下省略).... [root@www ~]# vim /var/named/named.192.168.100 $TTL 600 @ IN SOA master.centos.vbird. vbird.www.centos.vbird. ( 2011080402 3H 15M 1W 1D ) @ IN NS master.centos.vbird. @ IN NS slave.centos.vbird. 254 IN PTR master.centos.vbird. 10 IN PTR slave.centos.vbird. ....(底下省略).... # 要特別注意一件事,那就是,你的 zone file 內的序號要增加!鳥哥測試日期是 8/4, # 第 2 次進行,所以序號就以該天的日期為準來設計的!最后記得 restart 一下啦! [root@www ~]# /etc/init.d/named restart [root@www ~]# tail -n 30 /var/log/messages &#124; grep named starting BIND 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 -u named -t /var/named/chroot ....(中間省略).... zone 100.168.192.in-addr.arpa/IN: loaded serial 2011080402 zone centos.vbird/IN: loaded serial 2011080402 zone 100.168.192.in-addr.arpa/IN: sending notifies (serial 2011080402) zone centos.vbird/IN: sending notifies (serial 2011080402) ``` 反正重新啟動過 named 后,直覺記得就是要查閱 messages 登錄信息就對了。從上表的輸出來看,會多一個 sending notifies (傳送注意事項) 關鍵詞的數據,那就是提醒 slave DNS 來比對序號大小了!所以,你說,序號有沒有很重要呢?當然很重要啊! 連登錄訊息都會告知序號的大小哩!這樣 master DNS 就設定妥當啰!接下來玩玩 Slave 的設定吧! * * * ### 19.5.2 Slave DNS 的設定與數據庫權限問題 既然 Slave DNS 也是 DNS 服務器嘛!所以,當然也是需要安裝 bind, bind-chroot 等等的軟件! 這部份回去 [19.3.1](#what_software) 里面瞧瞧即可,反正記得使用 yum 安裝就對了。 接下來得要設定 named.conf 吧?而既然 Master/Slave 的數據庫是相同的,所以,理論上, named.conf 內容就是大同小異啰~ 唯一要注意的就是 zone type 類型的差異,以及宣告 master 在哪里就是了。 至于 zone filename 部分,由于 zone file 都是從 master 取得的,透過 named 這個程序來主動建立起需要的 zone file,因此這個 zone file 放置的目錄權限就很重要!讓我們直接來處理看看: ``` # 1\. 準備 named.conf 的內容: [root@clientlinux ~]# vim /etc/named.conf ....(前面的部分完全與 master.centos.vbird 相同,故省略).... zone "centos.vbird" IN { type slave; file "slaves/named.centos.vbird"; masters { 192.168.100.254; }; }; zone "100.168.192.in-addr.arpa" IN { type slave; file "slaves/named.192.168.100"; masters { 192.168.100.254; }; }; # 2\. 檢查 zone file 預計建立的目錄權限是否正確!底下目錄為系統默認值: [root@clientlinux ~]# ll -d /var/named/slaves drwxrwx---. 2 named named 4096 2011-06-25 11:48 /var/named/slaves # 注意權限、使用者以及群組三個字段的數據!需要與 named 這個用戶及群組有關! [root@clientlinux ~]# ll -dZ /var/named/slaves drwxrwx---. named named system_u:object_r:named_cache_t:s0 /var/named/slaves # 也不要忘記與 SELinux 有關的事情! ``` 為了方便使用者設定,CentOS 預設在 /var/named/slaves/ 處理好了相關權限~所以你可以輕松的處理權限問題~ 我們就建議你的 slave zone file 放置在該目錄下!所以上表當中的 file 參數才會這么寫~此外,那個 masters 結尾有個 s 喔!這里最容易寫錯~那么要不要處理 zone file 呢?除了 named.ca 這個 . 需要主動存在之外, 另外兩個 type slave 的數據庫檔案,當然不必存在啊!因為會從 master 處取得嘛!接下來,就讓我們來啟動 named 并進行觀察吧! ``` [root@clientlinux ~]# /etc/init.d/named start [root@clientlinux ~]# chkconfig named on [root@clientlinux ~]# tail -n 30 /var/log/messages &#124; grep named starting BIND 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 -u named -t /var/named/chroot loading configuration from '/etc/named.conf' ....(中間省略).... running zone 100.168.192.in-addr.arpa/IN: Transfer started. zone 100.168.192.in-addr.arpa/IN: transferred serial 2011080402 zone centos.vbird/IN: Transfer started. zone centos.vbird/IN: transferred serial 2011080402 &lt;==注意序號正確否 # 你會看到如上的訊息,重點是還有告知序號喔!非常重要! [root@clientlinux ~]# ll /var/named/slaves -rw-r--r--. 1 named named 3707 2011-08-05 14:12 named.192.168.100 -rw-r--r--. 1 named named 605 2011-08-05 14:12 named.centos.vbird # 這兩個 zone file 會主動被建立起來呢! [root@clientlinux ~]# dig master.centos.vbird @127.0.0.1 [root@clientlinux ~]# dig -x 192.168.100.254 @127.0.0.1 # 上述兩個檢測的指令如果是正確的顯示出 A 與 PTR 的話,那就完成了! ``` 你瞧!如此一來你的 zone file 就會主動的被建立起來喔!未來如果你的 master DNS 要更新數據庫時, 只要修改過序號,并重新啟動 named 后,這部 slave DNS 就會跟著更新啦!啊!真是『福氣啦!』!! 不過,如果你發現到啟動 slave DNS 時,你的登錄信息竟然是這樣: ``` zone centos.vbird/IN: Transfer started. transfer of 'centos.vbird/IN' from 192.168.100.254#53: connected using 192.168.100.10#58187 dumping master file: tmp-a1bYfCd3i3: open: permission denied transfer of 'centos.vbird/IN' from 192.168.100.254#53: failed while receiving responses: permission denied transfer of 'centos.vbird/IN' from 192.168.100.254#53: end of transfer ``` 如果出現類似這樣的訊息時,不必懷疑啦!肯定是權限錯誤啦!請再次檢查你的數據庫檔案所放置的目錄權限是否可以讓 named 寫入啊!處理處理就好了!現在,你的 DNS 會變的更加強壯啰!因為有類似的備援系統啰~不過仍然要注意的是, 網絡查詢 centos.vbird 時,master 與 slave 的地位是相同的,并不是 master 掛點才使用 slave 來查詢喔!所以,這兩部服務器的相同 domain 的數據庫內容要完全一致才行! * * * ### 19.5.3 建置子域 DNS 服務器:子域授權課題 除了 Master/Slave 需要協同 DNS 服務器共同提供服務之外,DNS 之間如果有上層、下屬的關系時,該如何設定? 亦即,假設我的網域很大,我只想要負責上層的 DNS 而已,下層希望直接交給各單位的負責人來負責,要怎么設定呢? 舉個例子來說,以成大為例,成大計中僅管理各個系所的 DNS 服務器 IP 而已,由于各個系所的主機數量可能很大, 如果每個人都要請計中來設定,那么管理員可能會瘋掉,而且在實際設計上也不太人性化。 所以啰,計中就將各個 subdomain (子域) 的管理權交給各個系所的主機管理員去管理,如此一來, 各系所的設定上面會比較靈活,且上層 DNS 服務器管理員也不用太麻煩吶! 好了,那么如何開放子域授權呢?我們以剛剛在 master 上面建立的 centos.vbird 這個 zone 為例, 假設今天你是個 ISP ,有個人想要跟妳申請 domain name ,他要的 domain 是『 niki.centos.vbird 』, 那你該如何處理? * 上層 DNS 服務器:亦即是 master.centos.vbird 這一部,只要在 centos.vbird 那個 zone file 內,增加指定 NS 并指向下層 DNS 的主機名與 IP (A) 即可,而 zone file 的序號也要增加才行; * 下層 DNS 服務器:申請的領域名必須是上層 DNS 所可以提供的名稱,并告知上層 DNS 管理員,我們這個 zone 所需指定的 DNS 主機名與對應的 IP 即可。然后就開始設定自己的 zone 與 zone file 相關數據。 假設我們管理 niki.centos.vbird 的服務器主機名為 dns.niki.centos.vbird ,而這部主機的 IP 為 192.168.100.200, 那接下來就讓我們實際來設定吧! * 上層 DNS 服務器:只需新增 zone file 的 NS 與 A 即可 上層 DNS 的處理真是簡單到爆炸!我們只要修改 master DNS (www.centos.vbird 那一部) 里面的 named.centos.vbird 這個正解檔案即可。slave DNS 不用修改,是因為他會自動更新嘛!新增如下的數據即可: ``` [root@www ~]# vim /var/named/named.centos.vbird @ IN SOA master.centos.vbird. vbird.www.centos.vbird. ( 2011080501 3H 15M 1W 1D ) # 上面的 SOA 部分序號加大,底下新增這兩行即可 (原本的數據都保留不動)! niki.centos.vbird. IN NS dns.niki.centos.vbird. dns.niki.centos.vbird. IN A 192.168.100.200 [root@www ~]# /etc/init.d/named restart [root@www ~]# tail -n 30 /var/log/messages &#124; grep named Aug 5 14:22:36 www named[9564]: zone centos.vbird/IN: loaded serial 2011080501 # 登錄檔的關鍵是上面的序號部分~必須是我們填寫的新的序號才對! [root@www ~]# dig dns.niki.centos.vbird @127.0.0.1 # 你會發現是錯誤的!找不到 A 喔! ``` 上層 DNS 的設定非常簡單!只要修改 zone file 即可~不過,由于 zone file 指定的是 NS 的查詢權功能, 因此,最后那個指令在 dig dns.niki.centos.vbird 時,卻會找不到 A 喔!那是正常的~因為 192.168.100.200 尚未設定好 niki.centos.vbird 這個領域嘛!所以追蹤的結果并沒有發現在 192.168.100.200 有 niki.centos.vbird 的 zone 啊! 所以當然找不到。此時數據庫的管理權在 192.168.100.200 上啦!這樣可以理解嗎?再來處理下層 DNS 吧! * 下層 DNS 服務器:需要有完整的 zone 相關設定 下層的 DNS 設定就與 [19.4](#DNS_master) 的詳細內容一樣了!所以在這里我們僅列出重要的項目: ``` # 1\. 修改 named.conf ,增加 zone 的參數,假設檔名為 named.niki.centos.vbird [root@niki ~]# vim /etc/named.conf ....(前面省略).... zone "niki.centos.vbird" IN { type master; file "named.niki.centos.vbird"; }; # 2\. 建立 named.niki.centos.vbird [root@niki ~]# vim /var/named/named.niki.centos.vbird $TTL 600 @ IN SOA dns.niki.centos.vbird. root.niki.centos.vbird. ( 2011080501 3H 15M 1W 1D ) @ IN NS dns.niki.centos.vbird. dns IN A 192.168.100.200 www IN A 192.168.100.200 @ IN MX 10 www.niki.centos.vbird. @ IN A 192.168.100.200 # 為了簡化整個版面,所以鳥哥都使用 hostname 而非 FQDN!請見諒! # 3\. 啟動并觀察相關登錄信息 [root@niki ~]# /etc/init.d/named restart [root@niki ~]# tail -n 30 /var/log/messages &#124; grep named ....(前面省略).... zone niki.centos.vbird/IN: loaded serial 2011080501 ....(底下省略).... # 同時,&lt;u&gt;記得處理一下防火墻的放行問題&lt;/u&gt;!否則測試會失敗!! [root@niki ~]# dig www.niki.centos.vbird @192.168.100.254 # 上述的動作必須要有響應才行!否則就會出問題~ ``` * * * ### 19.5.4 依不同接口給予不同的 DNS 主機名: view 功能的應用 想象一個環境,以我們目前的局域網絡服務器來說,我的 master.centos.vbird 有兩個界面,分別是 192.168.100.254/24 (對內) 及 192.168.1.100/24 (對外),那當我外邊的用戶想要了解到 master.centos.vbird 這部服務器的 IP 時,取得的竟然是 192.168.100.254,因此還得要透過 NAT 才能聯機到該接口,但明明 192.168.100.254 與外部的 192.168.1.100 是同一臺服務器主機嘛!干嘛還得要經過 NAT 轉到內部接口呢?有沒有辦法讓外部的查詢找到 master.centos.vbird 是 192.168.1.100 而內部的找到則回應 192.168.100.254 呢?可以的!那就透過 view 的功能! 那么 view 要怎么處理呢?其實就是讓不同來源的用戶,能夠取得他們自己的 zone 響應就是了。舉例來說,當用戶來自 10.0.0.1 時,這個來源不可能是內部 (192.168.100.0/24) ,因此這個來源就會使用外部的 zone file 內容來響應。 因此,我們就得要準備同一個 zone 需要兩個不同的設定,再將個別的設定帶入自己的客戶端查詢當中。 現在我們針對這個概念,對于鳥哥的區網設定 view 的原則是這樣的: * 建立一個名為 intranet 的名字,這個名字代表客戶端為 192.168.100.0/24 的來源; * 建立一個名為 internet 的名字,這個名字代表客戶端為非 192.168.100.0/24 的其他來源 * intranet 使用的 zone file 為本章前面各小節所建立的 zone filename,internet 使用的 zone filename 則在原本的檔名后面累加 inter 的擴展名,并修訂各標志的結果。 再次強調,最終的結果當中,從內網查到的 www.centos.vbird IP 應該是 192.168.100.254,而只要不是鳥哥內網來源的客戶端, 查到的 www.centos.vbird IP 應該是 192.168.1.100 才對!那就讓我們來實際設定此一項目吧! ``` [root@www ~]# vim /etc/named.conf options { 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; allow-transfer { none; }; }; acl intranet { 192.168.100.0/24; }; &lt;==針對 intranet 給予的來源 IP 指定 acl internet { ! 192.168.100.0/24; any; }; &lt;==加上驚嘆號 (!) 代表反向選擇的意思 view "lan" { &lt;==只是一個名字,代表的是內網 match-clients { "intranet"; }; &lt;==吻合這個來源的才使用底下的 zone zone "." IN { type hint; file "named.ca"; }; zone "centos.vbird" IN { type master; file "named.centos.vbird"; allow-transfer { 192.168.100.10; }; }; zone "100.168.192.in-addr.arpa" IN { type master; file "named.192.168.100"; allow-transfer { 192.168.100.10; }; }; }; view "wan" { &lt;==同樣,只是個名字而已! match-clients { "internet"; }; &lt;==代表的則是外網的 internet 來源 zone "." IN { type hint; file "named.ca"; }; zone "centos.vbird" IN { type master; file "named.centos.vbird.inter"; &lt;==檔名必須與原有的不同! }; // 外網因為沒有使用到內網的 IP,所以 IP 反解部分可以不寫于此 }; ``` 上表中,有些數據是重復的,有些則需要經過修改。現在,讓我們來改改 named.centos.vbird.inter 吧! ``` [root@www ~]# cd /var/named [root@www named]# cp -a named.centos.vbird named.centos.vbird.inter [root@www named]# vim named.centos.vbird.inter $TTL 600 @ IN SOA master.centos.vbird. vbird.www.centos.vbird. ( 2011080503 3H 15M 1W 1D ) @ IN NS master.centos.vbird. master.centos.vbird. IN A 192.168.1.100 @ IN MX 10 www.centos.vbird. www.centos.vbird. IN A 192.168.1.100 linux.centos.vbird. IN CNAME www.centos.vbird. ftp.centos.vbird. IN CNAME www.centos.vbird. forum.centos.vbird. IN CNAME www.centos.vbird. workstation.centos.vbird. IN A 192.168.1.101 [root@www named]# /etc/init.d/named restart [root@www named]# tail -n 30 /var/log/messages [root@www named]# dig www.centos.vbird @192.168.100.254 www.centos.vbird. 600 IN A 192.168.100.254 # 要得到上面的 IP 才是對的喔!因為接口來自于 192.168.100.0/24 網段 [root@wwww named]# dig www.centos.vbird @192.168.1.100 www.centos.vbird. 600 IN A 192.168.1.100 # 要得到上面的 IP 才是對的喔!因為接口來自非 192.168.100.0/24 網段 ``` 有沒有很簡單!這樣就能讓你的 DNS 依據不同的用戶來源,分別給予同一個主機名的不同解析呢! 例題:你的網站讀者非常的多,但是分布在世界各地。你想讓亞洲區的讀者聯機到臺灣的站臺,而其他國家的聯機則連到美國的站臺, 但又不想要讓使用者自己挑選不同的主機名,想使用同一組主機名,此時該如何是好?答:鳥哥可以想到的最簡單的方案,就是透過 DNS 來設定相同主機名的不同 IP 目標,亦即是透過 view 來規范即可。 不過,與上述鳥哥的區網簡單范例不同,我們得要收集亞洲區的 IP 才行,這些區段可能可以透過底下的網站來取得: * 五大洲的 IP 管理所屬人:[http://www.iana.org/numbers/](http://www.iana.org/numbers/) * 每個單位的 IP 分布: [http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml](http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml) * 臺灣地區 IP 分布: [http://rms.twnic.net.tw/twnic/User/Member/Search/main7.jsp?Order=inet_aton%28Startip%29](http://rms.twnic.net.tw/twnic/User/Member/Search/main7.jsp?Order=inet_aton%28Startip%29) 然后再透過 acl 以及 view 來規范即可。鳥哥的收集資料如下,如果有誤,還請告知! ``` acl asia { 1.0.0.0/8; 14.0.0.0/8; 27.0.0.0/8; 36.0.0.0/8; 39.0.0.0/8; 42.0.0.0/0; 49.0.0.0/8; 58.0.0.0/8; 59.0.0.0/8; 60.0.0.0/8; 61.0.0.0/8; 101.0.0.0/8; 103.0.0.0/8; 106.0.0.0/8; 110.0.0.0/8; 111.0.0.0/8; 112.0.0.0/8; 113.0.0.0/8; 114.0.0.0/8; 115.0.0.0/8; 116.0.0.0/8; 117.0.0.0/8; 118.0.0.0/8; 119.0.0.0/8; 120.0.0.0/8; 121.0.0.0/8; 122.0.0.0/8; 123.0.0.0/8; 124.0.0.0/8; 125.0.0.0/8; 126.0.0.0/8; 175.0.0.0/8; 180.0.0.0/8; 182.0.0.0/8; 183.0.0.0/8; 202.0.0.0/8; 203.0.0.0/8; 210.0.0.0/8; 211.0.0.0/8; 218.0.0.0/8; 219.0.0.0/8; 220.0.0.0/8; 221.0.0.0/8; 222.0.0.0/8; 223.0.0.0/8; 139.175.0.0/16; 140.0.0.0/8;150.116.0.0/16;150.117.0.0/16; 163.0.0.0/8; 168.95.0.0/16;192.0.0.0/8; }; acl nonasia { ! "asia"; any; }; ``` 如上所示,加入 asia 與 nonasia 的相關設定,再使用 view 來處理相關的 zone ,并修改 zone file 內容, 就能夠處理好這個案例的需求啰! * * *
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看