总结之:CentOS6.5 DNS服务BIND配置、正反向解析、主从及压力测试(1)

简介:

前言:

了解named
   如果说我们安装的rpm包不符合我们的要求怎么办、比如说我们想起用named的线程模式、比如说我想让他禁用IPv6、比如说我们想启用某种特性、而rpm在编译时没有提供、那这时我们只能去手动编译安装了,那如何去编译安装named:


   编译安装named有一个麻烦之处、所有的配置文件你都得自己去建立、像/var/named/这个目录、编译安装时连这个目录都不会存在、得自己去创建这个目录、里面的各种配置文件、区域文件、像根的、localhost的、以及localhost的反向的、都得手动去做、连我们service启动脚本都没、所以不到万不得以最好别去编译他、因为很麻烦、但对于我们学习来讲、我们应该是变得法的去折腾自己、活着就是折腾嘛、那我们各种方法都去摸索一遍、将来我们真要用得着了也好应对。

   首先上来就同步一下我们的时间:
   # hwclock -s


   然后检查一下安装环境所需要的开发包组、确保所依赖的开发包组都装有了、我这里没有装、那我就用yum来装一下吧:
   # yum -y groupinstall "Development Tools"
   # yum -y groupinstall "Server Platform Development"
   # yum grouplist

   装好后查看一下、最主要两项:Development tools和Server Platform Development

   然后我们就去下载源码包了、这里我就去www.isc.org/donloads/官方网站下载了、支持使用的版本是9.9.5、当前使用的稳定版、这个版本中已经自带dlz了、以前的版本没有自带的、安装时要装这个dlz的、如果我们将来人希望指资源记录基于数据库的方式存放的话、而且要能够现场检索、现场响应的话、则自定义启用dlz功能即可、下载好我们就去解压缩:
   # tar xf bind-9.9.5.tar.gz

   wKioL1MhkdbjXvswAAHNdY4VZXg331.jpg
   

   这里注意一下:我们要去编译安装一个服务、首先要去看他的README、然后看他的INSTALL、大体了解一下有没有我们所需要的信息、当然我们这里就不多说了、直接往下走:
   # ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named --enable-threads --enable-epoll --disable-chroot

   --prefix=/usr/local/bind9:指定编译存放的路径
   --sysconfdir=/etc/named:指定配置文件存放路径
   --enable-threads:启用了多线程的功能

   然后make和make install就OK了、安装完成就可以去配置了
   # make && make install

   wKioL1MhkjTAg7N0AAKi8eTJhyA380.jpg
   

   我们前面说过、编译安装named什么都得自己创建、用户也没有的、所以我们得给他创建一个用户先、而且用户是系统用户、要加-r、系统用户不会给他创建家目录的:
   先创建用户组:
   # groupadd -g 53 -r named
   # useradd -g named -r named
   wKioL1MhkpTQ-ZC8AAClx2mdHcA461.jpg
   这里我们先去创建named的工作目录、然后创建named.ca这个文件:
   # mkdir /var/named

   这里@后面的IP是能访问互联网的服务器、生成的数据存在到/var/named/named.ca中去
   # dig -t NS . @172.16.0.1 > /var/named/named.ca

   wKiom1MhkpmT9-OqAAE1lwAc-8c613.jpg
   

   然后再去编辑/etc/named/named.conf的配置文件、这个文件也没有、需要自己去编写的:
   # vim /etc/named/named.conf           

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#定义全局的
         options {
                 #定义named的固定工作路径
                 directory  "/var/named" ;
         };
         #定义根的区域
         zone  "."  IN {
                 type  hint;         #类型、hint表示为根的
                 file  "named.ca" ;   #指定的文件
         };
         #定义本本地的区域
         zone  "localhost"  IN {
                 type  master;            #类型属于master、属于自己的
                 file  "named.localhost" ;  #指定的文件
                 allow-transfer { none; };  #不允许任何人传送的
         };
         #定义反向解析的
         zone  "0.0.127.in-addr.arpa"  IN {
                 type  master;             #类型属于master、属于自己的
                 file  "named.loopback" ;     #指定的文件
                 allow-transfer { none; }; #不允许任何人传送的
         };


   配置文件中的三个文件named.ca、named.localhost、named.loopback上面已经提供有一个了named.ca了、还有这两个named.localhost、named.loopback、同样我们也得提供、也是在/var/named目录下创建:


   # vim /var/named/named.localhost

