Thursday, May 9, 2024

DNS智能解析的搭建與配置

DNS智能解析簡單的來說就是根據DNS服務器根據客戶端請求IP的不同來給客戶端返回不同的服務器地址,比如說電信用戶訪問www.linuxpad.cn的時候DNS服務器會返回給用戶電信服務器,網通用戶訪問www.linuxpad.cn的時候DNS服務器會返回給用戶網通服務器,這樣就解決了南北用戶訪問過慢或電信用戶訪問網通服務器過慢的問題,國內著名的DNSpod實現的也是這樣的一個功能,而BIND9自帶的VIEW視圖功能就可以完全實現這個功能。VIEW視圖可以說是BIND9一個最強大的功能之一,他可以完全按照你要求來實現DNS服務器對不同IP、不同網段的智能解析工作。本文以centos5.6 i386系統及系統自帶的BIND9和Webmin為例講述BIND9的安裝以及VIEW視圖的配置功能。Webmin是一個圖形化的服務器管理工具,由於DNS配置文件比較複雜,所以建議採用這款圖形化配置工作來進行DNS配置。

閱讀本文你需要了解一些DNS基礎,如知道為什麼會有DNS,什麼是A記錄、CNAME記錄、DNS的正向解析/逆向解析,本文不會涉及這些基礎知識。

本文採用VMware虛擬機來模擬DNS服務器,虛擬機須配置雙網卡來模擬DNS對兩個不同的網段做出不同的解析,其中一塊網卡配置為Bridged模式,直接連接到局域網內網(192.168.0.0/24)上,另一塊網卡配置為host-only,僅與本機進行通信(192.168.136.0/24)。

IP配置如下:
本地:物理網卡(本地連接)192.168.0.100/24,DNS為192.168.0.101
虛擬網卡(VMware Network Adapter VMnet1)192.168.136.1/24,
DNS為192.168.136.128
虛擬機:eth0(Bridged) 192.168.0.101/24
eth1(host-only)192.168.136.128/24
DNS配置:以www.linuxpad.cn為例,如果客戶端為192.168.0.0/24段,則將www.linuxpad.cn解析到192.168.0.200;如果客戶端為192.168.136.0/24段,則將www.linuxpad.cn解析到192.168.136.200。
測試方案:先禁用本地連接,使用nslookup工具查看www.linuxpad.cn,返回192.168.136.128則正確;再禁用虛擬網卡,使用nslookup工具查看www.linuxpad.cn,返回192.168.0.101則正確。

1.安裝bind
我們需要安裝以下rpm包:
bind DNS服務器主程序
bind-libs 程序庫
bind-utils 客戶端命令工具
bind-chroot chroot運行模式
bind的chroot功能是一個很有用的安全設置,使bind可以在一個chroot的模式下運行.也就是說,bind運行時的/(根)目錄,並不是系統真正的/(根)目錄,只是系統中的一個子目錄而已.這樣做的目的是為了提高安全性.因為在chroot的模式下,bind可以訪問的範圍僅限於這個子目錄的範圍里,無法進一步提升,進入到系統的其他目錄中。
使用yum install命令來安裝,
[root@localhost soft]# yum install bind
[root@localhost soft]# yum install bind-libs
[root@localhost soft]# yum install bind-utils
[root@localhost soft]# yum install bind-chroot

