應(yīng)用服務(wù)之DNS與智能DNS
2010-3-25 wdlinux.cn制作 QQ:12571192
目錄
一 DNS與智能DNS的介紹
二 DNS軟件及介紹
三 安裝和配置
四 主輔結(jié)構(gòu)及數(shù)據(jù)同步
五 FAQ
一 DNS與智能DNS的介紹
1 DNS的定義
DNS 是域名系統(tǒng) (Domain Name System) 的縮寫,該系統(tǒng)用于命名組織到域?qū)哟谓Y(jié)構(gòu)中的計算機和網(wǎng)絡(luò)服務(wù)。DNS 命名用于 Internet 等 TCP/IP 網(wǎng)絡(luò)中,通過用戶友好的名稱查找計算機和服務(wù)。當(dāng)用戶在應(yīng)用程序中輸入 DNS 名稱時,DNS 服務(wù)可以將此名稱解析為與之相關(guān)的其他信息,如 IP 地址。因為,你在上網(wǎng)時輸入的網(wǎng)址,是通過域名解析系解析找到相對應(yīng)的IP地址,這樣才能上網(wǎng)。其實,域名的最終指向是IP。
簡單地說,就是通過域名得出IP,或是通過IP得出域名(較少用)。怎樣得到域名的IP,可以用ping程序。如在XP系統(tǒng)里,開始》運行 里輸入 ping www.fsowen.com –t 就會顯示出IP。
2 智能DNS的定義
所謂智能,實際上就是根據(jù)訪問者的IP地址信息,然后指向到離訪問者最近或最快的服務(wù)器上,從而加快了訪問速度或達(dá)到定向目的。如電信用戶訪問電信服務(wù)器,網(wǎng)絡(luò)用戶訪問網(wǎng)通服務(wù)器,教育網(wǎng)等同理。智能DNS的出現(xiàn)以及應(yīng)用,很大一個原因是國內(nèi)互聯(lián)網(wǎng)的結(jié)構(gòu)比較特殊。南北互通是個問題,而解決此問題的一個較好方法,便是架設(shè)一個電信網(wǎng)通智能解釋的智能DNS。還有一些如教育網(wǎng),鐵通等問題,同樣可以架設(shè)一個多線路解釋更智能的DNS了。還有一個原因,是可以達(dá)到分流,如南北分流,地區(qū)分流等等。不過這里是對大流量網(wǎng)站來說才需要用到。
二 DNS軟件及服務(wù)介紹
1 DNS軟件有哪些?
最出名或應(yīng)用得最多的,我想非bind莫屬了。Windows里也有自帶的DNS軟件,lbnamed。我知道的就這幾個了
Bind http://www.isc.org/software/bind
Windows 的在安裝服務(wù)里就有,網(wǎng)上的下載,不太清楚了
Lbnamed http://www.stanford.edu/~riepel/lbnamed/
Bind-dlz http://bind-dlz.sourceforge.net/
2 應(yīng)用配置
前面已有介紹DNS的功能和應(yīng)用,但不同的配置,作用或應(yīng)用也不同。比如智能DNS,用DNS實現(xiàn)的分流或均衡均衡,CDN等等。
從配置來說,對Bind的基本應(yīng)用,相對來說就簡單些。如要配置成智能DNS或多線路的解釋,也不復(fù)雜,但在主從同步的時候就比較復(fù)雜了。而且,在修改DNS記錄或管理維護時也不方便,開發(fā)應(yīng)用管理也相對復(fù)雜。所以出了個bind-dlz.類似于在bind的基礎(chǔ)上加個插件,把bind的配置及記錄都放到數(shù)據(jù)庫里,這樣就方便多了,也易于開發(fā)了些管理程序。但這個性能,不如使用bind的文本方式來得好了,下圖是來自bind-dlz官網(wǎng)的測試結(jié)果。
Windows的DNS配置,自然會是最簡單和方便了。只要知道原理的人,點下鼠標(biāo)就可完成
Lbnamed的配置,幾年前好像有配置過,也不復(fù)雜
Bind-dlz 的配置,也相對簡單
從應(yīng)用來說,bind,bind-dlz都可以配置多線路或智能解釋的DNS,windows, Lbnamed的不太清楚,沒研究過。但 Lbnamed 有個很不錯的功能,就是在用DNS做輪詢分流時,Lbnamed有一個負(fù)載監(jiān)測功能,可以根據(jù)各服務(wù)器的負(fù)載情況來調(diào)整解釋IP的權(quán)重。這個功能,對想用DNS來做分流的人來說,是個不錯的選擇。不過現(xiàn)在要實際負(fù)載均衡或分流,LVS就是個不錯的選擇了。
三 安裝與配置
本文以bind-dlz搭配mysql,架設(shè)一個南北分流的配置及應(yīng)用為例,也就是電信和網(wǎng)通智能解釋的DNS方案為例作說明,
域名 wdlinux.cn
注冊為DNS服務(wù)器的域名名(本測試均在虛擬機上進行):
ns1.wdlinux.cn 192.168.1.91
ns2.wdlinux.cn 192.168.1.92
軟件 bind-dlz+mysql
1 軟件的下載
wget ftp://ftp.isc.org/isc/bind9/9.6.1-P2/bind-9.6.1-P2.tar.gz
mysql的相關(guān)安裝配置略過,本文在mysql配置好的基礎(chǔ)上
2 安裝配置
tar -zxvf bind-9.6.1-P2.tar.gz
cd bind-9.6.1-P2
./configure --with-dlz-mysql --enable-largefile --enable-threads=no --prefix=/usr/local/bind
make && make install
添加named用戶
useradd -d /dev/null -s /sbin/nologin named
設(shè)置bind的工作目錄
cd /usr/local/bind/etc
echo 'options {
directory "/usr/local/bind"; // Working directory
};' > named.conf
生成相關(guān)的key
../sbin/rndc-confgen >rndc.conf
tail -n10 rndc.conf | head -n9 | sed -e s/#\//g >>named.conf
設(shè)置IP庫及bind的view視圖
echo 'include "/usr/local/bind/etc/telecom_acl.conf";
include "/usr/local/bind/etc/view.conf";' >> named.conf
將最新的DNS根域名導(dǎo)入
dig > named.root
wget http://www.fsowen.com/conf/bind/bind-dlz.tar.gz
(view.conf,telecom_acl.conf,localhost.zone, dnsdata.sql.txt)
tar zxvf cf.tar.gz
建bind數(shù)據(jù)庫表
/usr/local/mysqlm/bin/mysqladmin -uroot -p create dnsdata
/usr/local/mysqlm/bin/mysql -uroot -p dnsdata < dnsdata.sql.txt
mysql –uroot –p < dnsdata.sql
設(shè)置權(quán)限
GRANT ALL ON dnsdata.* TO 'dnsuser'@'localhost' IDENTIFIED BY 'dnspass';
Flush privileges;
Iptables增加如下規(guī)則
-A RH-Firewall-1-INPUT -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --sport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --sport 53 -j ACCEPT
測試啟動
/usr/local/bind/sbin/named -unamed -g -d 9
看提示是否有錯誤,如下提示是正常的
23-Mar-2010 19:06:57.010 zone_timer: zone version.bind/CH: enter
23-Mar-2010 19:06:57.011 zone_maintenance: zone version.bind/CH: enter
23-Mar-2010 19:06:57.011 zone_timer: zone authors.bind/CH: enter
23-Mar-2010 19:06:57.012 zone_maintenance: zone authors.bind/CH: enter
23-Mar-2010 19:06:57.012 zone_timer: zone hostname.bind/CH: enter
23-Mar-2010 19:06:57.013 zone_maintenance: zone hostname.bind/CH: enter
23-Mar-2010 19:06:57.013 zone_timer: zone id.server/CH: enter
23-Mar-2010 19:06:57.014 zone_maintenance: zone id.server/CH: enter
測試結(jié)果
因在虛擬機且在內(nèi)網(wǎng)測試,沒有顯示出IP等信息的不同,但原理一樣
到此測試完成,DNS可正常工作了
把下面這行加下隨系統(tǒng)啟動
Echo ‘/usr/local/bind/sbin/named -unamed -c /usr/local/bind/etc/named.conf’ >> /etc/rc.d/rc.local
此文的連接:http://www.fsowen.com/bind-dlz-view-mysql
[我的Linux,讓Linux更易用:http://www.fsowen.com:QQ 12571192]
原創(chuàng)內(nèi)容,轉(zhuǎn)載請保留此信息
本文的pdf下載 http://www.fsowen.com/doc/應(yīng)用服務(wù)之DNS與智能DNS.pdf
Word版下載 http://www.fsowen.com/doc/應(yīng)用服務(wù)之DNS與智能DNS.doc
同時本人用PHP寫的一個管理記錄的小程序,可以增加,修改,刪除記錄
暫不放網(wǎng)上了,有需者可聯(lián)系
四 主輔結(jié)構(gòu)及數(shù)據(jù)同步
一般做DNS服務(wù),都有兩臺機以上,四五臺更好。在多臺機中,域名的記錄信息,或在修改記錄時,如何同步和及時更新,是個關(guān)鍵問題。不能手工在每臺機上修改,那樣很麻煩也容易出錯。在用bind且以文本方式做存儲時,用到相關(guān)的KEY來做同步信號,只要修改主DNS,系統(tǒng)會自動同步所修改過的信息到輔DNS上。在本文的說明中,由于是使用了mysql數(shù)據(jù)庫來做存儲,所以覺得直接做一個mysql的主從復(fù)制結(jié)構(gòu)來得更簡便。還可以將mysql做成互為主從結(jié)構(gòu),這樣在數(shù)據(jù)安全及維護上更為可靠。具體的操作過程不作詳細(xì)描述。
1 設(shè)置主mysql的ID,日志記錄方式等,如
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
GRANT REPLICATION SLAVE ON *.* TO 'dnsslave'@'%' IDENTIFIED BY 'dnswdlinux';
2 拷貝數(shù)據(jù)庫文件至從機上,放到mysql的數(shù)據(jù)目錄
在從機上設(shè)置主的相關(guān)信息
MASTER_HOST='IP',MASTER_USER='dnsslave',MASTER_PASSWORD='dnswdlinux',MASTER_LOG_FILE='filename',MASTER_LOG_POS=id;
Start slave start;
五 FAQ
23-Mar-2010 19:06:04.854 the working directory is not writable
23-Mar-2010 19:06:04.854 ignoring config file logging statement due to -g option23-Mar-2010 19:06:04.860 couldn't open pid file '/usr/local/bind/var/run/named/n
amed.pid': Permission denied
23-Mar-2010 19:06:04.860 exiting (due to early fatal error)
Cd /usr/local/bind
chown -R named.named var
更多教程敬請關(guān)注:http://www.fsowen.com
歡迎轉(zhuǎn)載,但請保留此信息