1
2
3
4
5
6
7
8
9
$TTL 86400    ;定义宏
@       IN      SOA     localhost       admin.localhost. (
                         2014031101    ;序列号
                          2H            ;刷新时间
                          10M            ;失败时重试间隔时间
                          7D            ;过期时间
                          1D)            ;否定答案的时间
                  IN      NS      localhost.
localhost.       IN      A       172.0.0.1

   

   然后复制一份改写named.loopback的文件:
   # cp /var/named/named.localhost /var/named/named.loopback
   # vim named.loopback

1
2
3
4
5
6
7
8
9
$TTL 86400
@       IN      SOA     localhost       admin.localhost. (
                          2014031101
                          2H
                          10M
                          7D
                          1D )
                  IN      NS      localhost.
1                IN      PTR     localhost.


   如果想用rndc远程登录可以生成一个/etc/named/rndc.conf的配置文件:
   # /usr/local/bind9/sbin/rndc-confgen -r /dev/urandom > /etc/named/rndc.conf 

   到这里我们别忘了给named.conf和rndc.conf修改属主属组和权限:
   # chown root:named /etc/named/named.conf
   # chown root:named /etc/named/rndc.conf
   # chown root:named /var/named/*
   # chmod 640 /etc/named/named.conf
   # chmod 640 /etc/named/rndc.conf
   # chmod 640 /var/named/*

   wKioL1MhkyywE9LIAACdXssfy94489.jpg
   wKiom1Mhk3bS9GHdAACw_6olTGQ848.jpg

   

   为了方便、我们在PATH下加个的路径、/etc/profile.d/named.sh:
   # vim /etc/profile.d/named.sh
   export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH

   在我们的终端重新登录一下就可以生效了

   好的、检查一下我们的区域文件有没有语法错误、然后就可以启动了:
   # named-checkzone "localhost" /var/named/named.localhost 
   # named-checkzone "0.0.127.in-addr.arpa" /var/named/named.loopback
   # named -u named    #这个表示以named用户启动named
   # ss -tunl | grep "\<53\>"  然后再查看一下有没有监听53号端口

   wKioL1Mhk37wLYL7AAF9YH3B058963.jpg


   最后、因为他是一个服务、所以我们要为他提供一个服务脚本、以后可以利用脚本启动、编辑/etc/rc.d/init.d/named:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# vim /etc/rc.d/init.d/named
     #!/bin/bash
     #
     # description: named daemon  描述信息
     # chkconfig: - 25 88    启动和关闭级别
     #
     # 启动named的pid文件、其实文件路径我们都可以自己指定的
     pidFile= /usr/local/bind9/var/run/named .pid
     # 启动服务时的锁文件、判断一个服务是不是启动是靠这个锁文件的
     lockFile= /var/lock/subsys/named
     # named的配置文件路径
     confFile= /etc/named/named .conf
         # 判断/etc/rc.d/init.d/functions路径下的functios是否存在这个文件、存在就sources进来
         [ -r  /etc/rc .d /init .d /functions  ] && .  /etc/rc .d /init .d /functions
     # 定义启动方法
     start() {
             # 判断锁文件是否存在、如果存在就说服务已经启动并退出
             if  [ -e $lockFile ];  then
                     echo  "named is already running..."
                     exit  0
             fi
             # 打印服务已经启动的信息
             echo  -n  "Starting named:"
             # 调用functions中的daemon方法、并用--pidfile指定pid文件在什么地方、还指定用户和配置文件、我们本来是直接启用named的、现在利用daemon这个函数来启用这个服务、他会获得很多额外的属性、如果成功了会帮我们打印什么[ OK ]的、还可以做判断
             daemon --pidfile  "$pidFile"  /usr/local/bind9/sbin/named  -u named -c  "$confFile"
             RETVAL=$?
             echo
             # 判断上面的命令是否执行成功、说明启动成功
             if  [ $RETVAL - eq  0 ];  then
                     # 如果判断成功、就创建锁文件
                     touch  $lockFile
                     return  $RETVAL
             else
                     # 否则、就是失败了、那就删除锁文件和pid文件
                     rm  -f $lockFile $pidFile
                     return  1
             fi
     }
     # 定义停止方法
     stop() {
             # 如果锁文件不存在
             if  [ ! -e $lockFile ];  then
                     # 说明服务还没有启动
                     echo  "named is stopped."
             fi
             echo  -n  "Stopping named:"
             killproc named
             RETVAL=$?
             echo
             # 判断以上的命令是否执行停止成功、如果成功
             if  [ $RETVAL - eq  0 ]; then
                     # 删除锁文件和pid文件
                     rm  -f $lockFile $pidFile
                     return  0
             else
                     # 否则打印说没能正常停止
                     echo  "Cannot stop named."
                     # 调用functions中的函数、会打印失败
                     failure
                     return  1
             fi
     }
     # 定义重启服务
     restart() {
             # 调用停止方法
             stop
             # 睡眠2秒
             sleep  2
             # 调用启动方法
             start
     }
     # 定义重新加载服务方法
     reload() {
             echo  -n  "Reloading named: "
             # killprco HUP信号、named进程的信号
             killproc named -HUP
             RETVAL=$?
             echo
             return  $RETVAL
     }
     # 定义服务状态
     status() {
             if  pidof named &>  /dev/null ;  then
                     echo  -n  "named is running..."
                     success
                     echo
             else
                     echo  -n  "named is stopped..."
                     success
                     echo
             fi
     }
     # 定义错误提示信息
     usage() {
             echo  "Usage: named {start|stop|restart|status|reload}"
     }
     case  $1  in
     start)
             start ;;
     stop)
             stop ;;
     restart)
             restart ;;
     status)
             status ;;
     reload)
             reload ;;
     *)
             usage
             exit  4 ;;
     esac


   OK、到这里保存退出,给他个执行权限
   # chmod +x /etc/rc.d/init.d/named

   再加到chkconfig里面去:
   # chkconfig --add named
   # chkconfig --list named

