搭建DNS服务器

你的名字 2022-05-17 13:16 486阅读 0赞

简介

这里通过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关了

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

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

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

  1. yum install bind -y
  2. yum install bind-utils -y

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

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

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

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

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

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

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

  1. $TTL 1D
  2. @ IN SOA ns1.ice.cube.com. admin.ice.cube.com. (
  3. 12 ; serial
  4. 1D ; refresh
  5. 1H ; retry
  6. 1W ; expire
  7. 3H ) ; minimum
  8. IN NS ns1
  9. ns1 IN A 192.168.253.128
  10. www IN A 192.168.253.129
  11. web IN CNAME www

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

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

第四步,检查配置文件

检查主配置文件
named-checkconf

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

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

第五步,启动并测试

  1. 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文件中添加

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

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

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

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

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

第三步,检查配置文件

检查主配置文件
named-checkconf

检查区域文件
命令为

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

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

  1. rndc reload

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

搭建主从服务器

实验环境

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

实验之前关闭防火墙和selinux

  1. /etc/init.d/iptables stop
  2. setenforce 0

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

  1. yum install bind bind-utils -y

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

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

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

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

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

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

将主服务器重启一下

  1. 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

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

然后重载服务

  1. rndc reload

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

  1. yum install bind bind-utils -y

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

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

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

  1. zone "ops.ice.cube.com" IN {
  2. type master;
  3. file "ops.ice.cube.com.zone";
  4. };

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

  1. $TTL 1D
  2. @ IN SOA ns1.ops.ice.cube.com. admin.ops.ice.cube.com. (
  3. 20180812 ; serial
  4. 1D ; refresh
  5. 1H ; retry
  6. 1W ; expire
  7. 3H ) ; minimum
  8. IN NS ns1
  9. ns1 IN A 192.168.253.158
  10. www IN A 192.168.253.158
  11. web IN CNAME www

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

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

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

  1. systemctl start named

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

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

转发

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

  1. zone "ZONE_NAME" IN {
  2. type forward;
  3. forward {first|only};
  4. forwarders { SERVER_IP; };
  5. };
  6. first:首先转发;转发器不响应时,自行去迭代查询;
  7. only:只转发;

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

  1. options {
  2. ... ...
  3. forward {only|first};
  4. forwarders { SERVER_IP; };
  5. .. ...
  6. };

bind中的安全相关的配置

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

  1. acl acl_name { ip; net/prelen; };
  2. 示例:
  3. 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关了

  1. systemctl stop firewalld
  2. setenforce 0

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

  1. yum install bind -y
  2. yum install bind-utils -y

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

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

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

  1. view internal {
  2. match-clients { 192.168.253.128; };
  3. zone "ice.com" IN {
  4. type master;
  5. file "ice.com/internal";
  6. };
  7. zone "." IN {
  8. type hint;
  9. file "named.ca";
  10. };
  11. };
  12. view external {
  13. match-clients { any; };
  14. zone "ice.com" IN {
  15. type master;
  16. file "ice.com/external";
  17. };
  18. zone "." IN {
  19. type hint;
  20. file "named.ca";
  21. };
  22. };

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

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

  1. $TTL 1D
  2. @ IN SOA ns1.ice.com. admin.ice.com. (
  3. 12 ; serial
  4. 1D ; refresh
  5. 1H ; retry
  6. 1W ; expire
  7. 3H ) ; minimum
  8. IN NS ns1
  9. ns1 IN A 192.168.253.128
  10. www IN A 192.168.253.129
  11. web IN CNAME www

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

  1. $TTL 1D
  2. @ IN SOA ns1.ice.com. admin.ice.com. (
  3. 12 ; serial
  4. 1D ; refresh
  5. 1H ; retry
  6. 1W ; expire
  7. 3H ) ; minimum
  8. IN NS ns1
  9. ns1 IN A 192.168.253.128
  10. www IN A 192.168.253.130
  11. web IN CNAME www

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

  1. [root@localhost named]# named-checkconf
  2. [root@localhost named]# named-checkzone ice.com /var/named/ice.com/internal
  3. zone ice.com/IN: loaded serial 12
  4. OK
  5. [root@localhost named]# named-checkzone ice.com /var/named/ice.com/external
  6. zone ice.com/IN: loaded serial 12
  7. OK

第六步,启动并测试

  1. 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

发表评论

表情:
评论列表 (有 0 条评论,486人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Centos7DNS服务器

    Centos7搭建DNS服务器 Master DNS服务器:主DNS服务器。维护所负责解析的域内解析库服务器;解析库由管理员维护 Slaver DNS服务器:从DNS服务

    相关 dns服务器-域名解析

    1、背景描述 部署的服务,需要用域名访问,在host文件中配置是没有问题,但是如果要是多台电脑去访问,则需要手动去修改所有的host文件,如果哪一天要是添加一个域名,则又

    相关 linux中DNS服务器

    1.DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的“网址”解析为IP地址 正向解析:根据域名(主机名)查找对应的IP地址 反向