搭建DNS服务器

简介

这里通过bind搭建DNS服务,BIND,Berkeley Internet Name Domain,是dns协议的一种实现。运行的进程名称为named,端口默认53。
相关的程序包

  • bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
  • bind-utils:bind客户端程序集,例如dig, host, nslookup等;
  • bind:提供的dns server程序、以及几个常用的测试程序;
  • bind-chroot:选装,让named运行于jail模式

配置解析一个正向区域

实验环境
IP:192.168.253.128
系统:CentOS7

实验开始之前先把防火墙和selinux关了

[root@localhost ~]# systemctl  stop firewalld 
[root@localhost ~]# setenforce  0

配置解析一个正向区域,将www.ice.cube.com域名解析到192.168.253.129上

第一步,安装bind以及测试的工具

yum install bind -y
yum install bind-utils -y

第二步,修改配置文件
在主配置文件/etc/named.conf

listen-on port 53 { 192.168.253.128; };  监听192.168.253.128
...
//allow-query     { localhost; }; ##只允许本机的请求,注释掉此行
...
dnssec-enable no; ##DNS的额外安全设置,这里因为做实验 关闭
dnssec-validation no;##DNS的额外安全设置,这里因为做实验 关闭

在辅助配置文件/etc/named.rfc1912.zones添加区域信息

zone  "ice.cube.com"  IN  {   ##设置ice.cube.com区域
       type  master;        ##设置为主DNS服务器
       file  "ice.cube.com.zone"; ##区域配置文件为ice.cube.com.zone
};

修改/etc/resolv.conf这个文件是设置DNS服务器的

nameserver 192.168.253.128 ##这里IP设置为192.168.253.128(自建DNS服务器的IP,这里是本机IP地址)

第三步,创建/var/named/ice.cube.com.zone

