- /var/named/chroot/etc/named.conf
- /var/named/chroot/var/named/zone_file1
- /var/named/chroot/var/named/zone_file.....
- /var/named/chroot/var/run/named/...
前言:
公司要求在服務(wù)器上搭建DNS server,方便客戶端設(shè)備軟件的初始化參數(shù)可以寫死域名,,通過這種方式簡化客戶端的設(shè)置工作量(公司產(chǎn)品形態(tài)決定了客戶端數(shù)量比較大,,300+以上的情況比較普遍,,而且實施不方便),。操作系統(tǒng)環(huán)境:RHEL 6.5 x86_64
公司技術(shù)部同事提供了一份文檔給我們參考(在以前的某項目上,,由于特殊情況,,客戶端必須使用域名方式訪問服務(wù)器),。把文檔仔細(xì)看了,,發(fā)現(xiàn)整個文檔可能確實可以實現(xiàn)既定目標(biāo),卻感覺知其然而不知其所以然,,如果這樣去做了,,可能對服務(wù)器性能、安全與日后的產(chǎn)品維護工作沒有好處,。我希望的是最簡配置達(dá)成目標(biāo),。因為以前在cisco路由器上搞過DNS+DHCP,自認(rèn)為都差不多,,不免流俗,,參考了技術(shù)部提供的文檔,同時又參考百度到的一些博客,,搞了下,,實際動手后卻各種報錯。于是乎,,下定決心,,不走捷徑,從原理開始學(xué)習(xí),,并把操作過程整理出來,,方便分享與日后回顧。
軟件環(huán)境:
首先,,需要伯克利大學(xué)互聯(lián)網(wǎng)域名工具(Berkeley Internet Name Domain),,簡稱BIND,可以使用yum或rpm安裝,。因為我手中有足夠的rpm包,,我選擇的是rpm安裝。
關(guān)于chroot:
從名字能看得出,,是change root,。為了安全,bind需要的配置文件實際放在:
因為新版本的 RHEL或CentOS 6.x 已經(jīng)將 chroot 所需要使用到的路徑,,使用 mount --bind 的功能進行了目錄鏈接,,例如,我們需要的 /var/named 在啟動腳本中通過 mount --bind /var/named /var/named/chroot/var/named 進行目錄綁定,!所以在操作過程中,,無需切換工作目錄至 /var/named/chroot/
,,使用正規(guī)的目錄即可。啟動腳本的內(nèi)容參見下圖:
修改/var/named/chroot/下的文件的優(yōu)點很突出:如果umount后,,原本非/var/named/chroot/下的文件不發(fā)生改變(無論你在chroot/下的文件中做什么),,安全性非常好,。所以,,我們在學(xué)習(xí)配置過程中是可以忽略這部分知識的,等到配置過程都掌握后,,在生產(chǎn)系統(tǒng)的配置過程中,,一定是配置chroot/下的文件,也就是說,,生產(chǎn)系統(tǒng)中下面的操作過程是針對chroot/下的對應(yīng)文件,,這點一定要注意,。
文件配置與調(diào)用關(guān)系:
①首先配置的是/etc/named.conf,,這是bind的主配置文件,看名稱就知道這個配置文件的重要性啦,。修改這兩處為any,;要注意的是directory "/var/named",,這說明zone文檔的路徑,;
②修改后,,實際上就可以執(zhí)行service named start,。但是發(fā)現(xiàn)服務(wù)啟動失敗,,怎么辦呢?
要觀察/var/log/messages日志,,發(fā)現(xiàn)啟動named的時候,,有open: /etc/named.conf :permission denied錯誤提示,;我是root用戶登錄的沒問題,。再cat /etc/passwd發(fā)現(xiàn)named組的存在,好了,,執(zhí)行chown :named /etc/named.conf,,然后再啟動named,啟動成功,。
③觀察/etc/named.conf文件,,在文件的末尾,有這么一句,,說明還要調(diào)用這個包含性質(zhì)的文件:
接下來配置/etc/named.rfc1912.zones,。前面的不用管,只要增加下圖中紅框內(nèi)的一段,,并保存退出:
這一段是什么呢,是我希望的服務(wù)器使用istv.com這個域名的zone文件,。
這個named.istv.com就是bind需要的zone文件,,下面要配置這個文件,。
④我們知道了需要配置上面說的這個zone文件,那么這個文件在哪里呢,不知道不要緊,,繼續(xù)從bind主配置文件找線索:
從bind主配置文件中,,有這么一段描述,,說明了了directory是 /var/named/ 這個路徑。
⑤cp /var/named/named.localhost /var/named/named.istv.com,先創(chuàng)建這個文件,。
上面是我編輯好的,,最重要的是第二個@后面這一段,前面的可以不改,;NS代表域名,,A代表地址,翻譯成中文,這樣就非常好理解了,。實際上,,第二段中最重要的是最后一句,用來說明www.istv.com的IP地址,。大家注意到com后面的.,,這代表著完整主機名稱FQDN。
TTL建議比較長,,可以在客戶端本地存儲時間長一些,,避免反復(fù)訪問DNS server,給APP-Server帶來不必要的壓力,。我使用的是1D,,代表著one day,這個可能在測試的時候有影響,,如果變更windows端的域名服務(wù)器或者域名解析配置有變動,,還想要盡快看到測試結(jié)果,windows客戶端需要把dns緩存flush掉,。
⑥chown :named /var/named/named.istv.com經(jīng)過實際操作證明,,也是必不可少的。
⑦最后,,要想讓named進程開機自啟動,需要執(zhí)行chkconfig --level 2345 named on
上面的配置中,,只是配置了正向解析,,反向解析沒有去配置,因為我們只是想通過安裝這臺DNS Server,,終端設(shè)備可以在局域網(wǎng)內(nèi)訪問我們自己的istv.com這個域名,,也就是說使用DNS服務(wù)器解析域名所對應(yīng)的IP地址------正向解析。
關(guān)于配置文件的校驗:
bind提供了有兩個校驗工具,,使用者可以在配置完文件后,,對文件進行手動校驗。問題來了,,校驗的工具在哪里,?關(guān)鍵還是思路,我們可以依靠搜索引擎,,也可以利用搜索引擎+自己的思考,。在/usr/sbin/路徑下有兩個命令,一個是named-checkconf,,另外一個是named-checkzone,,看名稱就能猜到是什么用的。對頭,分別是主配置文件和zone文件,。
OK,,我們現(xiàn)在知道了命令在哪兒和命令是什么了,命令的用法,,使用者自己看提示就知道了,,這里不詳細(xì)說明了。
實際上,,在/etc/init.d/named文件中,,有這么一句:
這說明什么呢,在啟動腳本中已經(jīng)包含了這兩個校驗命令,,可以透過named的restart并配合上面介紹的日志文件,,實現(xiàn)同樣的目的。
定時檢查dns服務(wù):
①編輯檢查dns服務(wù)腳本,,dns_check.sh:
#!/bin/bash
service named status &> /dev/null
if [ $? -ne 0 ]
then
echo "At time: `date` :named is stop .">> /var/log/messages
service named start
else
echo "named is running ."
fi
②在crontab計劃任務(wù)中,,增加dns_check.sh的定時執(zhí)行.
關(guān)于DNS測試命令:
配置OK了,程序啟動也順利OK了,,接下來就要對結(jié)果進行一下測試,,當(dāng)然在使用PC瀏覽器訪問服務(wù)器不方便的情況下,也是可以通過命令行去
①最簡單的host命令,。
host -a istv.com,,你可以看到一個結(jié)果,好像有問題,,當(dāng)然,,istv.com這個域名是在Internet上合法存在的,APP-Server上也配置的自己的dns,,解析到的就是互聯(lián)網(wǎng)的結(jié)果,。我們局域網(wǎng)怎么用呢?host -a istv.com 172.16.1.7,,對咯,,后面指定dns服務(wù)器地址就可以了。個人認(rèn)為,,簡單而好用,。
②nslookup命令。
這個命令的用法就比較豐富了,,這里我只用最簡單的,,不廢話,直接給圖,。
③主流的dig命令,。
更加豐富的使用方法和更加豐富的查詢結(jié)果,沒有仔細(xì)學(xué)習(xí),用法差不多,,繼續(xù)直接給圖,。
|
|