引入DNS软件:
Bind:Berkey Information Name Domain 对数据库的支持不太好,不支持多线程
PowerDNS 性能强大 速  度块
Bind软件的配置使用
yum list all bind* 
为了学习方便,在此配置使用中,我们使用Bind97
配置软件的简介:bind97.i386 (必安装) 是服务器端包,此包如果不装DNS服务器的话,一般是不安装的。
bind97-chroot.i386    chroot:切换根目录  为什么要在bind运行的时候切换根目录呢?这是为了系统安全考虑的。
bind97-libs    必安装
bind97-utils bind97的工具包 必安装  
为了防止以后软件使用冲突,先去卸载老的bind包,bind-libs和bind-utils  
rpm -e bind-libs bind-utils  卸载包
yum install bind97-libs bind97-utils  -y  安装新版本的bind包
yum install bind97 安装服务器端安装包
Bind安装完成后生成的三个客户端工具:dig, host, nslookup
dig -t A www1.example.com @192.168.0.254  正向查询www1.example.com的IP地址
dig -x PTR 192.168.0.101 @192.168.0.254   反向查询192.168.0.101的主机名
dig -t NS example.com @192.168.0.254      查看www1.example.com的域名服务器
dig -t SOA example.com @192.168.0.254     
dig -t MX example.com @192.168.0.254
vim /etc/resolv.conf中定义DNS服务器地址
host的用法:
host -t A wwwl.example.com 查看IP地址
host -t PTR 192.168.0.101 查看主机名
...
nslookup的用法
nslookup命令,windows和linux都支持。
nslookup
server DNS_ADDR
set type-A  查看主机的IP地址
q=PTR   查看主机名
q=MX   邮件服务器
Bind97服务器端安装后生成的主要文件:
配置文件:/etc/named
/etc/named.conf  主配置文件,很关键的
/etc/rndc.conf
/etc/rndc.key
rndc:Remote Name Domain Controller 远程名称服务控制器,即为远程登陆管理DNS服务器Bind的客户端工具。
涉及到安全性,并不是所有的rndc客户端都可以登陆DNS服务器上进行管理的,要是登陆的话是需要提供key的,双方是一对密钥,只要当密钥匹配时,才能发起控制命令。而且rndc默认情况下为了安全起见,在安装上去后只工作在TCP/127.0.0.1上的953端口上
bind:服务器端运行的执行程序就是/usr/sbin/named
/usr/sbin/named-checkconf   检查主配置文件的语法正确性
/usr/sbin/named-checkzone   检查区域文件中是不是有语法错误    这两个很常用
主配置文件:/etc/named.conf 由于主配置文件至关重要,因此它的权限是定义:(640, owner:root, group:named)
Bind的工作目录:/var/named     区域数据文件存储路径
默认情况下,我们用rpm包安装的Bind,他所要去找自己的区域数据路径的时候都到这个文件中寻找
区域文件:/etc/named.xxx.zones
DNS服务器的角色:
主DNS
辅DNS
缓存DNS:应该有:
 根区域:标明根服务器在什么位置
 本地正向区域:localhost --> 127.0.0.1
 本地反向区域:127.0.0.1--> localhost
