DNS服务编译安装,及配置

DNS服务是域名转换服务。

原理及功能可以参考http://kmk0226.blog.51cto.com/5975994/1678180

今天的博客是介绍DNS服务的编译安装,以及安装之后如何配置DNS服务,让服务能正常运行。

在Linux系统中,DNS服务在Bind这个程序中配置的。

首先,要编译安装DNS服务,需要先去下载源码包。

源码包可以在bind官方网站下载

bind官方站点:www.isc.org

有9.9.X与9.10.X的版本,我们这里以9.9.X的版本来编译安装。

X代表子版本,可能版本会跟图片中不一样

先下载源码包到Linux系统中。

具体如何下载可以先下载到win系统中再共享方式到linux系统中,如果linux系统有图形界面可以直接到官方网站下载。

下载完成之后,解压源码包

 tar -xvf bind-9.9.7-P1.tar.gz :解压源码包
 cd bind-9.9.7-P1    :进入解压后的目录
 ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --enable-threads --disable-chroot --disable-ipv6    :运行configure程序,生成配置脚本文件makefile文件

--prefix= :指定单独的安装路径,为了删除方便,一般放在/usr/local/下

--sysconfdir= :存放配置文件,配置文件一般在,/etc/下

--enable-threads:默认关闭的,启用线程工作模式,拥有更好的性能

--disable-ipv6:关闭IPV6的功能

--with-dlz--mysql:基于mysql安装

编译完之后直接可以安装

make && make install    :编译与安装,编译安装都是根据以上配置脚本文件中的配置来编译与安装的

安装完之后程序会放在原来指定的安装路径中。

我们这里的安装路径在:/usr/local/bind9

安装目录下有很多的工具与库文件

bin,sbin:存放工具,如dig。

share:存放man

man -M /usr/local/bind9/share/man

可以查看新版的man

lib:库文件

虽然已经安装完成了,但是我们的服务还没有完全安装完成,因为我们编译安装的服务程序,是不会自动帮忙更新man、PATH、库文件,以及服务启动脚本

所以我们需要自己导入与编写。

首先:先导入man

vim /etc/man.config

修改man配置文件

MANPATH /usr/local/bind9/share/man

将/usr/local/bind9/share/man加入到MANPATH参数中

MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
MANPATH /usr/local/share/man
MANPATH /usr/X11R6/man
MANPATH /usr/local/bind9/share/man

导入man文件之后,我们要将我们的bind工具加入到PATH中

        vim /etc/profile.d/bind.sh 
         在/etc/profile.d目录中新建一个bind.sh的shell脚本
        脚本中写入:export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH

注意:最后的$PATH一定要加,这是为了添加原先已经有的PATH,否则原来的就不能用了。

脚本添加完毕重启系统,脚本将会自动将我们的新工具添加到PATH中

最后我们查看下库文件。

所有的库文件都是静态的以.a结尾的库文件,所以不需要安装

如果遇到动态的库文件就需要安装了,结尾为.so的为动态库文件

到此我们的服务就安装完成了,接下去就是要提供配置文件,让服务运行起来了。

编译安装的服务是不会自带配置文件的。

DNS的配置文件都放在/etc/named目录下

先进入/etc/named 

cd /etc/named
    
然后新建named.conf这个配置文件
vim named.conf

    
options {

   directory "/var/named";
   recursion yes;

};

#这里options代表是配置文件中的全局配置
    directory:是配置文件中的工作目录,一般都位置为/var/named目录中
    recursion yes:代表是否允许递归,一定要保留,看过DNS原理的都知道DNS服务器是以递归方式工作的,所以这一项必须要开启
        全局配置只要开启两项就能正常工作了
        其他的配置可以参考man文件来配置。毕竟我们已经更新了man文件了,嘿嘿

zone "." IN {

  type hint;
  file "named.ca";

};

zone "localhost" IN {

  type master;
  file "localhost.zone";
  allow-update { none;  };

};

