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

# 把不需要的注释掉

BIND

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

BIND                      

# 邮件的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

BIND

BIND

# 这里暂时没有从服务、缓存服务器、转发服务器和相关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同掩码运算后得到的网络地址