缓存DNS:不为任何区域提供解析,但是可以将用户的请求转发到其他主机上,并将结果先缓存到本地,也就意味着任何客户端向我们发起查询请求的时候,我们要向根转发,因此我们需要一个根区域,标明根服务器在什么地方。
现在详细介绍一下我们的主配置文件都包含神马东东:
主配置文件:/etc/named.conf
这个主配置文件主要有两段组成: 
1.全局选项段                   #全局选项段只有一个
options {
listen-on port 53 { 0.0.0.0 };    #表监听所有端口
// listen-on-v6 port 53 { ::1: };   #在conf 文件中注释采用C风格“//”  “/*...*/
directory       "/var/named";      #用于定义工作目录的,这是最重要的一项,
dump-file      "/var/named/data/cache_dump.db";  #用来做转储的存放位置
statistics-file  "/var/named/data/named_stats.txt"; #统计数据的存放位置
memstatistcs-file  "/var/named/data/named_men_stats.txt";  #内存统计的存放位置
allow-query   [ localhost ];   #允许谁查询
};
2.区域声明端:                 #区域声明段可以有多个
zone "zone_NAME" IN {
type  区域类型 ;                #区域类型
file "xxx.zone";
};
区域类型:
master 主区域类型
slave  从区域类型
hint   根提示区域
forward 转发区域 
反向区域的区域名称:都是以这个域内所有主机的IP地址的网络地址(而且还是反过来写)
eg:172.16.100.1-->16.172.in-addr.arpa
反向区域中,PTR记录的”name"是IP地址剩余的部分反过来写,即所谓的主机地址
实验:定制一个适合自身使用的简单DNS缓存服务器:
实验平台:用 cat /etc/issue查看实验平台版本
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
内核版本:2.6.18-308.el5
1. mv /etc/named.conf /etc/named.conf.origin
vim /etc/named.conf
  1. options {
  2. directory "/var/named";
  3. };
  4. zone "." IN {
  5. type hint;
  6. file "named.ca";
  7. };
  8. zone "localhost" IN {
  9. type master;
  10. file "localhost.zone";
  11. };
  12. zone "0.0.127.in-addr-arpa" IN {
  13. type master;
  14. file "127.0.0.zone";
  15. };
说明:由于DNS服务的安全性至关重要,其他用户没有任何的权限来查看读写named.conf的配置文件,因此我们要修改相应的权限:
chmod 640 /etc/named.conf    #改变其他用户的权限
chown :named /etc/named.conf  #改变其属组
2.建立正向和反向区域数据文件            #区域数据文件里面都是资源记录和宏定义
由于我们使用的是相对路径,因此我们在/var目录下建立即可
cd /var
vim localhost.zone      #建立正向区域数据文件
  1. $TTL 86400
  2. $ORIGIN nagedu.com.   定义了我们这个区域的名称附加后缀是什么
  3. #在区域文件中,只要想引用当前区域的名字,我们可以用@来表示,当然你也可以直接写出来
  4. #在区域文件中,第一条资源记录必须是SOA类型。
  5. @           IN          SOA         localhost.          admin.localhost. (
  6. 2012102101
  7. 1H
  8. 5M
  9. 7D
  10. 1D )
  11. #第二条记录通常都是NS记录,即当前域的域名服务器
  12. @           IN          NS          localhost.
  13. localhost.  IN          A           127.0.0.1
  14. #保存
vim 127.0.0.zone #建立反向区域数据文件
  1. @           IN          SOA         localhost.          admin.localhost. (
  2. 2012102101
  3. 1H
  4. 5M
  5. 7D
  6. 1D )
  7. IN          NS          localhost.
  8. 1           IN          PTR         localhost.
  9. #保存退出
修改两个文件的权限
chmod 640 127.0.0.zone localhost.zone
chown :named 127.0.0.zone localhost.zone
检查配置文件语法和区域文件有无异常:
1.检查配置文件的语法: named-checconf
2.检查区域文件:named-checkzone 要先指定区域,再指定区域文件是什么。
named-checkzone "localhost" /var/named/localhost.zone
named-checkzone "0.0.127.in-addr-arpa" /var/named/127.0.0.zone
3.当上述都确保没有问题后,重启服务
service named start

4.启动后观察端口是否启用:netstat -tunlp | grep 53

注释:我在重启服务后出现了这样的情况:

其解决方案是:

这个原理我还不太清楚,稍后我会补加上来。

转载于:https://blog.51cto.com/inspriion/1033017

