第一、DNS服务器
1、基本了解
hosts ---> DNS
特点:
1、是一个分布式的数据库,数据包存在一个域名空间里
2、解决了数据不一致,避免了名字冲突
3、有缓存机制,提高了性能和可靠性
规则:
1、分层结构,最多127层,每层最多63个字符
查询方式:递归查询、迭代查询
软件包:
bind.i386 <---主服务的软件包
bind-chroot.i386 <---安全软件包
bind-libs.i386 <---库文件
bind-utils.i386 <---工具包
bind-devel.i386 <---开发包
协议:tcp / dup
端口: 53 使用udp 53端口处理名字查询,使用tcp 53端口数据文件的拷贝
配置文件的目录:
a、在没有安装bind-chroot之前:
/etc/named.conf
/var/named/
b、安装bind-chroot之后
/var/named/chroot/etc/named.conf ---> 把 /var/named/chroot 虚拟成一个 /
/var/named/chroot/var/named/
2、配置
开始配置配置之前需要作一些准备:
a、在hosts 文件写上你的IP和主机名的对应关系
10.1.1.67 mail.upl.com
b、关闭SeLinux,关闭iptables
c、同步时间 ntpdate 10.1.1.1
# while :
> do
> ntpdate 10.1.1.1 2> /dev/null >/dev/null
> sleep 30
> done &
技巧,在rc.local写以下代码:
while : ; do ntpdate 10.1.1.1 2> /dev/null >/dev/null; sleep 30; done &
配置DNS的大致过程:
1、named.conf
2、区域文件
3、重启named服务
实例1:配置正向解析
1、编辑主配置文件 named.conf
格式:
options {
字段 值;
字段 值;
}; <-- 注意了,别漏了;
options {
directory "/var/named";
};
zone "upl.com" IN {
type master;
file "data/master.upl.com.zone";
};
2、编写区域文件
$TTL 86400
@ IN SOA upl.com. root.upl.com. (
2009110301 <--版本号,标识区域文件的版本
15M <----刷新时间,M分钟,可以写成秒,直接数字
10M <----刷新失败后的重试时间
1D <----过期时间,从服务器更新数据失败后这个区域文件的记录有效期为1天,1天后不生效了, D代表 天
1H) <----查无此域名,H 代表小时
@ IN NS mail.upl.com. <---别忘记了最后的“ . ”
IN MX 0 mail.upl.com.
mail IN A 10.1.1.67
web IN A 10.1.1.20
ftp IN A 10.1.1.21
www IN CNAME web
编辑好区域文件,留意一下他的权限
ll /var/named/chroot/var/named/data/master.upl.com.zone
-rw-r--r-- 1 root root 216 11-03 11:40 /var/named/chroot/var/named
需要知道的是,bind软件运行的时候采用的身份named
3、重启named服务器
service named restart
chkconfig --level 35 named on <---开机自动启动
4、测试
vim /etc/named.conf
nameserver 10.1.1.67 <---修改成自己的
nslookup web.upl.com
实例2:实现反向解析
实现IP解析成域名
1、主配置文件添加以下区:
zone "1.1.10.in-addr.arpa" IN {
type master;
file "data/master.1.1.10.in-addr.arpa.zone";
};
2、区域文件:
$TTL 86400
@ IN SOA 1.1.10.in-addr.arpa. root. (
01
15M
10M
1D
1H)
@ IN NS mail.upl.com. <---别忘记了最后的“ . ”
67 IN PTR mail.upl.com.
20 IN PTR web.upl.com.
21 IN PTR ftp.upl.com.
20 IN PTR www.upl.com.
3、重启named服务
service named restart
4、测试
首次测试别忘了修改/etc/resolv.conf文件,把DNS服务器指向你搭建的服务器
nslookup 10.1.1.20
nslookup 10.1.1.21
实例3:轮叫实现负载均衡
vim /var/named/chroot/var/named/data/master.upl.com.zone
$TTL 86400
@ IN SOA upl.com. root.upl.com. (
2009110301
15M
10M
1D
1H)
@ IN NS mail.upl.com.
IN MX 0 mail.upl.com.
mail IN A 10.1.1.67
web IN A 10.1.1.20
ftp IN A 10.1.1.21
www IN CNAME web
web IN A 10.1.1.30 <---实现轮叫,一个主机名匹配多个IP
web IN A 10.1.1.31
web IN A 10.1.1.32
web IN A 10.1.1.33
实例4:实现直接解析
vim /var/named/chroot/var/named/data/master.upl.com.zone
upl.com. IN A 10.1.1.67 <---添加一行,别忘记最前面的那个 “ . ”
实例5:实现泛解析
* IN A 10.1.1.99
nslookup kjfksdjflksdjflkdf.upl.com ---> 10.1.1.99
实例6: 实现连接解析域名
正向区域文件的设定:
$GENERATE 100-220 station$ IN A 10.1.1.$
方向区域文件的设定:
$GENERATE 100-220 $ IN PTR station$.upl.com.
[root@mail chroot]# nslookup 10.1.1.220
Server: 10.1.1.67
Address: 10.1.1.67#53
220.1.1.10.in-addr.arpa name = station220.upl.com.
实例7:辅助DNS服务器(从DNS服务器)的配置
安装一样的软件,准备工作和主服务器一样
1、配置主配置文件
options {
directory "/var/named";
};
zone "upl.com" IN {
type slave;
file "slaves/slave.upl.com.zone"; # 目录定义要注意权限文件,slaves必
须是named:named,权限770
masters { 10.1.1.67; };
};
2、重启named服务
service named restart
3、验证
a、 ls /var/named/chroot/var/named/slaves/slave.upl.com.zone 《--是否下载回来
b、 查看日志文件
tail -30 /var/log/messages
Nov 3 23:36:33 station181 named[4050]: zone upl.com/IN: Transfer started.
Nov 3 23:36:33 station181 named[4050]: transfer of 'upl.com/IN' from 10.1.1.67#53: connected using 10.1.1.92#60547
Nov 3 23:36:33 station181 named[4050]: zone upl.com/IN: transferred serial 2009110301
Nov 3 23:36:33 station181 named[4050]: transfer of 'upl.com/IN' from 10.1.1.67#53: end of transfer
c、修改/etc/resolv.conf文件
nameserver 10.1.1.92 <--执行10.1.1.92
nslookup web.upl.com <---测试
Server: 10.1.1.92
Address: 10.1.1.92#53
Name: web.upl.com
Address: 10.1.1.32
Name: web.upl.com
Address: 10.1.1.33
如果失败,原因:1、是否能和主服务器通讯正常;
2、配置文件是否正确;
3、是否从服务器保存的区域文件路径named用户没有权限写;
4、查看/var/log/messages文件看报错。
实例7-1:验证主从服务器的数据更新
1、更新主服务器的区域文件的记录,注意:必须增加版本号(比原来的大)
vim var/named/data/master.upl.com.zone
new IN A 10.1.1.88 《---添加一条新的记录
可以把刷新时间改成 1M ,等等好看到效果
2、重启主服务器的服务
service named restart
3、验证从服务器是否在指定更新时间内把新版本的区域文件下载回来
验证方法:
1、直接删除从服务器上的已经下载回来的区域文件
rm -f /var/named/chroot/var/named/slaves/slave.upl.com.zone
然后重启 service named restart
你会发现重新下载
2、马上再次更新主服务器的区域文件的记录,增加或者删除记录都行,并更新版本号,并重启主服务器的服务
service named restart
3、由于新下载的区域文件已经是1M的刷新时间了,我们就监控/var/log/messages文件
tail -f /var/log/messages <---如果看到有内容更新日志过来就正确了
稍等1分钟左右,就能看到日志文件有内容输出了,并验证一下区域文件的版本号
shell> head -5 /var/named/chroot/var/named/slaves/slave.upl.com.zone
$ORIGIN .
$TTL 86400 ; 1 day
upl.com IN SOA upl.com. root.upl.com. (
2009110303 ; serial <----留意,版本号已经是最新的
60 ; refresh (1 minute)
实例7-2: 限制数据传输的IP:
zone "upl.com" IN {
type master;
file "data/master.upl.com.zone";
allow-transfer { 10.1.1.92; }; <---在主服务器上进行限制,这样就只能10.1.1.92作为你的从服务器
};
实例8:转发服务器的配置
类型:条件转发 和 完全转发
1、条件转发的配置:但配置文件找不到的区的时候才转发出去,还有就是指定了转发的区也转发出去
options {
directory "/var/named";
forwarders { 10.1.1.1; };
};
zone "cluster.com" IN {
type forward;
forwarders { 10.1.1.1; }; 《---条件转发,只有cluster.com这个区才转发
};
zone "upl.com" IN { 《---没有定义转发,所以自己去管理,自己去解析
type master;
file "data/master.upl.com.zone";
allow-transfer { 10.1.1.92; };
};
2、完全转发的配置
options {
directory "/var/named";
forwarders { 10.1.1.1; };
forward only ;
};
实例9:定义根域
根域地址列表获取命令:
dig @a.root-servers.net. ns > /var/named/chroot/var/named/named.ca
[root@mail chroot]# chown named:named /var/named/chroot/var/named/named.ca
[root@mail chroot]# chmod 770 !$
options {
directory "/var/named";
forwarders {10.1.1.1;};
forward only;
};
zone "." IN {
type hint;
file "named.ca";
};