zone "0.0.127.in-addr.arpa" IN {

   type master;
   file "127.0.0.zone";
   allow-update { none; };
   
zone "kmk.com" IN {

  type master;
  file "kmk.zone";
  allow-update { none; };

};
   
   
   zone代表区域配置
       zone "域名"   IN{
	type {master(主区域)|slave|hint(根区域)|forward};  :类型

	file "mageedu.com.zone";     :文件	

	allow-update { none; };    :域DHCP服务联动更新,域名IP,绝对不允许这是安全问题	

			    };
			    
            反解域需要将IP地址倒过来写,并且添加.in-addr.arpa
                如上:0.0.127.in-addr.arpa
               
       注意:所有的语句后面都需要用;分号结尾
       
 主配置文件建立完毕,我们要先修改下权限,让配置文件可以被named用户访问,如果没有named用户需要先建立,named的用户与组
     id named:查看下是否有建立用户组
     
        没有的话新建用户与组
    useradd -r named    :添加用户-r代表添加的是系统用户
    groupadd named    :添加组
    
    修改属组属主及权限:chown root:named named.conf
		        chmod 640 named.conf

以上为主配置文件的建立,配置完主配置文件,我们还需要配置区域配置文件

进入刚刚全局配置中的工作目录

先创建工作目录与修改属组属主,编译安装的服务,工作目录是没有的
       
创建目录:mkdir /var/named/slaves -pv
		chown root:named /var/named/
		chown named:named /var/named/slaves/
		chmod 750 /var/named/
		chmod 770 /var/named/slaves/

    目录创建完成,先获取根域的节点信息
        dig -t NS . @a.root-servers.net > /var/named/named.ca
            用dig工具获取到根节点的信息,然后发送到/var/named/named.ca这个配置文件中
       这样就配置玩根节点了
       
       然后配置本地域名解析
           在配置.zone文件
           vim localhost.zone
           
           $TTL 3600    :定义统一的缓存时长单位是秒钟
            @       IN      SOA     localhost.      admin.localhost.        (SOA记录,文件必须要的。
                        2015072207    :序列号,最多十个数字
                        2H    :刷新时间间隔 ,每两个小时同步一次
                        10M    :如果主DNS服务器不在线,每十分钟重试一次
                        7D    :试7天之后,还不在线断线
                        1D    :否定回答TTL值 ,1天
    
                            )
                    IN      NS      localhost.    :ns记录,第一行的区域名称与上面一条一样可以省略
                    IN      A       127.0.0.1    :A记录
                    
                    
         vim 127.0.0.zone:这个是反向解析区域文件
             $TTL 3600
                @       IN      SOA     localhost.      admin.localhost. (
                                        2015072305
                                        3H
                                        15M
                                        7D
                                        1D
                )
                        IN      NS      localhost.
                1       IN      PTR     localhost.
            
          vim kmk.zone    :配置自定义的区域文件
              $TTL 3600
                @       IN      SOA     ns.kmk.com.     admin.kmk.com. (
                                        2015072301
                                        2H
                                        10M
                                        7D
                                        1D
                )
                        IN      NS      ns.kmk.com.
                        IN      MX      10      mail.kmk.com.
                ns.kmk.com.     IN      A       192.168.142.128
                www.kmk.com.    IN      A       192.168.142.128
                mail.kmk.com.   IN      A       192.168.142.129 
                    
     区域解析库文件说明:
         区域解析库:
	资源记录:rr(resource record),一行一个资源记录
		有类型的概念:用于此记录解析时的属性

	SOA:Start Of Authority,起始授权记录,一个区域文件,只能有一个soa文件记录
	NS:Name Server,代表名称服务器
	MX:Mail eXchange,邮件交换器,MX记录有优先级属性(0-99,越小越高)
	A:FQDN --> IP:专用于正向解析库,不能域PTR同时在一起
	PTR:IP --> FQDN:专用于方向解析库,不能域A同时在一起
	AAAA:FQDN --> IPV6,专用于正向解析库
	CNAME:Canonical Name,正式名称,别名记录
	    张三的正式名称是tom,代表张三是别名
                    
                    
                    
            配置完之后修改属组属主及权限:
            
	    	chgrp named 127.0.0.zone localhost.zone named.ca kmk.zone:修改属组
		chmod 640	127.0.0.zone localhost.zone named.ca kmk.zone :修改权限		

现在一个缓存DNS服务器已经完成

可以尝试启动缓存名称服务器

named-checkconfig:检查配置文件是否有语法错误

named 命令可以直接启动named服务

-h:查看版主文件

-g:前台启动

-u:启动服务

-c:启动服务的配置文件在哪

named -g -u named -c /etc/named/named.conf:启动服务

成功之后出现字符:

all zones loaded

running

出现以上字符代表已经启动成功,但是不会继续下去,如果想要测试,可以新建窗口进行测试

测试方法为

dig -t PTR kmk.com @192.168.142.128

这个代表解析kmk.com这个域里面的所有信息,而解析服务器为192.168.142.128这个服务器IP为你现在建立的DNS服务器IP,如果解析出来了代表成功了。

如果测试成功,那么不要高兴,因为你的服务器还是个半成品,我们要需要导入rndc密钥信息

否则你的服务器将会很不安全。

导入rndc

rndc-confgen -r /dev/urandom > /etc/named/rndc.conf

利用rndc-confgen将urandom中的一个随机数添加至rndc.conf

urandom:一个提供随机数的目录

-r:代表利用urandom中的随机数,不是熵池中的随机数

再将rndc.conf中的key段发送到/etc/named/named.conf中

    options {

   directory "/var/named";
   recursion yes;

};

#rndc发送过来的key信息
#Use with the following in named.conf, adjusting the allow list as needed:
 key "rndc-key" {
        algorithm hmac-md5;
        secret "4NNN/HzlnbeGLOewSowoaQ==";
 };

zone "." IN {

  type hint;
  file "named.ca";

};

zone "localhost" IN {

  type master;
  file "localhost.zone";
  allow-update { none;  };

};

zone "0.0.127.in-addr.arpa" IN {

   type master;
   file "127.0.0.zone";
   allow-update { none; };
};

zone "kmk.com" IN {

  type master;
  file "kmk.zone";
  allow-update { none; };

};

以上是最后完整的全局配置文件信息

最后再重读named.conf这个配置文件

killall -HUP named

chmod 440 rndc.conf:修改rndc.conf权限

到此DNS服务的配置就全部完成了,可以使用named -g -u named -c /etc/named/named.conf来启动服务,但是这样很不方便,可以再编辑一个服务脚本来控制启动关闭及重启之类的操作。

如用service机制,具体可以参考cent OS 6的service脚本编辑来写脚本

时间: 2024-11-03 22:02:43

DNS服务编译安装,及配置的相关文章

Linux DNS源代码编译安装(五)

DNS源代码的编译安装. 官方bind下载地址:www.isc.org这里我们编译的是bind-9.9.5.tar.gz版本 1.编译环境  Desktop Platform Development  Development tools  Server Platform Development 2.展开安装包查看编译命令 首先我们应该先看下服务器时间,[[email protected] ~]# tar xf bind-9.9.5.tar.gz -----展开安装包[[email protect

DNS及编译安装MariaDB

1.简述DNS服务器原理,并搭建主-辅服务器. DNS(domain name server),域名解析服务器.dns域结构:是一颗倒树状结构,分为根域.一级域.二级域...127级域.每一级的域名服务器管理自己的子域. dns工作原理,以访问www.baidu.com为例: 1) 首先浏览器会查看本地dns,也就是系统的host文件,可以解析的话就返回对应的ip,否则就会查询本地缓存 2) 如果本地缓存不起作用,就把请求发送给网络提供商的dns服务器(例如电信dns服务器),可以解析的话就返回

