用实验快速掌握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”;
};
----------------------------------------------------------------------
解释上述文件,如果你对上述文件比较熟悉,可以跳过此段.
上述文件有六部分:option ,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,即:www=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,更不是本文所讨论的范围。