一:简介DNS
DNS(Domain Name System,域名系统)
- 域名和IP地址相互映射的一个分布式数据库,通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析。而DNS的主要作用就是域名解析,将主机名解析成IP地址。DNS这种机制能够完成从域名(FQDN)到主机识别IP地址之间的转换。
查询类型
- 递归查询:一般是客户机与服务器之间的查询即客户机只发送一次请求,其他的工作将有上层服务器去解决,最后一层一层地反馈结果到客户端。
- 迭代查询:迭代查询一般是DNS服务器与DNS服务器之间的查询,即最开始的DNS服务器负责发起请求,其他涉及到的DNS服务器只负责响应即可,然后一直查找到目标DNS服务器,并将结果返回给客户端。
主从DNS服务器
- DNS也是一个网络服务,因此就有对应的端口号,其端口号为53号,通常DNS在查询时是以UDP/53来查询,而在主从同步时是以TCP/53来同步。为了克服网络中的单点故障问题,DNS服务器一般会有主DNS服务器与从DNS服务器。
- 主DNS服务器:管理和维护所负责解析的域内解析库的服务器
- 从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
DNS的实现工具
- DNS是一种机制,一种协议,实现这种机制的常用工具为bind, BekerleyInternatName Domain, ISC (www.isc.org),目前为使用最广泛的DNS服务器软件。
DNS的配置文件主要有:
- /etc/named.conf ,/etc/named.rfc1912,zones;DNS的主配置文件;
- /var/named;该目录为DNS数据库文件存放的目录,每一个与文件都存放在这里;
- /etc/rc.d/init.d/named;为DNS服务的服务脚本
rndc
- 一台物理服务器可同时为多个区域提供解析,并且该DNS服务器上必须要有根区域文件named.ca;
- rndc(remote name domain controller)服务可为DNS提供辅助性的管理功能,该服务监听在主机TCP的953号端口,默认与bind安装在同一主机上,且只能通过127.0.0.1来连接DNS服务的named进程。
二:主DNS服务器的配置
(这里我是在centos7上配置DNS,centos6作为测试)
1:安装DNS的服务器软件bind
yum -y install bind
查看端口
关闭防火墙并设置为开机不允许启动
centos6的设置为:
iptables -Fchkconfig iptables off
chkconfig --list iptables
#查看防火墙状态
centos7的设置为:
systemctl is-enables firewall
#查看防火墙是否开启
systemctl disable firewall
启动named服务
systemctl start named
2、目的:在当前的DNS搭建一个域,使其能解析cxj.com域。
创建域
<1>首先编辑/etc/named.conf文件,本文以添加cxj.com域为例。
在修改/etc/named.conf文件时,最好先备份:
cp -p /etc/named.conf /etc/named.conf.bak
vim /etc/named.conf
options {listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
allow-query { localhost; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
此配置文件中常见的修改选项:
listen-on port 53 { localhost; };
localhost:相当于一个变量,代表本机所有IP
allow-query { localhost; };
只允许本机查询
allow-query { any; }; any
表示任何主机,也可写成一个网段
<2> 创建域zone数据库文件 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone;
zone "ZONE_NAME" IN {};
其中zone的格式为:
zone "ZONE_NAME" IN {type{master|slave|hint|forward};file "ZONE_NAME.zone";};
type: 该zone的类型,主要类型有:
hint:根
master:主DNS
slave: 从DNS
forward: 专用于转发
创建zone:
vim /etc/named.rfc1912.zones
<2>创建zone的数据库文件:
<3> 修改解析库文件的属主属组并重启DNS服务
[root@centos7 /var/named]#chown named.named cxj.com.zone
[root@centos7 /var/named]#chmod 640 cxj.com.zone
[root@centos7 /var/named]#systemctl restart named
Stopping named: . [ OK ]
Starting named: [ OK ]
<4>如果没有报错信息,则说明配置正常,若有相关报错,则查看系统日志/var/log/messages. 也可进行语法检测:
[root@centos7 ~]# named-checkconf
[root@centos7 ~]# named-checkzone "cxj.com"
/var/named/cxj.com.zone zone cxj.com/IN: loaded serial 20170728
OK
<5> 重载主配置文件和区域解析库文件
rndc reload
3:在centos6上测试一下
三:步骤总结
1、安装DNS的服务器软件bind
yum -y install bind
开启服务:`systemctl start named`
2、修改/etc/named.conf文件
listen-on port 53 {localhost; };allow-query {any; };
3、编辑/etc/named.rfc1912.zones文件,添加
zone "cxj.com"
{type master;
file "cxj.com.zone";
}
4、创建区域数据库文件vim /var/named/cxj.com.zone
$TTL 1D
@ IN SOA ns.cxj.com dnsadmin.cxj.com
(
20170728 ;serial
10M ;refresh
3M ;retry
1D ;expire
3D ) ;mininum
NS ns
ns A 192.168.59.128
www CNAME websrv
websrv A 1.1.1.2
ftpsrv A 2.2.2.2
5、语法检查
主配置文件语法检查:named-checkconf
解析库文件语法检查:named-checkzone "cxj.com" /var/named/cxj.com.zone
重载主配置文件和区域解析库文件:rndc reload
6:测试
[root@centos6 ~]# dig websrv.cxj.com @192.168.59.128