用實驗快速掌握DNS配置

用實驗快速掌握DNS配置
由於配置DNS很重要,本文主要以做實驗來快速掌握DNS配置.
[實驗目的]
1.配置一個只可轉發請求的DNS.
2.配置一個masterDNS.
3.配置一個slaveDNS.
[實驗環境]
1.兩臺互連的計算機.
2.系統Redhat 8.0.
[實驗步驟]
一.實驗準備.
1.兩臺機關掉iptables
# service iptables stop
# chkconfig iptables off
2.兩臺機檢查安裝必要軟件
# rpm -q bind
# rpm -q bind-utils
# rpm -q caching-nameserver
根據結果,安裝沒安裝的軟件,從安裝盤裏找出沒安裝的包,有選擇的執行下列步驟:
# rpm -Uvh bind-9*
# rpm -Uvh bind-utils*
# rpm -Uvh caching-nameserver*
3.互連兩臺機.
①編輯兩臺機的相應文件.(編輯最好用vi,以下也是)
機器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
機器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
②分別在兩臺機上運行:
機器1:
# ifdown eth0
# ifup eth0
# ping 192.168.0.1
機器2:
# ifdown eth0
# ifup eth0
# ping 192.168.0.254
主意:兩臺機能互相ping通,繼續下列實驗,不通,再找找原因.
二.機器1上配置一個masterDNS.
機器1上:
1.編輯/etc/named.conf文件:
/etc/named.conf
options {
directory “/var/named/”;
};
zone “.” IN {
type hint;
file “named.ca”;
};
zone “localhost” IN {
type master;
file “localhost.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”;
};
----------------------------------------------------------------------
解釋上述文件,如果你對上述文件比較熟悉,可以跳過此段.
上述文件有六部分ption ,5個zone.
其中option,”.”,”localhost”,”0.0.127.in-addr.arpa”原來就有.
“example1.com”,“0.168.192.in-addr.arpa”爲現在子網的正向和反向搜索區的
定義,“db.example1”,”db.192.168.0”的名字是隨便取的,它們必需在/var/named/下
存在.
主義{}前後及中間的空格,及分號.
-----------------------------------------------------------------------
2.用vi創建兩個文件,/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.
----------------------------------------------------------------------
解釋上述文件,如果你對上述文件比較熟悉,可以跳過此段.
上述文件是一個正向搜索的數據庫:
$TTL 86400 是文件開頭,數字表示默認存活期,用秒計算的,做什麼不用不要管它,
記着添上就行.
接着的格式就是:[domain] [class]
[domain]如: server1.example1.com ,www.
Www是簡寫,實際會默認添上定義這個文件的那個 zone “example1.com”裏的
example1.com,即ww=www.example1.com.這個段可以升略不寫,默認跟前一行的
[domain]相同.@表示”example1.com”.
[class]一般爲internet類,即:IN ,可以省去不寫.
分別有SOA,NS,A,MX,CNAME,及反向數據庫裏的PTR.
SOA=start of authority 必要的
NS=nameserver 必要的
A=域名和ip地址的映射. 必要的
MX=mail exchange. 可選的
CNAME=域名的一個假名 可選的
PTR=用在反向:ip地址和域名的影射. 必要的
假名不可以放在NS MX 的字段.
SOA 括弧中的5個數字:
對應爲( serial refresh retry expire Minimum )
serial 可以是任何數字,一般:年月日修改數.
refresh 是SOA信息的刷新時間.
Retry是與授權服務器聯繫的頻率.
Expire slave服務器保存有關的區域信息,不更新它的時間間隔.
Minimum 區域中記錄的存活時間.
H=hour D=day M=minute W=week
SOA 後的server1.example1.com.表示這個區域授權給哪臺機.
root.server1.example1.com.表示管理人.用.代替@
完整域名後一定要加.號,否則會自動爲你加”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.
----------------------------------------------------------------------
解釋上述文件,如果你對上述文件比較熟悉,可以跳過此段.
此文件是反向搜索的數據庫.
主意IP反着寫.
其它的不用解釋.
-----------------------------------------------------------------------
3.檢驗:
# 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 對應的IP爲192.168.0.254,
192.168.0.254對應域名爲server1.example1.com.如果不能解析,說明,配置有問題,
可以到日誌/var/log/messages裏查看.具體位置在文件末尾的兩行*******後,和調試
程序一樣,甚至他會告訴你哪個文件,哪行錯了.修改後,重新執行:
# 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
直到無錯,且能夠正確解析.
三.機器2上配置一個只負責轉發請求域名解析的DNS
機器2上:
1.編輯/etc/named.conf
/etc/named.conf
options {
directory “/var/named/”;
forwarders { 192.168.0.254; };
};
........
------------------------------------------------------------
解釋上述文件,如果你對上述文件比較熟悉,可以跳過此段.
forwarders { 192.168.0.254; }表示,如果此DNS不能解析出IP,則交給
192.168.0.254這個DNS,其實在配置masterDNS時,也可以在option里加一個forwarders
具體IP就是你平時上網用的DNS.如果有兩個或多個也可以這樣寫:
{ 210.35.92.77.45; 210.35.77.46; } 或者 { 210.35.92/24; 192.168.0.254 ;}
.....表示其它的東西,不要動.
---------------------------------------------------------------------
2.檢驗:
# 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 對應的IP爲192.168.0.254,
192.168.0.254對應域名爲server1.example1.com.
這個配置比較簡單,一般不會有筆誤,如果錯誤,排除bug的方法同檢查masterDNS
一樣,看日誌.
三.機器2上配置一個slaveDNS
機器2上:
1.編輯/etc/named.conf
/etc/named.conf
options {
directory “/var/named/”;
};
zone “.” IN {
type hint;
file “named.ca”;
};
zone “localhost” IN {
type master;
file “localhost.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”;
};
------------------------------------------------------------
解釋上述文件,如果你對上述文件比較熟悉,可以跳過此段.
與masterDNS,不同的是:type slave; masters { 192.168.0.254; };
slaveDNS的效果就是定期的向masterDNS複製一份數據庫.
一個網絡一般只能有一個masterDNS,多個slaveDNS,slaveDNS用來使DNS的
訪問負載均衡.減輕masterDNS的負擔.
此時,刪掉上面配置forward 的那句:forwarders { 192.168.0.254; };
加着也沒錯,只不過,容易判斷是否是slaveDNS在起作用。
------------------------------------------------------------
2.檢驗:
# 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
兩個文件.
如果,沒有生成這兩個文件,說明配置有文體。具體檢查日誌/var/log/messages排除錯誤。直到無錯,且自動生成兩個文件,且能正確解析。另外,一定注意,機器1和機器2的iptables保持關掉。
[實驗總結]
本文只是爲了讓你快速入門,且告訴你一個簡單的手動配置一個DNS的方法,具體的原理講的很少,如果想了解更多,請參考其他專業的文檔。如果你即使在不熟的情況下,做完此實驗,且做的時候多想過一些問題,絕對有助於看其他文檔。
[題外話]
至於讓機器2作爲一般的客戶端,採用機器1的DNS,需要修改/etc/resolv.conf文件,不屬於DNS配置的範圍。至於如何讓機器1連到Internet,更不是本文所討論的範圍。
發佈了43 篇原創文章 · 獲贊 0 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章