=============================我是分隔线==========================================  










本文转自 wei0164 51CTO博客,原文链接:http://blog.51cto.com/tanxw/1376088,如需转载请自行联系原作者
目录
相关文章
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
Linux 网络安全 数据安全/隐私保护
centos开启samba服务
通过以上步骤,您已成功在CentOS系统上安装、配置并启动了Samba服务,并且可以通过Windows或Linux客户端访问共享目录。Samba为跨平台文件共享提供了强大的支持,配置灵活且易于管理。无论是简单的家庭网络共享还是企业级文件服务器,Samba都能胜任。通过合理的配置和访问控制,您可以确保文件共享的安全性和便利性。
1913 74
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
2622 25
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
1726 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
搜索推荐 测试技术 API
探秘电商API:从测试到应用的深度解析与实战指南
电商API是电子商务背后的隐形引擎,支撑着从商品搜索、购物车更新到支付处理等各个环节的顺畅运行。它通过定义良好的接口,实现不同系统间的数据交互与功能集成,确保订单、库存和物流等信息的实时同步。RESTful、GraphQL和WebSocket等类型的API各自适用于不同的应用场景,满足多样化的需求。在测试方面,使用Postman、SoapUI和jMeter等工具进行全面的功能、性能和安全测试,确保API的稳定性和可靠性。未来,随着人工智能、大数据和物联网技术的发展,电商API将进一步智能化和标准化,为用户提供更个性化的购物体验,并推动电商行业的持续创新与进步。
1067 5
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
域名解析 网络协议 测试技术
IP、掩码、网关、DNS1、DNS2到底是什么东西,ping telnet测试
理解IP地址、子网掩码、默认网关和DNS服务器的概念是有效管理和配置网络的基础。通过使用ping和telnet命令,可以测试网络连通性和服务状态,快速诊断和解决网络问题。这些工具和概念是网络管理员和IT专业人员日常工作中不可或缺的部分。希望本文提供的详细解释和示例能够帮助您更好地理解和应用这些网络配置和测试工具。
10281 2
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
1706 2
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
测试技术 API 开发者
精通.NET单元测试:MSTest、xUnit、NUnit全面解析
【10月更文挑战第15天】本文介绍了.NET生态系统中最流行的三种单元测试框架:MSTest、xUnit和NUnit。通过示例代码展示了每种框架的基本用法和特点,帮助开发者根据项目需求和个人偏好选择合适的测试工具。
849 3

相关产品

  • 云解析DNS