DNS服务的原理与配置

DNS服务的原理与配置    DNS是一组协议和服务,基本功能是在主机名与对应的IP地址之间建立映射管理. *主机名便于记忆 *数字形式的IP地址可能会由于各种原因而改变,而主机名可以保持不变. DNS的组成           根域:就是"."(点号),由Internet名称注册授权机构管理,该机构把域名空间各部分的管理责任分配给了连接到Internet的各个组织. 顶级域:根域的下级域,由Internet名称授权机构管理,有两种常见类型. *组织域:采用三个字符的代号,标识DNS域

php编译安装与配置

php编译安装与配置 =========================================== 官网:http://php.net/ 官网下载:http://php.net/downloads.php =========================================== 一:了解与准备 1.1:Apache(httpd) nginx 与 php 连接方式: httpd与php: 1:php 作为 httpd 模块 2:fastcgi(php-fpm) 3:cgi(

httpd服务编译安装

httpd服务编译安装  httpd服务就是网页服务,不过Linux现在流行的httpd服务为apache服务. 我们这里编译安装的htppd服务也为apache服务. httpd服务的功能及作用应该不需要多做介绍了,我们直接进入正题,开始编译及安装. 首先需要先到官网下载httpd的编译安装包以及依赖服务包 这次编译安装的是apache 2.4版本的 依赖包为apr,apr的版本也必须为1.4以上的,否则不兼容 在这下载httpd编译包: http://httpd.apache.org/ 在这

CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动

CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动1.关于mysql?MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.特点: Mysql是开源的,所以你不需要支付额外的费用.Mysql支持大型的数据库.可以处理拥有上千

Windows Azure+Windows+Linux多环境下Tomcat服务的安装及配置集合

Windows Azure+Windows+Linux多环境下的Tomcat服务的安装及配置集合 说到Tomcat服务,相信大家都很熟悉了,当然也这包括安装及配置:我们都知道Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求.实际上To

CentOS 7 Tomcat服务的安装与配置

3422人阅读 http://blog.51cto.com/13525470/2073657 一.Linux下的Java运行环境 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于个人PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥有全球最大的

Emacs安装配置全攻略之一编译安装简单配置

/******************************************************************************************************************************************/ 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb_driver/article/details/29407717,作者:gqb666 /***************