DNS浅析-Bind软件的使用及搭建一个简单的DNS缓存服务器相关推荐

  1. 自己动手搭建一个简单的静态资源服务器

    文章目录 自己动手搭建一个简单的静态资源服务器 介绍 一.设计到的模块 备注: 二.代码结构 三.具体代码 自己动手搭建一个简单的静态资源服务器 介绍 ​ 通过此文章的学习,可以自己使用NodeJs搭 ...

  2. Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)

    文章目录 Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播) 一.基础环境搭建 二.构建Nginx 下载nginx-rtmp-module 安装Nginx 编译nginx,代理 ...

  3. 用centos搭建一个简单的求生之路2服务器(用于好友联机降低延迟,不包含插件)

    转自自己的社团网站 由于和好友联机玩求生之路2时经常出现mod兼容性问题和高ping值问题,游戏体验非常差,而且官方服务器并不能支持第三方地图,所以我们决定自己搭建一个服务器. 不过不知道什么原因,网 ...

  4. 求生之路寻找延迟服务器,用centos搭建一个简单的求生之路2服务器(用于好友联机降低延迟,不包含插件)...

    由于和好友联机玩求生之路2时经常出现mod兼容性问题和高ping值问题,游戏体验非常差,而且官方服务器并不能支持第三方地图,所以我们决定自己搭建一个服务器. 不过不知道什么原因,网上关于搭建l4d2服 ...

  5. 用思科网络模拟器搭建一个简单的局域网

    目录 前言 搭建 配置 前言 在搭建一个简单的局域网前,你必须知道一些常识. 网线(双绞)线的标准 T568A标准:白绿.绿.白橙.蓝.白蓝.橙.白棕.棕 T568B标准:白橙.橙.白绿.蓝.白蓝.绿 ...

  6. iris流程图_如何搭建一个简单的机器学习流水线?

    阅读此分步教程,学会通过导入scikit-learn包来搭建一个简单的机器学习流水线(pipeline) 一个机器学习模型中,有很多可移动的组件需要被组合在一起,模型才能被执行并成功的得到结果.把机器 ...

  7. 搭建一个基于http的yum服务器

    基于http的yum服务器 在集群中搭建一个基于HTTP的yum服务器,不仅安装速度变快了许多,还能扩展自己定制的rpm包放入yum服务器中,其他服务器只需要正常使用yum install即可批量安装 ...

  8. SpringBoot + Dubbo + Zookeeper搭建一个简单的分布式服务

    本文使用SpringBoot + Dubbo + Zookeeper 来搭建一个简单的分布式服务 文章目录 dubbo-spring-boot-starter 如何发布 Dubbo 服务 如何消费 D ...

  9. eclipse maven项目 class类部署不到tomcat下_Springboot介绍以及用Eclipse搭建一个简单的Springboot项目教程

    简述 本文主要介绍Springboot以及用Eclipse搭建一个简单的Springboot项目. Springboot简介 Springboot是由Pivotal团队提供的全新框架,其设计目的是用来 ...

最新文章

  1. LaTeX技巧24:LaTeX常用命令集锦
  2. 从0-1教你利用服务器做属于自己的个人博客
  3. Xcode Cocoa程序MessageBox 弹框
  4. Python之函数的参数
  5. CV Papers|计算机视觉论文推荐周报20200502期
  6. python 如何定义一个变量为数字_python – 如何在Pandas / Numpy中确定列/变量是否为数字?...
  7. 犀牛插件学习——T-Splines
  8. signature=928c561b85c7b57c8e64bdeb4a18b1f1,专注于Win7系列作品汇总(月版)
  9. 接口自动化:淘宝的登录、搜索商品、确认订单、付款流程
  10. 数据库的第一范式、第二范式、第三范式,BCNF范式
  11. gre 填空64-77
  12. github android官方客户端,github安卓手机版APK下载-github Android客户端下载v2.0 官方版-腾牛安卓网...
  13. CSS 背景图像 background-image属性
  14. 步进电机驱动之相数、步距角、细分、拍数
  15. Java、javascript、JS和JScript区别
  16. 2977 二叉堆练习1
  17. 百度一下,你就知道”你真的知道嘛?
  18. python speed为0但是速度过快_通过并发加速你的 python 程序
  19. 90[8j9ph78pg78og78og6
  20. 高速信号处理卡 光纤接入卡 设计方案: 519-基于ZU19EG的4路100G光纤的PCIe 加速计算卡

热门文章

  1. python formatters 与字符串 小结 (python 2)
  2. 在Ubuntu8.10下为PHP安装coreseek全文检索引擎支持的详细步骤
  3. shell脚本 8种字符串截取的方法
  4. 一次由于字符集问题引发的MySQL主从同步不一致问题追查
  5. xHTML+div布局:三个div,两边div宽度固定,中间div宽度自适应
  6. c盘哪些文件可以删除
  7. sony硬盘摄象机误格式化(fat32)的数据恢复
  8. 维基链(WICC)当前币值应该还远远没有达到它本身应有的高度
  9. JustForex开始提供比特币和比特币现金支付方式
  10. Forever +nginx部署Node站点