使用以下命令查看rpm包是否正確安裝
[root@localhost soft]# rpm -qa | grep bind
ypbind-1.19-12.el5
kdebindings-3.5.4-6.el5
bind-chroot-9.3.6-16.P1.el5
bind-utils-9.3.6-16.P1.el5
bind-9.3.6-16.P1.el5
bind-libs-9.3.6-16.P1.el5
如果安裝正確,你會看到我們所安裝的rpm包。
設置DNS服務開機自啟動
[root@localhost soft]# chkconfig named on
啟動命令為:
[root@localhost soft]# service ntamed start
2.安裝webmin
webmin是一個可視化的linux服務器管理工具,可以幫助我們實現很多功能,從官方網站http://www.webmin.com/下載webmin的最新rpm包,目前最新的為1.560,下載後安裝
[root@localhost soft]# rpm -ivh webmin-1.560-1.noarch.rpm
warning: webmin-1.560-1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 11f63c51
Preparing… ########################################### [100%] Operating system is CentOS Linux
1:webmin ########################################### [100%] Webmin install complete. You can now login to http://localhost.localdomain:10000/
as root with your root password.
安裝完成之後,默認的訪問端口是10000,默認用戶名位root,密碼為系統root密碼。訪問時請確認系統防火牆已經開放10000端口。啟動命令為
[root@localhost soft]# service webmin start
訪問界面如下圖1/圖2:


圖1

圖2

更改界面語言,選擇WebMin下的Change Language and Theme,在語言欄選擇”Simplified Chinese(ZH_CN.UTF-8)”。
3.配置DNS
a.啟動DNS服務器
打開Webmin界面,選擇Servers下的BIND DNS Server,點擊創建配置文件並啟動dns服務器,這裡只是內網測試,所以只選擇第一個即可,如果你的DNS用與外網解析,請選擇第二個,如圖3。


圖3

啟動成功後會自動跳轉至DNS配置頁面,如圖4。


圖4

圖中標出的即是我們需要使用的功能。
創建新的主區域:創建一個新的DNS配置文件,有正向和逆向之分,稍後介紹;
創建新的視圖:這就是我們實現DNS智能解析的視圖功能。

b.創建視圖
由於我們需要對兩個不同的IP段來實現分別解析,因此我們這裡需要創建兩個不同的視圖。需要注意的是,一旦創建了視圖,所有的域名記錄(創建的主區域)都必須屬於某個視圖,不允許沒有視圖的主區域存在。創建過程如圖5/圖6
這裡創建兩個視圖分別為:
名稱:view_192.168.0.0 對192.168.0.0/24的客戶端請求進行解析
名稱:view_192.168.136.0 對192.168.136.0/24的客戶端請求進行解析


圖5

圖6

c.創建正向主區域
創建主區域就相當於創建每個域名在DNS上的配置文件,以linuxpad.cn為例,我們需要首先在DNS服務器上創建一個將linuxpad.cn解析到192.168.0.200的主記錄(先不考慮192.168.136.0段,只介紹主區域的創建方法),這個記錄我們稱之為正向記錄,即域名到IP;然後需要再創建一個將192.168.0.200解析到linuxpad.cn的主記錄,這個記錄我們稱之為逆向記錄,即IP到域名。這樣一個域名的配置文件就成功了。
對於屬於同一段IP的服務器來說,每個域名必須創建一個正向主區域,但是所有域名可以共用一個逆向主區域。
我們點擊圖4上的 創建新的主區域,創建過程如圖7


圖7

區域類型選擇”正向”,域名/網絡填寫域名”linuxpad.cn”,在視圖創建選擇此主區域所屬的視圖,這裡選擇”view_192.168.0.0”,E-mail地址須寫上,否則會報錯。
點擊創建如果沒有錯誤即創建成功,會自動跳轉到編輯主區域的界面,這裡我們為”linuxpad.cn”這個區域來添加A記錄。選擇”地址”選項(地址選項就相當於A記錄),如圖8


圖8

在名稱中填寫二級域名,在地址中填寫域名所對應的服務器地址,這裡名稱填寫”@”,即表示linuxpad.cn,沒有二級域名,當然你也可以填寫www/ftp/mail之類的,如圖9
值得一提的是這裡可以配置泛域名解析,即在名稱處填寫”*”,這樣所有在地址列表中沒有的名稱全部會匹配到名稱”*”所對應的IP地址,如aaa.linuxpad.cn,aaa這個名稱不存在於地址記錄中,則aaa.linuxpad.cn就會匹配名稱為”*”的這個地址記錄,注意這條規則的位置,請確認”*”規則位於最末尾,否則位於”*”之後的地址記錄將得不到解析。


圖9

