BIND
现今使用最为广泛的DNS服务器软件就是Bind(Berkeley Internet Name Domain Service)。Bind原本是美国DARPA资助伯克利大学(Berkeley)开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS服务器软件,现在最新的版本是9,由ISC(Internet Systems Consortium)编写和维护。
BIND支持现今绝大数的操作系统(Linux、UNIX、Mac、Windows)
BIND服务器的名称称之为named
本例使用的环境是CentOS 7.0的Linux操作系统
我们可以通过以下命令安装BIND:
yum install -y bind
DNS默认使用UDP、TCP协议,使用端口号为53(domain),953(rndc)
相关包:
bind-chroot:将named进程的活动范围限定在chroot目录,保证安全性。
bind-devel: 与开发相关的头文件和库文件(编译安装bind时所需)
bind-libs: bind服务器端和客户端都使用到的公共库文件
bind-utils : bind客户端工具
BIND配置文件
BIND配置文件保存在两个主要位置:
/etc/named.conf # BIND服务主配置文件
/var/named/ # zone文件
接下来我们开始配置我们的一个域的主服务器
域主服务器
一个域的主服务器(master)是这个域的信息的权威服务器,所有这个域的信息都是由域的主服务器控制,配置一个域的主服务器需要以下几个步骤:
1. 在bind的主配置文件中注释掉实验不用的部分
2. 在/var/named/中创建该域的zone文件
3. 添加资源记录文件,添加需要的信息
4. 给zone文件相应的权限以及所属用户
5. 启动bind服务或使bind更新配置并查看日志是否正常
6. 使用host或dig命令检测域信息是否正常
配置域主服务器
1. 修改bind主配置文件中添加域 lw.com 的定义:
vim /var/named/named.conf
# 把不需要的注释掉
2. 添加配置文件中的 lwabc.com 的定义:
vim /etc/named.rfc1912.zones
# 我们在最后一行加上lwabc的定义
zone "lwabc.com" IN {
type master;
file "lwabc.com.zone";
};
3. 添加一个资源记录(RR):
zone文件比较复杂,手工输入容易输错,所以一般使用默认named.locahost配置文件作为模板:
[[email protected] ~]# cd /var/named/
[[email protected] named]# cp named.localhost lwabc.com.zone
[[email protected] named]# vim lwabc.com.zone
# 邮件的MX 记录要放在前面
4. 给zone文件相应的权限
[[email protected] named]# chmod 640 lwabc.com.zone
[[email protected] named]# chown :named lwabc.com.zone
5. 启动bind服务或刷新配置
[[email protected] named]# service named start # 启动服务
[[email protected] named]# ss -tunl |grep :53 # 查看端口53是否启动
# 配置发生变化时都要reload,重启或刷新我一般都用service named reload
[[email protected] named]# tail /var/log/messages
使用命令host或dig验证dns配置:
语法:dig - t 资源记录类型 @服务器IP
# 这里暂时没有从服务、缓存服务器、转发服务器和相关ACL的配置。
# 后面的内容是学习笔记,可选择性查看。
定义转发服务器:
注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行:
1.全部转发:凡是对非本机所有负责解析的区域进行请求,统统转发给指定服务器
具体格式:
Options{
forward { first|only }; #添加的时候没有{}
forwarders
};
2.区域转发:仅转发对特定区域的请求至某服务器:
具体格式:
zone "ZONE-NAME" IN {
type forward;
forward { first|only }; # 添加的时候没有{}
forwarders { 主机名或IP }; # 添加的时候有{}
};
bind中基础安全相关配置;
acl: 把一个或多个主机归并为一个集合,并进行一个统一的名称调用:
acl acl_name {
ip;
ip;
net/prelen;
};
示例:
acl mynet {
192.168.0.0/24
};
bind中有四个内置的acl:
none: 没有一个主机
any: 任意主机
local :本机
localnet: 本机的IP同掩码运算后得到的网络地址