用實(shí)驗(yàn)快速掌握DNS配置
由于配置DNS很重要,本文主要以做實(shí)驗(yàn)來快速掌握DNS配置.
[實(shí)驗(yàn)?zāi)康?/SPAN>]
1.配置一個(gè)只可轉(zhuǎn)發(fā)請(qǐng)求的DNS.
2.配置一個(gè)masterDNS.
3.配置一個(gè)slaveDNS.
[實(shí)驗(yàn)環(huán)境]
1.兩臺(tái)互連的計(jì)算機(jī).
2.系統(tǒng)Redhat 8.0.
[實(shí)驗(yàn)步驟]
一.實(shí)驗(yàn)準(zhǔn)備.
1.兩臺(tái)機(jī)關(guān)掉iptables
# service iptables stop
# chkconfig iptables off
2.兩臺(tái)機(jī)檢查安裝必要軟件
# rpm -q bind
# rpm -q bind-utils
# rpm -q caching-nameserver
根據(jù)結(jié)果,安裝沒安裝的軟件,從安裝盤里找出沒安裝的包,有選擇的執(zhí)行下列步驟:
# rpm -Uvh bind-9*
# rpm -Uvh bind-utils*
# rpm -Uvh caching-nameserver*
3.互連兩臺(tái)機(jī).
①編輯兩臺(tái)機(jī)的相應(yīng)文件.(編輯最好用vi,以下也是)
機(jī)器1:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.254
NETMASK=255.255.255.0
/etc/hosts
127.0.0.1 localhost localhost.localdomain
/etc/resolv.conf
nameserver 192.168.0.254
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=server1
機(jī)器2:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.1
NETMASK=255.255.255.0
/etc/hosts
127.0.0.1 localhost localhost.localdomain
/etc/resolv.conf
nameserver 192.168.0.1
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=station1
②分別在兩臺(tái)機(jī)上運(yùn)行:
機(jī)器1:
# ifdown eth0
# ifup eth0
# ping 192.168.0.1
機(jī)器2:
# ifdown eth0
# ifup eth0
# ping 192.168.0.254
主意:兩臺(tái)機(jī)能互相ping通,繼續(xù)下列實(shí)驗(yàn),不通,再找找原因.
二.機(jī)器1上配置一個(gè)masterDNS.
機(jī)器1上:
1.編輯/etc/named.conf文件:
/etc/named.conf
options {
directory “/var/named/”;
};
zone “.” IN {
type hint;
file “named.ca”;
};
zone “l(fā)ocalhost” IN {
type master;
file “l(fā)ocalhost.zone”;
};
zone “0.0.127.in-addr.arpa” IN {
type master;
file “named.local”;
};
zone “example1.com” IN {
type master;
file “db.example1”;
};
zone “0.168.192.in-addr.arpa” IN {
type master;
file “db.192.168.0”;
};
----------------------------------------------------------------------
解釋上述文件,如果你對(duì)上述文件比較熟悉,可以跳過此段.
上述文件有六部分:option ,5個(gè)zone.
其中option,”.”,”localhost”,”0.0.127.in-addr.arpa”原來就有.
“example1.com”,“0.168.192.in-addr.arpa”為現(xiàn)在子網(wǎng)的正向和反向搜索區(qū)的
定義,“db.example1”,”db.192.168.0”的名字是隨便取的,它們必需在/var/named/下
存在.
主義{}前后及中間的空格,及分號(hào).
-----------------------------------------------------------------------
2.用vi創(chuàng)建兩個(gè)文件,/var/named/db.example1,/var/named/db.192.168.0
/var/named/db.example1
$TTL 86400
@ IN SOA server1.example1.com. Root.server1.example1.com. (
2003070401 1H 1M 1W 1D )
IN NS server1.example1.com.
IN A 192.168.0.254
server1 IN A 192.168.0.254
station1 IN A 192.168.0.1
www IN A 192.168.0.254
ftp IN A 192.168.0.254
pop IN A 192.168.0.254
www1 IN CNAME server1.example1.com.
ftp1 IN CNAME server1.example1.com.
@ IN MX 10 server1.example1.com.
server1.example1.com IN MX 10 server1.example1.com.
----------------------------------------------------------------------
解釋上述文件,如果你對(duì)上述文件比較熟悉,可以跳過此段.
上述文件是一個(gè)正向搜索的數(shù)據(jù)庫:
$TTL 86400 是文件開頭,數(shù)字表示默認(rèn)存活期,用秒計(jì)算的,做什么不用不要管它,
記著添上就行.
接著的格式就是:[domain] [class]
[domain]如: server1.example1.com ,www.
Www是簡寫,實(shí)際會(huì)默認(rèn)添上定義這個(gè)文件的那個(gè) zone “example1.com”里的
example1.com,即:www=www.example1.com.這個(gè)段可以升略不寫,默認(rèn)跟前一行的
[domain]相同.@表示”example1.com”.
[class]一般為internet類,即:IN ,可以省去不寫.
分別有SOA,NS,A,MX,CNAME,及反向數(shù)據(jù)庫里的PTR.
SOA=start of authority 必要的
NS=nameserver 必要的
A=域名和ip地址的映射. 必要的
MX=mail exchange. 可選的
CNAME=域名的一個(gè)假名 可選的
PTR=用在反向:ip地址和域名的影射. 必要的
假名不可以放在NS MX 的字段.
SOA 括弧中的5個(gè)數(shù)字:
對(duì)應(yīng)為( serial refresh retry expire Minimum )
serial 可以是任何數(shù)字,一般:年月日修改數(shù).
refresh 是SOA信息的刷新時(shí)間.
Retry是與授權(quán)服務(wù)器聯(lián)系的頻率.
Expire slave服務(wù)器保存有關(guān)的區(qū)域信息,不更新它的時(shí)間間隔.
Minimum 區(qū)域中記錄的存活時(shí)間.
H=hour D=day M=minute W=week
SOA 后的server1.example1.com.表示這個(gè)區(qū)域授權(quán)給哪臺(tái)機(jī).
root.server1.example1.com.表示管理人.用.代替@
完整域名后一定要加.號(hào),否則會(huì)自動(dòng)為你加”example1.com”.
以上如果你不懂,不用急,以后慢慢想清楚.
-----------------------------------------------------------------------
/var/named/db.192.168.0
$TTL 86400
@ IN SOA server1.example1.com. root.server1.example1.com. (
2003070401 1H 1M 1W 1D )
IN NS server1.example1.com.
254.0.168.192.in-addr.arpa IN PTR server1.example1.com.
1.0.168.192.in-addr.arpa IN PTR station1.example1.com.
----------------------------------------------------------------------
解釋上述文件,如果你對(duì)上述文件比較熟悉,可以跳過此段.
此文件是反向搜索的數(shù)據(jù)庫.
主意IP反著寫.
其它的不用解釋.
-----------------------------------------------------------------------
3.檢驗(yàn):
# cat >> /var/log/messages
******
******
[ctrl]+d
# service named restart
# host server1.example1.com
# host station1.example1.com
# host www.example1.com
# host www1.example1.com
# host 192.168.0.254
看看是否可以解析,如:server1.example1.com 對(duì)應(yīng)的IP為192.168.0.254,
192.168.0.254對(duì)應(yīng)域名為server1.example1.com.如果不能解析,說明,配置有問題,
可以到日志/var/log/messages里查看.具體位置在文件末尾的兩行*******后,和調(diào)試
程序一樣,甚至他會(huì)告訴你哪個(gè)文件,哪行錯(cuò)了.修改后,重新執(zhí)行:
# cat >> /var/log/messages
******
******
[ctrl]+d
# service named restart
# host server1.example1.com
# host station1.example1.com
# host www.example1.com
# host www1.example1.com
# host 192.168.0.254
直到無錯(cuò),且能夠正確解析.
三.機(jī)器2上配置一個(gè)只負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求域名解析的DNS
機(jī)器2上:
1.編輯/etc/named.conf
/etc/named.conf
options {
directory “/var/named/”;
forwarders { 192.168.0.254; };
};
........
------------------------------------------------------------
解釋上述文件,如果你對(duì)上述文件比較熟悉,可以跳過此段.
forwarders { 192.168.0.254; }表示,如果此DNS不能解析出IP,則交給
192.168.0.254這個(gè)DNS,其實(shí)在配置masterDNS時(shí),也可以在option里加一個(gè)forwarders
具體IP就是你平時(shí)上網(wǎng)用的DNS.如果有兩個(gè)或多個(gè)也可以這樣寫:
{ 210.35.92.77.45; 210.35.77.46; } 或者 { 210.35.92/24; 192.168.0.254 ;}
.....表示其它的東西,不要?jiǎng)?/SPAN>.
---------------------------------------------------------------------
2.檢驗(yàn):
# cat >> /var/log/messages
******
******
[ctrl]+d
# service named restart
# host server1.example1.com
# host station1.example1.com
# host www.example1.com
# host www1.example1.com
# host 192.168.0.254
看看是否可以解析,如:server1.example1.com 對(duì)應(yīng)的IP為192.168.0.254,
192.168.0.254對(duì)應(yīng)域名為server1.example1.com.
這個(gè)配置比較簡單,一般不會(huì)有筆誤,如果錯(cuò)誤,排除bug的方法同檢查masterDNS
一樣,看日志.
三.機(jī)器2上配置一個(gè)slaveDNS
機(jī)器2上:
1.編輯/etc/named.conf
/etc/named.conf
options {
directory “/var/named/”;
};
zone “.” IN {
type hint;
file “named.ca”;
};
zone “l(fā)ocalhost” IN {
type master;
file “l(fā)ocalhost.zone”;
};
zone “0.0.127.in-addr.arpa” IN {
type master;
file “named.local”;
};
zone “example1.com” IN {
type slave;
masters { 192.168.0.254; };
file “db.example1-slave”;
};
zone “0.168.192.in-addr.arpa” IN {
type slave;
masters { 192.168.0.254; };
file “db.192.168.0-slave”;
};
------------------------------------------------------------
解釋上述文件,如果你對(duì)上述文件比較熟悉,可以跳過此段.
與masterDNS,不同的是:type slave; masters { 192.168.0.254; };
slaveDNS的效果就是定期的向masterDNS復(fù)制一份數(shù)據(jù)庫.
一個(gè)網(wǎng)絡(luò)一般只能有一個(gè)masterDNS,多個(gè)slaveDNS,slaveDNS用來使DNS的
訪問負(fù)載均衡.減輕masterDNS的負(fù)擔(dān).
此時(shí),刪掉上面配置forward 的那句:forwarders { 192.168.0.254; };
加著也沒錯(cuò),只不過,容易判斷是否是slaveDNS在起作用。
------------------------------------------------------------
2.檢驗(yàn):
# cat >> /var/log/messages
******
******
[ctrl]+d
# service named restart
# host server1.example1.com
# host station1.example1.com
# host www.example1.com
# host www1.example1.com
# host 192.168.0.254
看看是否可以解析,如:# host server1.example1.com 顯示:
www.example1.com has address 192.168.0.254
# host 192.168.0.254 顯示:
254.0.168.192.in-addr.arpa domain name pointer server1.example1.com.
0.168.192.in-addr.arpa.
且查看在/var/named/下是否生成: db.example1-slave , db.192.168.0-slave
兩個(gè)文件.
如果,沒有生成這兩個(gè)文件,說明配置有文體。具體檢查日志/var/log/messages
排除錯(cuò)誤。直到無錯(cuò),且自動(dòng)生成兩個(gè)文件,且能正確解析。
另外,一定注意,機(jī)器1和機(jī)器2的iptables保持關(guān)掉。
[實(shí)驗(yàn)總結(jié)]
本文只是為了讓你快速入門,且告訴你一個(gè)簡單的手動(dòng)配置一個(gè)DNS的方法,具體的
原理講的很少,如果想了解更多,請(qǐng)參考其他專業(yè)的文檔。如果你即使在不熟的情況下,
做完此實(shí)驗(yàn),且做的時(shí)候多想過一些問題,絕對(duì)有助于看其他文檔。
[題外話]
至于讓機(jī)器2作為一般的客戶端,采用機(jī)器1的DNS,需要修改/etc/resolv.conf文件,
不屬于DNS配置的范圍。
至于如何讓機(jī)器1連到Internet,更不是本文所討論的范圍。