域名系统
(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
下边以使用最为广泛的BIND软件来说明DNS在Centos7中的基本配置:
这里将用到三台centos7.x的虚机来配置实现DNS的正向解析,反向解析,主从配置,子域授权以及基本的安全控制配置等功能。
用到的三台服务器安装完毕后都先要关闭firewalld服务和selinux功能,其IP的相关配置为:
A:192.168.0.108 这里我将用这台主机做为正向解析的主DNS服务器,反向解析的从DNS服务器
B:192.168.0.106 做为正向解析的从DNS服务器,反向解析的主DNS服务器
C:192.168.0.107 做为子域
三台主机都通过yum安装好BIND,开始配置:
准备工作:三台主机的BIND安装后都需要将主配置文件/etc/named.conf中的option段中的默认字段做出修改:
后边的配置都以我刚申请的新域名mengxl.com做出说明
配置正向解析(在192.168.0.108主机上配置):
(1)定义区域:
在主配置文件中或主配置文件辅助配置文件中配置,这里使用主配置文件的包含文件/etc/named.rfc1912.zones配置,在文件的底部加入下面几行:
zone "mengxl.com" IN {
type master;
file "mengxl.com.zone";
allow-update { none; };
};
(2)建立区域数据文件:
在/var/named目录下创建文件mengxl.com.zone,文件名要与配置文件指定的文件名相同,文件内容为:
(3)修改配置好的区域数据文件/var/named/mengxl.com.zone的权限和数组
chown :named /var/named/mengxl.com.zone
chmod o= /var/named/mengxl.com.zone
(4)检查配置文件及区域数据文件的语法错误
named-checkconf
named-checkzone mengxl.com /var/named/mengxl.com.zone
(5)语法无误后让服务器重载配置文件和区域数据文件
rndc reload或者 systemctl reload named
至此,DNS服务的正向区域配置完毕,我们可以用dig工具来测试配置是否已经生效
配置反向解析(用192.168.0.106主机配置)
(1)定义区域
在主配置文件或主配置文件的辅助配置文件中配置,这里在辅助文件/etc/named.rfc1912.zones中配置,添加下面几行:
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.zone";
allow-update { none; };
}; 注意,反向区域的区域名字书写格式;
(2)定义区域解析库文件(主要记录为PTR)
其新建位置为/var/named/192.168.0.zone文件,内容如下:
一下步骤跟配置正向解析时相同了
(3)修改配置好的区域数据文件/var/named/192.168.0.zone的权限和数组
chown :named /var/named/192.168.0.zone
chmod o= /var/named/192.168.0.zone
(4)检查配置文件及区域数据文件的语法错误
named-checkconf
named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.zone
(5)语法无误后让服务器重载配置文件和区域数据文件
rndc reload或者 systemctl reload named
至此,反向解析区域配置完成;
DNS主从配置
192.168.0.108为正向解析mengxl.com的主服务器,192.168.0.106为其从服务器;
192.168.0.106为反向解析0.168.192.in-addr.arpa的主服务器,而192.168.0.108为其从服务器;
注意:配置主从时, 确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址;
(1)首先配置正向解析的从服务器,即在192.168.0.106上进行配置,在/etc/named.rfc1912.zones中加入下面几行:
zone "mengxl.com" IN {
type slave;
file "slaves/mengxl.com.zone";
masters { 192.168.0.108; };
};
注意,该区域文件同步到从服务器的/var/named/slaves目录下,查看该目录权限可以看到named用户在该目录下有写权限,而其他文件的属主为root,named用户没有写权限;
(2)检查配置文件语法,重载配置使修改生效;
named-checkconf
rndc reload或者systemctl reload named
正向解析的从机配置完成
(3)配置反向解析,在192.168.0.108主机上配置,在/etc/named.rfc1912.zones中加入下边几行:
zone "0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.0.zone";
masters { 192.168.0.106; };
};
(2)检查配置文件语法,重载配置使修改生效;
named-checkconf
rndc reload或者systemctl reload named
反向解析的从机配置完成
注意,做主从配置时,要确保两台服务器的时间必须同步。
DNS子域授权
这里只对正向解析子域授权做出简单介绍:
(1)首先要在父域主服务的配置文件中添加子域的相关记录,这里以子域ops.mengxl.com为例,在父域主服务器的域数据文件/var/named/mengxl.com.zone中添加NS和其A记录;
(2)配置子域服务器(192.168.0.107),配置过程与父域的正向解析配置过程相同,这里就不做过多表述:
这里只贴出子域的数据配置文件/var/named/ops.mengxl.com.zone的内容:
配置完子域后,我们可以发现子域可以直接解析其所负责的域名解析(如www.ops.mengxl.com),而不能直接解析父域的域名(如:www.mengxl.com)需要寻找根进行迭代查询,这是我们所不想的,这就需要进行转发了
(1)区域转发配置:仅对特定的区域进行转发,这里配置对子域对父域的解析请求转发个父域主DNS进行解析
在192.168.0.107的/etc/named.rfc1912.zones配置文件中添加下边一段
zone "mengxl.com" IN {
type forward;
forward only;
forwarders { 192.168.0.106; 192.168.0.108; };
};
这样,子域对父域的相关解析就会直接转发到父域的DNS服务器进行解析了
注意,配置的转发器必须允许对当前主机进行递归查询
(2)全局转发配置,针对凡本地没有通过zond定义的区域查询请求,全部转给某转发器;
此配置需要在/etc/named.conf中的option字段中加入下边两段:
forward {only|first}; //only表示只是转发给指定DNS转发服务器等待查询结果;first表示首先转发,没响应则进行迭代查询;
forwarders { SERVER_IP; }; //SERVER_IP指转发器的IP地址;
bind中的安全配置,按需求在每台DNS主机中进行配置
dns配置文件中主要依靠acl访问控制列表与访问控制指令来进行安全限制了:
acl:就是访问控制列表,把一个或多个地址归并为一个命名的集合,随后通过此名称即可对此集合内的所有主机进行统一的访问控制了;
一般在/etc/named.conf主配置文件的options字段的外部上边进行定义
如:acl mynet {
192.168.0.0/24;
127.0.0.1/8;
};
在bind中内置4个acl:
none:没有一个主机;
any:任意主机;
local:本机;
localnet:本机所在的IP所属的网络;
注意,此处定义中,可以是ip地址,也可以是网段,子网掩码表示时只能是/数字格式;
dns配置文件中的访问控制指令,主要有下边几个:
allow-query {}; 允许查询的主机,白名单;
allow-transfer {}; 允许向哪些主机做区域传送,默认为所有主机,应该配置为仅允许从服务器;
allow-recursion {}; 允许哪些主机向当前DNS服务器发起递归查询请求;默认为允许所有,请按需求进行配置
allow-update {}; DDNS,允许动态跟新区域数据库文件中的内容;没有相关功能需求,最好都设置为allow-update { none; };
注意,该访问控制,可以写入区域定义中,只对指定区域生效,也可以定义到options的字段中,对所有的区域生效;
如:在192.168.0.108中设置,只允许本机与从机进行正向解析的区域传送:
先在主配置文件/etc/named.conf中配置acl
acl slaves {
192.168.0.106;
127.0.0.1;
};
然后在/etc/named.rfc1912.zones中的mengxl.com的区域定义段中加入控制字段;
zone "mengxl.com" IN {
type master;
file "mengxl.com.zone";
allow-update { none; };
allow-transfer { slaves; };
};
修改完配置文件要进行语法检查及重载配置文件。
转载于:https://blog.51cto.com/amengmon/1733494