<b>二、</b><b>DNS</b><b>服務介紹和軟體安裝</b>
1、DNS服務介紹
類型:系統V(System V)管理的服務
軟體包:bind、bind-utils、bind-chroot
守護程序:<b>/usr/sbin/named</b>, <b>/usr/sbin/rndc</b>
腳本:/etc/init.d/named
端口:53 (domain,tcp,udp), 953(rndc)
配置檔案:(Under /var/named/chroot/) /etc/named.conf, /var/named/*, /etc/rndc.key
相關軟體包:caching-nameserver(提供配置檔案模闆), openssl
2、安裝
<b>[root@station1~]#rpm -ivh /mnt/cdrom/Server/bind-9.3.3-10.el5.i386.rpm</b><b> </b>
<b>[root@station1~]#rpm -ivh /mnt/cdrom/Server/bind-libbind-devel-9.3.3-10.el5.i386.rpm</b><b> </b>
<b>[root@station1~]#rpm -ivh /mnt/cdrom/Server/bind-sdb-9.3.3-10.el5.i386.rpm</b><b> </b>
<b>[root@station1~]#rpm -ivh /mnt/cdrom/Server/bind-devel-9.3.3-10.el5.i386.rpm</b><b> </b>
<b>[root@station1~]#rpm -ivh /mnt/cdrom/Server/caching-nameserver-9.3.3-10.el5.i386.rpm</b><b> </b>
<b>[root@station1~]#rpm -ivh /mnt/cdrom/Server/bind-chroot-9.3.3-10.el5.i386.rpm</b><b> </b>
<b>3</b><b>、配置主</b><b>DNS</b><b>伺服器(</b><b>192.168.32.31</b><b>)</b>
3.1、環境:Master Server:station1.kvm.com 192.168.32.31
Slave Server:station2.kvm.com 192.168.32.32
Cache Server:station3.kvm.com 192.168.32.33
Cleint:station6.kvm.com 192.168.32.36
域:kvm.com.
3.2、配置主配置檔案named.conf
<b>[root@station1~]#cd /var/named/chroot/etc</b>
#安裝bind-chroot後所有named相關檔案均在/var/named/chroot目錄下,位置調整可修改 /etc/sysconfig/named檔案 ROOTDIR=/var/named/chroot
[root@station1 etc]#cp -p named.caching-nameserver.conf named.conf
#全局配置選項均在named.caching-nameserver.conf中
[root@station1 etc]#cat named.rfc1912.zones>>named.conf
#各區域配置模闆均在named.rfc1912.zones中
[root@station1 etc]#vi named.conf
options { #全局配置
listen-on port 53 { 192.168.32.31; };
#将named綁定到指定接口預設:如果缺少listen-on配置,named就會監聽所有接口
listen-on-v6 port 53 { ::1; };
directory "/var/named"; #/var/named/chroot/下相對目錄
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; }; #允許疊代查詢的客戶機IP
allow-recursion { any ; }; #允許遞歸查詢的客戶機IP
allow-query-cache { localhost; };
#允許查詢緩沖的客戶機ip,主副伺服器可不要此項,緩沖伺服器中要此項
allow-transfer { 192.168.32.32; }; #允許下載下傳區域檔案的輔助伺服器位址
};
logging { #日志相關
channel default_debug {
file "data/named.run";
severity dynamic;
zone "." IN { #根域,根類型隻能是hint
type hint;
file "named.ca";
zone "localdomain" IN { #用于本地解析
type master;
file "localdomain.zone";
allow-update { 192.168.32.32; };
zone "localhost" IN { #用于本地解析
file "localhost.zone";
zone "0.0.127.in-addr.arpa" IN { #用于回環解析
file "named.local";
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
file "named.ip6.local";
zone "255.in-addr.arpa" IN { #廣播位址反向解析
file "named.broadcast";
zone "0.in-addr.arpa" IN {
file "named.zero";
#以上區域均為模闆檔案自帶,可不修改。以下是自己添加需要解析的域kvm.com
zone "kvm.com" IN {
file "kvm.com.zone";
zone "32.168.192.in-addr.arpa" IN {
file "192.168.32";
3.3、配置正向區域檔案
[root@station1 etc]#cd ../var/named/
[root@station1 named]#cp localdomain.zone kvm.com.zone
#正向解析區域檔案模闆localdomain.zone
[root@station1 named]#vi kvm.com.zone
$TTL 86400
@ IN SOA station1.kvm.com. root.kvm.com. (
42 ; serial (d. adams)
15M ; refresh
5M ; retry
1W ; expiry
1D ) ; minimum
IN NS station1.kvm.com.
server1 IN A 192.168.32.30
station1 IN A 192.168.32.31
station2 IN A 192.168.32.32
station3 IN A 192.168.32.33
ftp IN CNAME station3.kvm.com.
www 0 IN A 192.168.32.31 #多個www的解析,可以實作簡單負載均衡
www 0 IN A 192.168.32.32
www 0 IN A 192.168.32.33
bbs.kvm.com. IN A 192.168.32.30
<b>$GENERATE 1-200 station$ IN A 192.168.32.$ </b>#連續位址解析
相關說明:
區塊檔案的内容:
記錄集合,從SOA記錄開始
@符号是一個變量,代表區塊的始發位址。始發位址是: /etc/named.conf的zone說明中指定
注釋使用彙編語言模式(;)
注意事項:
若沒有使用“點”來終止名稱,BIND會在這個名稱後補充域的始發位址
如果記錄中缺少域字段,BIND會使用前一個記錄中的值(危險!如果另一個管理者改變了記錄順序怎麼辦?)
修改了區塊檔案後,不要忘記遞增系列号碼,重載named服務
<b>$TTL</b><b>是全局定義的</b>
<b>第二行 </b><b>SOA</b><b>記錄</b><b>,@</b><b>取代在</b><b>/etc/named.conf</b><b>中指定的域名。</b>
<b>SOA</b><b>段中的數字,</b><b>分别為:序列号、重新整理、重試、過期、生存期</b>
<b>序列号</b>:序列号用于DNS資料庫檔案的版本控制。每當資料被改變,這個序列号就應該被增加。
<b>重新整理</b>:從伺服器向主伺服器查詢最新資料的間隔周期。每一次檢查時從伺服器的資料是否需要更改,則根據序列号來判别。
<b>重試</b>:一旦從伺服器嘗試連接配接主伺服器失敗,下一次查詢主伺服器的延遲時間。
<b>過期</b>:如果從伺服器無法連通主伺服器,則在經過此時間後,宣告其資料過期。
<b>生存期</b>:伺服器回答 ‘無此域名’ 的間隔時間。
<b>數字的預設機關為秒</b>。否則:W= 周、D= 日、H= 小時、M= 分鐘。
<b>station1.kvm.com</b><b>.:</b>是DNS伺服器的名稱
<b>root.kvm.com</b><b>.</b><b>:</b> 是管理者的郵箱位址
<b>NS</b><b>(</b><b>name server</b><b>)</b>:設定域名伺服器的域名
<b>MX </b><b>(</b><b>Mail eXchanger </b><b>)</b><b>:</b> 設定郵件交換器資源記錄
<b>CNAME</b><b>:</b>别名
<b>實作連續位址解析</b>
$GENERATE 是函數
1-200 是要循環的變量
station$是主機名
192.168.32.$是對應的IP位址
3.4、配置反向解析區域檔案
[root@station1 named]#cp named.local 192.168.32
#反向解析區域檔案模闆named.local
[root@station1 named]#vi 192.168.32
1997022700 ; Serial
15M ; Refresh
5M ; Retry
3600000 ; Expire
86400 ) ; Minimum
31 IN PTR station1.kvm.com.
30 IN PTR server1.kvm.com.
32 IN PTR station2.kvm.com.
33 IN PTR station3.kvm.com.
<b>$GENERATE 1-200 $ IN PRT station$.kvm.com </b>#反向連續域名解析
3.4、測試配置檔案
[root@station1 named]#service named start
[root@station1 named]# named-checkconf ../../etc/named.conf
#主配置檔案測試,無任何輸出,表示配置正确
[root@station1 named]# named-checkzone kvm.com kvm.com.zone
zone kvm.com/IN: loaded serial 42
OK
#區域配置檔案測試
<b>4</b><b>、輔助</b><b>DNS</b><b>伺服器配置(</b><b>192.168.32.32</b><b>)</b>
<b>主伺服器中全局選項要求加入(見主伺服器</b><b>named.conf</b><b>配置):</b>
<b>allow-transfer { 192.168.32.32; };</b>
<b>4.1</b><b>、</b><b> </b><b>[root@station2 etc]# vi named.conf</b>
options {
listen-on port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
allow-query { any; };
logging {
zone "." IN {
zone "localdomain" IN {
type slave; #指定自己的角色是slave伺服器
masters { 192.168.32.31; }; #指定主伺服器
};
zone "localhost" IN {
type slave;
masters { 192.168.32.31; };
zone "0.0.127.in-addr.arpa" IN {
zone "255.in-addr.arpa" IN {
file "slaves/kvm.com.zone"; #相對路徑
file "slaves/192.168.32";
[root@station2 etc]#service named start
[root@station2 etc]#ls /var/named/chroot/var/named/slaves
8 -rw-r--r-- 1 named named 444 12-29 11:17 192.168.32
8 -rw-r--r-- 1 named named 516 12-29 11:13 kvm.com.zone
#自動從主伺服器通過區域檔案
<b>5</b><b>、緩沖伺服器配置(</b><b>192.168.32.33</b><b>)</b>
[root@station3 etc]# cat named.conf
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query-cache { any; }; #必須允許客戶查詢緩沖,否則客戶機無法解析
forward only; #指定隻做轉發
forwarders { 192.168.32.31; }; #指定将查詢轉發給主伺服器
注:一般緩存域名伺服器都是ISP或者大公司才會使用
<b>6</b><b>、通路控制清單(</b><b>ACL</b><b>)</b>
<b>6.1</b><b>、位址比對清單</b>
适用分号間隔的IP位址清單或者與基于主機的通路控制安全性指令共同使用的子網清單
格式
IP位址:192.168.0.1
後續的點:192.168.0.
CIDR:192.168.0/24
使用歎号(!)來代表相反的結果
按順序檢查比對清單,找到第一個比對後就停止
示例:{ 192.168.0.1; 192.168.0.; !192.168.1.0/24; };
<b>6.2</b><b>、</b><b>通路控制清單(</b><b>ACL</b><b>)</b>
簡單地說,ACL将一個名稱配置設定給一個位址清單
一般可以用來代替比對清單(允許嵌套!)
最好的辦法是在/etc/named.conf檔案的開始處定義ACL
聲明示例
acl "trusted" { 192.168.1.21; }; acl "classroom" { 192.168.0.0/24; trusted; }; acl "cracker" { 192.168.1.0/24; }; acl "mymasters" { 192.168.0.254; }; acl "myaddresses" { 127.0.0.1; 192.168.0.1; };
<b>6.3</b><b>、内置</b><b>ACL</b>
BIND預定義了四個ACL
none 不比對任何IP位址
any 比對所有IP位址
localhost 比對名稱伺服器的任何IP位址
localhosts 比對直接連接配接的網絡
<b>6.4</b><b>、帶有基本通路控制選項的</b><b>/etc/named.conf</b><b>檔案示例:</b>
// acl's make security directives easier to read
acl "myaddresses" { 127.0.0.1; 192.168.0.1; };
acl "trusted" { 192.168.1.21; };
acl "classroom" { 192.168.0.0/24; trusted; };
acl "cracker" { 192.168.1.254; };
# bind to specific interfaces
listen-on port 53 { myaddresses; };
# make sure I can always query myself for troubleshooting
allow-query { localhost; classroom; cracker; };
allow-recursion { localhost; classroom; !cracker; };
/* don't let cracker (even trusted) do zone transfers */
allow-transfer { localhost; !cracker; classroom; };
# use a recursive, upstream nameserver
forwarders { 192.168.0.254; };
forward only;
<b>7</b><b>、客戶機配置(</b><b>192.168.32.36</b><b>)</b>
[root@station6 etc]#vi /etc/reslov.conf
search kvm.com
nameserver 192.168.32.31
<b>8</b><b>、查詢工具(</b><b>dig</b><b>、</b><b>host</b><b>、</b><b>nslookup</b><b>)</b>
<b>dig</b>
從不讀取/etc/nsswitch.conf檔案
預設情況是在/etc/resolv.conf檔案中隻查找nameserver行
輸出是RFC标準的區塊檔案格式。該格式被DNS伺服器使用,進而使dig對檢視DNS解析情況特别有用
dig kvm.com :正向查詢
dig -x 192.168.32.32 :反向查詢
dig -t mx|SOA|A kvm.com :指定查找類型
dig -t axfr example.com. @192.168.32.31 :該指令可顯示所有記錄
<b>dig +trace kvm.com</b>
讀取/etc/resolv.conf檔案來判定名稱伺服器
查詢根名稱伺服器
從根伺服器開始追蹤一個域名的解析過程
若教育訓練中心的防火牆禁止輸出的DNS,則參考注釋中的輸出示例
本文轉自netsword 51CTO部落格,原文連結:http://blog.51cto.com/netsword/497352