d.創建逆向主區域
我們在上一步創建了linuxpad.cn正向解析,但是DNS解析只有正向是不行的,還必須有逆向解析,即將IP解析為域名,只有這樣服務器才能將數據通過對應的域名返回給客戶端。
創建逆向主區域過程如圖10


圖10

區域類型選擇”逆向”,域名/網絡填寫”192.168.0.0”,在視圖中創建選擇”view_192.168.0.0”,同樣填入E-mail,然後點擊創建,創建成功後會自動跳轉到編輯主區域的界面。
接下來,選擇”逆向地址”,進行逆向地址的創建,如圖11/圖12。


圖11

圖12

在地址中填寫服務IP地址,主機名中填寫IP所對應的域名。
到此刻為止linuxpad.cn的解析就完全創建成功了,我們的DNS服務器就能解析linuxpad.cn這個域名了。但是不要着急,我們來完成最後一步的配置。
e.另一個視圖中域名解析的配置
在上面的創建主區域的時候,”在視圖中創建”這個選項,我們選擇的是view_192.168.0.0,這樣的話,我們所創建的linuxpad.cn這個域名解析只能對192.168.0.0/24這個段內的客戶進行解析,如果我使用192.168.136.0段對linuxpad.cn進行訪問的時候DNS就找不到服務器了,因為我們還沒有在view_192.168.136.0這個視圖中添加規則呢。
按照上一步,我們再來創建兩個規則,區域類型為”正向”,域名/網絡為linuxpad.cn,視圖屬於”view_192.168.136.0”,在”linuxpad.cn”主區域添加地址,名稱為”@”,地址為”192.168.136.200”,這裡有人會疑惑主區域的名稱linuxpad.cn不是與上一步的重複了,不衝突嘛,實際上是不衝突的,在不同的視圖中可以存在同名的主區域,但是在相同的視圖中不能存在同名的主區域。
我們再創建一個逆向的主區域,區域類型為逆向,域名/網絡為”192.168.136.0”, 視圖屬於”view_192.168.136.0”。在”192.168.136.0”主區域添加逆向地址,地址為”192.168.136.200”,主機名為”linuxpad.cn”。
這樣我們就完成了所有的DNS配置工作。
創建完成之後,返回到區域列表,我們發現配置完成之後主界面會顯示出大概的配置信息。如圖13。


圖13

4.測試
配置完成後,首先我們須重啟DNS服務,你可以通過Webmin圖像界面來應用配置(
Apply Configuraion),如圖14,也可以通過服務器使用命令service named restart來重啟DNS服務。


圖14

測試192.168.0.0段:
禁用虛擬網卡,以本地連接的192.168.0.0/24段來測試。如圖15/圖16


圖15

圖16

禁用本地連接,以虛擬網卡的192.168.136.0/24段來測試。如圖17/圖18


圖17

圖18

這樣就利用BIND9的VIEW視圖功能完美的解決了DNS智能解析的問題。

延伸:
1、 這個實驗中我們完成了DNS服務器對不同網段的IP進行智能解析,這在內網和外網同時訪問公司網站是很有效的,我們只需要在公司DNS服務器上配置雙網卡,判斷如果請求IP是外網則返回外網地址,如果請求IP是內網則返回內網地址,有效的解決了公司內部電腦訪問公司網站速度過慢的問題(因為常規情況下,內部電腦訪問網站需要先經過互聯網DNS服務器進行解析,然後再將服務器返回的數據通過外網返回給內網用戶,等於在外面繞了一大圈)。
2、 如何讓電信用戶解析到電信服務器,網通用戶解析到網通服務器。
這個可以在DNS服務器上創建兩個視圖,一個電信視圖一個網通視圖,並且把電信和網通的IP分別寫到兩個視圖內(電信和網通的IP列表以及南方和北方的IP列表這個網上都可以查到),然後再針對不同的客戶端分別在兩個視圖內實現DNS智能解析。

本文來自:http://blog.chinaunix.net/uid-21089721-id-2939433.html

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.