Linux中通常使用bind来实现DNS服务器的架设
安装DNS服务软件Bind和相应工具包
named.ca文件必须存在,否则不能启动服务 。此文件是根服务器资源记录。
bind主配置文件为/etc/named.conf
主配置文件语法检查命令
以域名hunk.tech为例配置一个DNS服务器
所谓的正向区域,指的是 FQDN > IP 转换
1./etc/named.rfc1912.zones文件,添加一个区域
2.在主配置文件中定义的全局中directory设置参数的目录中创建该区域数据库文件
3.在建该区域数据库文件定义资源记录
4.区域添加好后,使用区域库命令检查:
5.重新加载数据库信息
所谓的反向区域,指的是 IP > FQDN 转换
专业名词:PTR
1./etc/named.rfc1912.zones文件,添加一个PTR区域
区域名称:网络地址反写.in-addr.arpa.
比如:
172.16.100. --> 100.16.172.in-addr.arpa.
2.在主配置文件中定义的全局设置中/var/named的目录中创建该区域数据库文件
所属组必须为named,且权限为640安全。所以建议复制一个原有的模板进行修改。
必须加-p保留原有权限属性,
通常在应用中,DNS的反向解析并不是很重要,可以不配置,当服务器中有域名作为邮件服务器时,此时可以配置反向解析,
因为邮件中过滤垃圾邮件的技术通常是解析邮箱地址,如果IP地址不能反解成一个域名则视为垃圾邮件。
DNS查询中出现aa标记的话,就是权威查询,也就是说,查询的资源记录就是在那台DNS服务器直接查出来,而不是通过其他DNS查询。
是相对父域来说的,指域名中的每一个段。各子域之间用小数点分隔开。放在域名最后的子域称为最高级子域,或称为一级域,在它前面的子域称为二级域。
实现子域的几个方法:

注意:被转发的服务器需要能够为请求者做递归,否则转发请求不予进行。在主配置文件中定义以下:
注意:关闭dnssec功能:
(1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器
(2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高
转发选项:
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是迭代查询
这里的ACL可别与之前学习的文件ACL权限混淆哦,当然,这也是bind安全管理的方法.
把一个或多个地址归并为一个集合,并通过一个统一的名称调用
与之前的shell编程中的函数一样,把一条命令或多条命令放在一个函数体内,以后要用的时候,调用名称即可。
bind有四个内置的ACL
实现的基础就是view视图
view是BIND9强大的新功能,允许名称服务器根据询问者的不同有区别的回答DNS查询。特别是当运行拆分DNS设置而不需要运行多个服务器时特别有用。
每个视图定义了一个将会在用户的子集中见到的DNS名称空间。
注意:
以下用一个实例来看ACL与view的搭配使用吧。不同地址解析不同的IP,即智能DNS
找一台192网段的主机进行测试
从日志可以看出来查询匹配了view规则net_192
client 192.168.4.207#44511: view net_192: query: www.hunk.tech IN A +E (192.168.4.200)
找一台172网段的主机进行测试
从日志可以看出来查询匹配了view规则net_172
client 172.18.103.222#51655: view net_172: query: www.hunk.tech IN A +E (172.18.103.226)
在本机使用127.0.0.1地址进行测试
从日志可以看出来查询匹配了view规则net_other
client 127.0.0.1#43506: view net_other: query: www.hunk.tech IN A + (127.0.0.1)
至此,智能DNS范例已经完成。如果想获取更新实际中的IP段,可以根据这个脚本实现。
<a href="https://www.centos.bz/2012/02/automatic-get-unicom-chinanet-new-ip-ranges/">联通电信最新IP网段</a>
chroot是Linux系统对应用程序的一种安全约束机制。在应用程序执行了chroot系统调用后,它的执行被限定到chroot后的目录下。这样操作后,在最差的情况下,如果BIND被入侵了,那么黑客所拿到的目录权限会被限制到chroot后的目录,不会对系统的其他文件造成泄露或者被恶意修改。
本文转自 ljpwinxp 51CTO博客,原文链接:http://blog.51cto.com/191226139/2063287