1. 测试环境:Centos 6.9
虚拟主机中安装
软件BIND
2.DNS原理:
域名解析主要有三种方法:
1). host表用在本机上面hosts
2). NIS(网络信息服务)主要用在小型网络,并且已经大部分不在使用
3).DNS域名服务 分层的分布式数据库来处理IP地址和域名的转换。
DNS组成:DNS域名空进+DNS服务器+解析器
解析过程:
1)本地解析(使用之前的缓存信息,或者本地HOSTS文件)
2)直接解析(直接有所设定的DNS服务器解析)
3)递归查询(由DNS服务器代表客户机向其他DNS 服务器查询)
4)迭代查询(DNS向客户机返回一个可以解析的其他DNS服务器)
3.软件的安装
yum install -y bind
rpm -ql bind
查看没有安装
4.安装后主要文件
/etc/named #named目录
/etc/named.conf #主配置文件
/etc/rc.d/init.d/named #BIND开机自动时启动的脚本
/usr/sbin/named #named进程程序文件
/usr/sbin/rndc #远程控制named进程的工具
/usr/sbin/rndc-confgen #产生rndc密钥的工具
/usr/share/doc/bind-9.8.2 # 帮助文档和例子文件
/usr/share/man/man5/ #手册
/usr/share/man/man8/#手册
/var/named # Bind配置文件的默认存放目录
/var/run/named #named进程PID文件存放的目录
5.Bind的配置文件
(bind的配置比较复杂)Bind的配置文件需要根据实际情况才能正常运行,否则无法正常启动bind。下面以一个简单实例说明具体的配置方法:
第一步是主配置文件named.conf(在/etc/下面)
第二步辅助配置文件named.rfc1912.zones在/etc/下面)
上面的文件都在/etc/下面,在修改时候可以备份好之前的默认文件。
第三步 在/var/named/下面
cp -p named.localhost named.benet.com
cp -p named.localhost named.197.168.192.zone
先复制出两个我们需要设置的正向和反向解析文件然后编辑:
named.benet.com正向解析文件 named.197.168.192.zone反向解析文件第一个是正向解析的文件
第二个是反向解析的文件
配置文件都写好之后可以测试启动:
/usr/sbin/named -g &(-g的功能是显示启动的过程,可以方便查看是否有报错)
到此四个配置文件已经完成,当我启动和测试时候出现了下面几种错误:
1.)这个是没有删除主配置文件中关于IPv6的内容导致
关于IPv6的报错
2.)解析不出来,解析出来的是其他地址,这个是设置的默认DNS不是我们设置服务器
无法正确解析需要设置主机的DNS之后在测试(windows下的修改界面)
windows修改默认DNSvim /etc/sysconfig/network-scripts/ifcfg-eth0
(linux下修改)
linux修改默认的DNS
按照自己主机信息修改上图的IP和DNS
3.)下面启动报错的原因为,文件和目录的权限导致的故障,修改配置的几个文件和上图红色的部分的权限为777.故障消失
权限问题导致的故障4.)做了如上操作还是不能解析 查看防火墙是否关闭
关闭防火墙6.测试
结果如下图正常解析出来。但是反向解析出现了报错原因没有找到。日志如下:
正向解析 反向解析 这个报错有点类似 IPv6原因未知7.Chroot功能和rndc(控制域名服务的远程控制工具)
Chroot可以将文件系统中的某个特定的子目录作为进程的虚拟主目录。使用此功能注意是从安全运行,对系统入侵攻击的负面影响降到最低
安装:yum install -y bind-chroot
会出现一个新的目录/var/named/chroot并且安装之后/etc/ /dev /var的相关配置文件都会被复制到此目录下面。后续修改配置时需要主机目录位置。
Rndc:rndc-confgen 生成密钥和相应的配置文件。然后写入配置文件rndc和named.conf文件中,但是我在测试时候,没有生成出来。
第二天测试又成功,将前两个放到rndc.conf中 第一和第三个放到named.conf 可以修改allow中的内容,让其他主机可以远程控制rndc。
8.BIND的详细配置
主配置语句名称:
acl:定义一个命名的访问列表(包含一些IP表示的主机)可以在语句使用,表示所定义的主机。(none、any、localhost(本地网络接口IP)、localnets(本地子网IP))
Controls:定义有关本地域名服务操作控制通道,被rndc用来发送控制命令。(如上面图片的第三个红色红框的内容)
Include:把另一个文件的内容包含进来。
Key:定义一个密钥,用于TSIG授权和认证(如上面图片的第一个红框的内容)
Logging:有关日志文件的配置
Option:有关全局的选项(directory指定工作目录,pip-file设定进程PID文件的路径名,forwarders设定转发使用的IP地址,allow-query设定DNS服务器为哪些用户提供DNS查询服务)
Server:定义与远程服务器交互的规则(可以定义是主域名还是辅助域名,以及与其他域名使用什么密钥通信,和zone中type类型有类似功能)
trusted-keys:定义DNSSEC安全根的trusted-keys(不是太明白)
View:定义视图功能,可以根据客户端的不同有区别的回答DNS
Zone:定义DNS服务器所管理的区(type:Master/Slave/Stub/forwarder/Hint定义一套最新的根DNS服务器地址)
9.根服务器文件named.root
相当于默认named.conf中的zone定义的’.’也就是区文件/var/named目录下named.ca文件
可以使用dig列出最新的根服务器
关于区域数据文件上面已经说明:named.benet.com(正向)
$TTL 设置其他DNS服务器缓存本机数据的默认时间SOA设置起始授权机构
NS 定义某个域由哪个服务器解析MX邮件资源记录指定发往某个域的邮件由那个邮件服务器负责A域名对应的IP地址CNAME别名允许几个名称指向同一个服务器。
Named.197.168.192通过in-addr.arpa域和PTR记录实现
10.DNS负载均衡
关于负载均衡的概念可以查看http://www.jianshu.com/p/811e8a8e5616,
在区域文件中有两种写法:
IN MX 10 mail.example.com
IN MX 10 mail1.example.com
IN MX 10 mail2.example.com
........
Mail IN A 192.168.0.4
Mail IN A 192.168.0.5
Mail IN A 192.168.0.6
或者
IN MX 10 mail.example.com
....
Mial IN A 192.168.0.4
IN A 192.168.0.5
IN A 192.168.0.6
11.直接域名、泛域名、子域
DNS服务器可以直接解析的域名,直接域名 benet.com. IN A 192.168.0.12
域名下所有的主机和子域名都解析到同一个IP地址*.benet.com IN A 192.168.0.12
Benet.com是顶级域名 则dean.benet.com就是一个子域名(二级域名)
$ORIGIN dean.benet.com (就是一个子域)
Mail IN A 192.168.0.3
12.辅助域名服务器和只缓存服务器
辅助域名服务器:顾名思义用来辅助主服务器,配置和主服务器大致相同但是需要修改几个地方:
1 主配置文件 设置转发功能 forwarders,也可以设置server
2 辅助配置文件named.rfc1912.zones 中zone中type 改为slave,增加masters(设置主域名服务器地址)
3 主服务器中zone 增加allow-transfer表示允许向某一个传送数据文件
只缓存服务器:类似于代理服务器,本身不管理区域,将所有查询提交给其他DNS服务器处理,并可以将结果缓存下来,当下次再有客户机使用时候可以直接使用缓存。
在主配置文件增加:forwarders(转发到其他服务器)forwarder only(只转发)
zone之类都不在需要设置。只需要option和logging就可以了。
网友评论