$TTL 1D
@   IN SOA  ns1.ice.cube.com. admin.ice.cube.com. (
                    12  ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
   IN   NS      ns1 
ns1   IN A  192.168.253.128
www   IN A  192.168.253.129
web   IN CNAME  www

创建完成之后修改一下权限

chown .named /var/named/ice.cube.com.zone
chmod 640 /var/named/ice.cube.com.zone

第四步,检查配置文件

检查主配置文件
named-checkconf

检查区域文件
格式为
named-checkzone 区域名称 区域文件
这里的区域为ice.cube.com 区域文件为 /var/named/ice.cube.com.zone
命令为

named-checkzone  ice.cube.com /var/named/ice.cube.com.zone 

第五步,启动并测试

systemctl  start named ##如果是重载配置文件可以使用rndc  reload

这里写图片描述

接下来看看能否正常将www.ice.cube.com解析到192.168.253.129上
这里写图片描述

配置解析一个反向区域

与配置正向区域类似,只是编写的区域文件不同

这里将192.168.253.129反向解析为www.ice.cube.com

第一步,首先定义区域,在/etc/named.rfc1912.zones文件中添加

zone  "253.168.192.in-addr.arpa"  IN  { ##这里的反向解析需要吧ip段反写,比如这里要解析的ip段是192.168.253 则需要写成253.168.192
       type  master; ##设置为主服务器
       file  "253.168.192.in-addr.arpa.zone";##区域文件为为/var/named/253.168.192.in-addr.arpa.zone
};

第二步,然后编写区域文件/var/named/253.168.192.in-addr.arpa.zone

$TTL 3600
@       IN      SOA     ns1.ice.cube.com.  nsadmin.ice.cube.com. (
                   20180812
                         1H
                        10M
                         3D
                        12H )
         IN      NS      ns1.ice.cube.com.
128      IN      PTR     ns1.ice.cube.com. ##PTR表示反向解析记录
129      IN      PTR     www.ice.cube.com.

创建完成之后修改一下配置文件权限

chown .named  /var/named/253.168.192.in-addr.arpa.zone 
chmod 640  /var/named/253.168.192.in-addr.arpa.zone

第三步,检查配置文件

检查主配置文件
named-checkconf

检查区域文件
命令为

named-checkzone 253.168.192.in-addr.arpa.zone /var/named/253.168.192.in-addr.arpa.zone 

第四步,重新载入一下配置文件

rndc reload

第五步,测试一下
dig -x 192.168.253.129
这里写图片描述

搭建主从服务器

实验环境

  • 主服务器 192.168.253.128 系统CentOS7(在之前的基础上进行的)
  • 从服务器 192.168.253.129 系统CentOS6(centos6和centos7都差不多,不影响实验)

实验之前关闭防火墙和selinux

/etc/init.d/iptables stop
setenforce  0

第一步,在从服务器安装bind和测试工具

yum install bind bind-utils -y

第二步,再从服务器上修改配置文件
修改主配置文件/etc/named.conf

listen-on port 53 { 127.0.0.1;192.168.253.129 ; };##多增加一个监听192.168.253.129地址
        //allow-query     { localhost; };##这一项是仅允许本机请求,注释掉
        dnssec-enable no;##dns的安全相关配置,这里先关掉 no
        dnssec-validation no;dns的安全相关配置,这里先关掉 no

第三步,在从服务器。定义一个从区域,修改辅助配置文件/etc/named.rfc1912.zones
增加下面一段

zone  "ice.cube.com"  IN  { ##定义负责解析的从区域为ice.cube.com
       type  slave;    ##表示是从服务器
       file  "slave/ice.cube.com.zone";##这里的区域文件不需要自己再去编写是从主服务器同步过来的。设置同步的路径为slave/ice.cube.com.zone
       masters  { 192.168.253.128; }; ##设置主服务器为192.168.253.128
};

第四步,在主服务器上添加从服务器的记录
在/var/named/ice.cube.com.zone文件中修改,在之前的基础上添加两条记录就可以了

$TTL 1D
@       IN SOA  ns1.ice.cube.com. admin.ice.cube.com. (
                                        15      ; serial ##每次更改这个区域文件这个序列号需要手动加1  没修改之前是14 因为这次修改了于是改成15
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
   IN   NS      ns1
   IN   NS      ns2         ##添加一条NS记录
ns1   IN A  192.168.253.128
ns2   IN A  192.168.253.129 ###指向从服务器
www   IN A  192.168.253.129
web   IN CNAME  www

将主服务器重启一下

systemctl  restart named

第六步,启动从服务器,并测试

dig -t a www.ice.cube.com @192.168.253.129
这里@192.168.253.129 表示向192.168.253.129这台DNS服务器发起请求。
这里写图片描述

可以看到从服务器能解析www.ice.cube.com这个请求说明设置成功了

创建子域

实验环境

  • 192.168.253.128 主服务器(试验环境基于之前做的操作之上)
  • 192.168.253.158 负责解析子域的DNS服务器

先说一个整体思想和过程。到了这一步。我们有一个ice.cube.com的区域。我们现在要在ice.cube.com下创建一个子域,假设我们创建一个ops.ice.cube.com的子域。这个子域有个主机名假设叫www.ops.ice.cube.com。
创建的过程也很简单
第一步:在主服务器上,授权子域
修改区域文件/var/named/ice.cube.com.zone

$TTL 1D
@   IN SOA  ns1.ice.cube.com. admin.ice.cube.com. (
                    19  ; serial ##注意这里每次修改要增加1 否则从服务器无法同步
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
   IN   NS      ns1 
   IN   NS      ns2 
ops   IN    NS      ns1.ops  ##添加一条ops的NS记录
ns1      IN A  192.168.253.128
ns2      IN A  192.168.253.129
ns1.ops  IN A  192.168.253.158##并说明负责ops解析的NS地址
www      IN A  192.168.253.129
web      IN CNAME  www

然后重载服务

rndc reload

第二步:在负责解析子域的服务器安装bind相关程序包

yum install bind bind-utils -y

第三步,在192.168.253.158上修改主配置文件/etc/named.con。

listen-on port 53 { 127.0.0.1;192.168.253.158; };##监听192.168.253.158这个IP收到的请求
//allow-query     { localhost; };##注释这一行
dnssec-enable no;  ##关闭dns的安全相关设置
dnssec-validation no;##关闭dns的安全相关设置

第四步,192.168.253.158上修改辅助配置文件/etc/named.rfc1912.zones,定义区域文件
添加下面几行

zone  "ops.ice.cube.com"  IN  {
       type  master;
       file  "ops.ice.cube.com.zone";
};

第五步,192.168.253.158上创建区域文件/var/named/ops.ice.cube.com.zone
将www.ops.ice.cube.com解析到192.168.253.158上

$TTL 1D
@   IN SOA  ns1.ops.ice.cube.com. admin.ops.ice.cube.com. (
                  20180812  ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
   IN   NS      ns1 
ns1      IN A  192.168.253.158
www      IN A  192.168.253.158
web      IN CNAME  www

创建完成之后修改一下配置文件权限

chown .named  /var/named/ops.ice.cube.com.zone
chmod 640  /var/named/ops.ice.cube.com.zone

第六步,子域服务器上启动并测试

systemctl start named

这里写图片描述
说明192.168.253.158是可以解析子域的

现在看192.168.253.128能否正常解析其子域
这里写图片描述
说明成功了

转发

(1) 区域转发:仅转发对某特定区域的解析请求;

                zone  "ZONE_NAME"  IN {
                    type  forward;
                    forward  {first|only};
                    forwarders  { SERVER_IP; };
                };

                first:首先转发;转发器不响应时,自行去迭代查询;
                only:只转发;

(2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;

                options {
                    ... ...
                    forward  {only|first};
                    forwarders  { SERVER_IP; };
                    .. ...
                };

bind中的安全相关的配置

acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;

            acl  acl_name  {
                ip;
                net/prelen;
            };

示例:
                acl  mynet {
                    192.168.253.0/24;
                    127.0.0.0/8;
                };

bind有四个内置的acl

  • none:没有一个主机;
  • any:任意主机;
  • local:本机;
  • localnet:本机所在的IP所属的网络;

访问控制指令

  • allow-query {}; 允许查询的主机;白名单;
  • allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
  • allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
  • allow-update {}; DDNS,允许动态更新区域数据库文件中内容;

智能DNS

能自动判断访问者的IP地址并解析出对应的IP地址,使网通用户会访问到网通服务器,电信用户会访问到电信服务器。

实验内容;
来源为192.168.253.128的ip,访问www.ice.com域的时候,解析为192.168.253.130
其他的ip,访问www.ice.com域的时候,解析为192.168.253.129

实验环境:
IP:192.168.253.128
系统:centos7

实验开始之前先把防火墙和selinux关了

systemctl  stop firewalld 
setenforce  0

第一步,安装bind以及测试的工具

yum install bind -y
yum install bind-utils -y

第二步,修改主配置文件
在主配置文件/etc/named.conf


listen-on port 53 { 192.168.253.128; }; ##这里修改为智能DNS服务器地址
//allow-query     { localhost; };##注释这行不然会只接受本机的请求
dnssec-enable no;  ##dns安全的额外配置。这里直接先关了
dnssec-validation no;##dns安全的额外配置。这里直接先关了
//include "/etc/named.rfc1912.zones"; ##注释这行,不然会报错。因为使用了视图所有的zone必须在视图里面
include "/etc/view.conf"; ##这里是自定义的视图配置文件。等等我们会创建

第三步,创建视图的配置文件/etc/view.conf(这个是自定义的方便管理)

view internal  {          
    match-clients { 192.168.253.128; };
    zone "ice.com"  IN {
        type master;
        file  "ice.com/internal";
};
    zone "." IN {
        type hint;
        file "named.ca";
};
};

view external {
    match-clients { any; };
    zone "ice.com" IN {
        type master;
        file "ice.com/external";
};
    zone "." IN {
        type hint;
        file "named.ca";
};
};

第四步,编写/var/named/ice.com/external与/var/named/ice.com/internal这两个区域文件
创建目录先
mkdir /var/named/ice.com

下面是/var/named/ice.com/external文件

$TTL 1D
@   IN SOA  ns1.ice.com. admin.ice.com. (
                    12  ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
      IN    NS      ns1 
ns1   IN A  192.168.253.128
www   IN A  192.168.253.129
web   IN CNAME  www

下面是/var/named/ice.com/internal文件

$TTL 1D
@   IN SOA  ns1.ice.com. admin.ice.com. (
                    12  ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
      IN    NS      ns1 
ns1   IN A  192.168.253.128
www   IN A  192.168.253.130
web   IN CNAME  www

第五步检查配置文件和区域

[root@localhost named]# named-checkconf 
[root@localhost named]# named-checkzone  ice.com /var/named/ice.com/internal 
zone ice.com/IN: loaded serial 12
OK
[root@localhost named]# named-checkzone  ice.com /var/named/ice.com/external 
zone ice.com/IN: loaded serial 12
OK

第六步,启动并测试

systemctl start named

在192.168.253.128服务器上执行
dig -t a www.ice.com @192.168.253.128
这里写图片描述

在192.168.283.129服务器上运行dig -t a www.ice.com @192.168.253.128
这里写图片描述

从两幅图结果可以看到了192.168.253.128解析www.ice.com的时候解析到了192.168.253.130
而192.168.253.129请求解析的时候解析到了192.168.253.129从而实现了智能DNS

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值