欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 19_03 _Bind97服务安装配置 有大用

安装 配置 dns服务器


magedu.com    172.16.100.0/24


ns     172.16.100.1

www 172.16.100.1, 172.16.100.3

mail     172.16.100.2

ftp     www         (别名)


DNS: BIND        (BIND互联网上用得最多的dns服务器)

            ( Berkeley Intenet Name Domain )

          现在由 ISC (internet systems Consortium 互联网系统协会)来维护了

          DHCP 也是由 ISC 来维护的

http://www.isc.org

image.png

image.png


bind97 主包,是服务器端的包,红帽6也就叫bind,红帽6上版本是比较新的

 是为了两个系统共存给我们提供的 (bind 和 bind97),红帽5系列跨度太大,刚开始时93版本仍然是主流的,现在97是注流版本,它又不得不提供原有版本的升级版,所以才造成了新旧两个版本同时并存的原因,


bind97 的服务器端装上以后

bind97     

        1) /etc/named.conf        主配置文件

            BIND 进程的工作属性

            区域的定义都在这里 

            还有其它的定义


                     

        2) /etc/rndc.key  还有一个配置文件      这也是一个跟dns相关的配置文件,它是一个能够让rndc能够远程工作的密钥文件,红帽上是rndc.key         

                 rndc:Remote Name Domain Controller 是让我们能够远程控制dns服务器,这个进程启动,关闭,装载各主配置文件以及数据文件的一个非常常用的命令,

                 密钥文件 ( rndc.key ),    

                 配置信息文件:事实上 bind 自身用的文件叫 /etc/rndc.conf

                                (一般来讲 密钥文件和配置信息文件有一个就能进行工作了)

          3)  /var/named/    区域数据文件    ,这个目录下,自己创建的文件,叫什么名字自己去定义


          4) /etc/rc.d/init.d/named  安装 bind97 (bind)之后 服务控制脚本

                            { start|stop|restart|status|reload|configtest }        (reload重读配置文件和数据文件,不用停止或重启服务器) (configtest  能够测试配置文件中是不是有语法的错误,这个选项(参数)非常常用  configtest 应该现在不支持了吧 )

        

    bind本身运行的进程叫 named ( 二进制程序 )       不叫  bind,因为它指的是叫名称进程

        bind是软件包的名字,不是二进制程序的名字



bind-chroot:

            默认情况下,bind运行在真正的根下面,一旦有人攻破,劫持了我们的dns服务器,劫持了我们的named进程,意味着任何运行named进程的权限,攻击者都能获取了,

                运行named进程的  用户是 named  组 是 named  ,这是系统用户和系统组,虽然不能登录系统,但是劫持了之后,用户 named 和 组 named 能够到达的位置,攻击者都能到达,能看到的文件,攻击者都能看得到...在linux上,每一个普通用户所能够访问的文件是全局的,根下的 /etc下的许多文件,它都能访问到,因此,攻击者就能借助于这样一个进程,访问许许多多的文件,这是很不安全的

                

                /var/named/chroot

                    etc/named.conf

                    etc/rdnc.conf

                    sbin/named

                    var/named

            让named进程运行在   /var/named/chroot 目录下,并且以 /var/named/chroot 为根, 就算其它用户攻破了我们的dns服务器,它能够活动的范围 就是  /var/named/chroot 目录下,就算删了里面的所有,不会影响我们的整个系统,所以这是加强我们的dns 服务器安全性的一种手段,只不过使用了bind-chroot 之后,我们的所有文件路径都要相对于 /var/named/chroot 而言了,很多服务器程序都可以通过这种方式加强其安全性,只不过配置起来,对于初学者稍有困难,所以这里不建议使用 bind-chroot, 这里不打算讲解在bind-chroot模型下怎么配置dns服务器(或者说配置bind97), 我们只演示在正常情况下,它倒底如何工作,所以请确保 bind-chroot 软件包一定不要装






        chroot 命令:

            /mnt/sysroot

            chroot /mnt/sysroot

            ls /              (这里把 /mnt/sysroot 当作根了)








官方网站上提供的BIND是源代码包,因此安装使用必须得编译

红帽5.8的系统上己提供了bind,编译好的rpm包

先使用 rpm 包装

再通过编译源代码的方式安装,定制特殊属性

目前最主流的是 9.9.2

https://www.isc.org/        https://www.isc.org/downloads/

image.png





[root@localhost ~]# ls /etc/yum.repos.d/

cdrom.repo  rhel-debuginfo.repo-bak


[root@localhost ~]# cd  /etc/yum.repos.d/

[root@localhost yum.repos.d]# yum list all | grep "^bind"

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

file:///media/cdrom/Server/repodata/repomd.xml: [Errno 5] OSError: [Errno 2] 没有那个文件或目录: '/media/cdrom/Server/repodata/repomd.xml'

Trying other mirror.

bind-libs.i386                             30:9.3.6-20.P1.el5_8.6     installed

bind-utils.i386                            30:9.3.6-20.P1.el5_8.6     installed

bind.i386                                  30:9.3.6-20.P1.el5_8.6     Cdrom_Base

bind-chroot.i386                           30:9.3.6-20.P1.el5_8.6     Cdrom_Base

bind-devel.i386                            30:9.3.6-20.P1.el5_8.6     Cdrom_Base

bind-libbind-devel.i386                    30:9.3.6-20.P1.el5_8.6     Cdrom_Base

bind-sdb.i386                              30:9.3.6-20.P1.el5_8.6     Cdrom_Base

bind97.i386                                32:9.7.0-17.P2.el5_9.2     Cdrom_Base

bind97-chroot.i386                         32:9.7.0-17.P2.el5_9.2     Cdrom_Base

bind97-devel.i386                          32:9.7.0-17.P2.el5_9.2     Cdrom_Base

bind97-libs.i386                           32:9.7.0-17.P2.el5_9.2     Cdrom_Base

bind97-utils.i386                          32:9.7.0-17.P2.el5_9.2     Cdrom_Base

image.png

[root@localhost yum.repos.d]#

9.3.6 与 9.7.0 是两组不同的包,

bind.i386  为主包,其余的为子包 bind-libs.i386 bind-utils.i386 bind-chroot.i386  bind-devel.i386  bind-libbind-devel.i386 bind-sdb.i386         


 bind97.i386   为主包,其余的为子包 bind-sdb.i386  bind97-devel.i386 bind97-libs.i386   bind97-utils.i386       

我们准备采用 bind97 比较新的版本

把己经装上的 bind-libs.i386  bind-utils.i386 卸载掉

( 装完系统后  bind-libs.i386  bind-utils.i386  会被自动装上 )



[root@localhost yum.repos.d]# rpm -ql bind-utils

下面四行是非常常用的客户端(命令行)工具 下面四个程序等运行的时候可以依赖于库文件

所以 装上 bind-utils 时 bind-libs要同时装上

/usr/bin/dig

/usr/bin/host

/usr/bin/nslookup

/usr/bin/nsupdate

/usr/share/man/man1/dig.1.gz

/usr/share/man/man1/host.1.gz

/usr/share/man/man1/nslookup.1.gz

/usr/share/man/man1/nsupdate.1.gz

[root@localhost yum.repos.d]#

bind-libs 指的是库文件


 卸载掉  bind-libs.i386  bind-utils.i386

没有信息是最好的信息,没有依赖关系这里就卸载掉了

[root@localhost yum.repos.d]# rpm -e bind-libs bind-utils

[root@localhost yum.repos.d]#

[root@localhost yum.repos.d]# yum install bind97-libs bind97-utils -y

Loaded plugins: product-id, security, subscription-manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Cdrom_Base                                                                 | 1.5 kB     00:00

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package bind97-libs.i386 32:9.7.0-17.P2.el5_9.2 set to be updated

---> Package bind97-utils.i386 32:9.7.0-17.P2.el5_9.2 set to be updated

--> Finished Dependency Resolution


Dependencies Resolved


==================================================================================================

 Package               Arch          Version                            Repository           Size

==================================================================================================

Installing:

 bind97-libs           i386          32:9.7.0-17.P2.el5_9.2             Cdrom_Base          886 k

 bind97-utils          i386          32:9.7.0-17.P2.el5_9.2             Cdrom_Base          188 k


Transaction Summary

==================================================================================================

Install       2 Package(s)

Upgrade       0 Package(s)


Total download size: 1.0 M

Downloading Packages:

--------------------------------------------------------------------------------------------------

Total                                                             1.5 GB/s | 1.0 MB     00:00

Running rpm_check_debug

Running Transaction Test

Finished Transaction Test

Transaction Test Succeeded

Running Transaction

  Installing     : bind97-libs                                                                1/2

  Installing     : bind97-utils                                                               2/2


Installed:

  bind97-libs.i386 32:9.7.0-17.P2.el5_9.2         bind97-utils.i386 32:9.7.0-17.P2.el5_9.2


Complete!

[root@localhost yum.repos.d]#

[root@localhost ~]# yum info bind-devel

Loaded plugins: product-id, security, subscription-manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Available Packages

Name       : bind-devel

Arch       : i386

Epoch      : 30

Version    : 9.3.6

Release    : 20.P1.el5_8.6

Size       : 2.8 M

Repo       : Cdrom_Base

Summary    : Header files and libraries needed for BIND DNS development.

URL        : http://www.isc.org/products/BIND/

License    : BSD-like

Description: The bind-devel package contains all the header files and libraries

           : required for DNS (Domain Name System) development with ISC BIND

           : 9.x.x.


You have new mail in /var/spool/mail/root


这是一个开发包包含了所有的头文件和库文件,结合 bind 9.x.x 进行二次开发的时候才用到它

所以对于运维人员来讲,通常用不到 bind-devel包,除非我们创建开发环境的时候

[root@localhost ~]#



[root@localhost ~]# yum list all | grep caching

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

caching-nameserver.i386                    30:9.3.6-20.P1.el5_8.6    development

[root@localhost ~]#

[root@localhost ~]# yum info caching-nameserver

Loaded plugins: product-id, security, subscription-manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Available Packages

Name       : caching-nameserver

Arch       : i386

Epoch      : 30

Version    : 9.3.6

Release    : 20.P1.el5_8.6

Size       : 64 k

Repo       : development

Summary    : Default BIND configuration files for a caching nameserver

URL        : http://www.isc.org/products/BIND/

License    : BSD-like

Description: The  caching-nameserver package includes the configuration files

           : which will make the ISC BIND named DNS name server act as a simple

           : caching nameserver. A caching nameserver is a DNS Resolver, as

           : defined in RFC 1035, section 7. ISC BIND named(8) provides a very

           : efficient, flexible and robust resolver as well as a server of

           : authoritative DNS data - many users use this package along with

           : BIND to implement their primary system DNS resolver service. If you

           : would like to set up a caching name server, you'll need to install

           : bind, bind-libs, and bind-utils along with this package.

 caching-nameserver  能够让我们的dns 立马成为一个缓存dns,它给我们提供了很多配置文件,这些配置文件结合我们安装以后的bind,并启动bind以后,能够立即让bind成为一个缓存dns服务器,而且它所提供的标准,它所提供的内容是符合 isc 1035 的规范的,所以很多时候,我们可以借助于 caching-nameserver 来实现快速构建缓存名称服务器

[root@localhost ~]#

先配置 成为 缓存名称服务器-->主- (或者) ->从 (从应该是属于某个主的)

将来能够很熟练的操作dns服务器的时候,为了快速构建,可以安装 caching-nameserver (现在不装了)

我们现在完全手动安装所需要依赖的每一个文件


[root@localhost ~]# yum install bind97 -y        ( 安装服务器端包 )

image.png



[root@localhost ~]# rpm -ql bind97

image.png

image.png

image.png

/etc/NetworkManager/dispatcher.d/13-named

/etc/logrotate.d/named

/etc/named

/etc/named.conf    #这是主配置文件,这个主配置文件就相当于已经安装了 caching-nameserver  ( 这是bind97的特性 ,可能在红帽6上并非如此)

/etc/named.iscdlv.key

/etc/named.rfc1912.zones

/etc/named.root.key

/etc/rc.d/init.d/named    #这是脚本

/etc/rndc.conf        #这是rndc的配置文件

/etc/rndc.key            #这是rndc的key

/etc/sysconfig/named    #这里/etc/rc.d/init.d/named脚本(服务脚本)的配置文件

/usr/lib/bind

/usr/sbin/arpaname

/usr/sbin/ddns-confgen

/usr/sbin/dnssec-dsfromkey

/usr/sbin/dnssec-keyfromlabel

/usr/sbin/dnssec-keygen

/usr/sbin/dnssec-revoke

/usr/sbin/dnssec-settime

/usr/sbin/dnssec-signzone

/usr/sbin/genrandom

/usr/sbin/isc-hmac-fixup

/usr/sbin/lwresd

/usr/sbin/named        # named 的二进制程序,这是我们的主程序

/usr/sbin/named-checkconf    #检查配置文件中有没有语法错误

/usr/sbin/named-checkzone    #检查区域文件中有没有语法错误

/usr/sbin/named-compilezone    #能够将区域文件编译成其它格式

/usr/sbin/named-journalprint

/usr/sbin/nsec3hash

/usr/sbin/rndc    # 远程控制工具

/usr/sbin/rndc-confgen        #专门用来生成 /etc/rndc.conf 配置文件的

/usr/share/doc/bind97-9.7.0

/usr/share/doc/bind97-9.7.0/CHANGES

/usr/share/doc/bind97-9.7.0/COPYRIGHT

/usr/share/doc/bind97-9.7.0/Copyright

...

...

...

/usr/share/man/man8/named-checkzone.8.gz

/usr/share/man/man8/named-compilezone.8.gz

/usr/share/man/man8/named-journalprint.8.gz

/usr/share/man/man8/named.8.gz

/usr/share/man/man8/nsec3hash.8.gz

/usr/share/man/man8/rndc-confgen.8.gz

/usr/share/man/man8/rndc.8.gz

/var/log/named.log

/var/named    #/var/named 目录下给我们提供了好几个配置文件   ,这个目录下为 区域数据文件   

/var/named/data

/var/named/dynamic

/var/named/named.ca

/var/named/named.empty

/var/named/named.localhost

/var/named/named.loopback

/var/named/slaves

/var/run/named


我们提供的named 只需要提供主配置文件和修改区域数据文件


[root@localhost ~]# vim /etc/named.conf

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//


options {        # options  选项,这些都是全局选项,对于底下的每个子部分都生效的

        listen-on port 53 { 127.0.0.1; };

        listen-on-v6 port 53 { ::1; };

        directory       "/var/named";

        dump-file       "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";

        allow-query     { localhost; };

        recursion yes;


        dnssec-enable yes;

        dnssec-validation yes;

        dnssec-lookaside auto;


        /* Path to ISC DLV key */

        bindkeys-file "/etc/named.iscdlv.key";

};


logging {    # 定义怎么去生成和保存日志的

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};


zone "." IN {    #定义区域的

        type hint;

        file "named.ca";

};


include "/etc/named.rfc1912.zones";        #包含其它文件

                        

[root@localhost ~]# vim /etc/named.rfc1912.zones

这文件里面都是区域的定义,可以跟 /etc/named.conf 写在同一个配置文件里面,,如果想分开写,可以使用 include 包含进去

// named.rfc1912.zones:

//

// Provided by Red Hat caching-nameserver package

//

// ISC BIND named zone configuration for zones recommended by

// RFC 1912 section 4.1 : localhost TLDs and address zones

// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt

// (c)2007 R W Franks

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//


zone "localhost.localdomain" IN {

        type master;

        file "named.localhost";

        allow-update { none; };

};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {

        type master;

        file "named.loopback";

        allow-update { none; };

};


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

        type master;

        file "named.loopback";

        allow-update { none; };

};


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

        type master;

        file "named.empty";

        allow-update { none; };

};


上面的太多文件都要安装 bind97 后自动生成的,我们只需略作修改就可以



[root@localhost ~]# cd /var/named

[root@localhost named]# pwd

/var/named

[root@localhost named]# ls

data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

[root@localhost named]#

[root@localhost named]# vim named.ca            这个文件就算没有也没关系,我们可以手动生成的

; <<>> DiG 9.5.0b2 <<>> +bufsize=1200 +norec NS . @a.root-servers.net

;; global options:  printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34420

;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 20


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;.                              IN      NS

;; ANSWER SECTION:

.                       518400  IN      NS      M.ROOT-SERVERS.NET.

.                       518400  IN      NS      A.ROOT-SERVERS.NET.

.                       518400  IN      NS      B.ROOT-SERVERS.NET.

.                       518400  IN      NS      C.ROOT-SERVERS.NET.

.                       518400  IN      NS      D.ROOT-SERVERS.NET.

.                       518400  IN      NS      E.ROOT-SERVERS.NET.

.                       518400  IN      NS      F.ROOT-SERVERS.NET.

.                       518400  IN      NS      G.ROOT-SERVERS.NET.

.                       518400  IN      NS      H.ROOT-SERVERS.NET.

.                       518400  IN      NS      I.ROOT-SERVERS.NET.

.                       518400  IN      NS      J.ROOT-SERVERS.NET.

.                       518400  IN      NS      K.ROOT-SERVERS.NET.

.                       518400  IN      NS      L.ROOT-SERVERS.NET.


;; ADDITIONAL SECTION:        # 13个根节点服务器的地址

A.ROOT-SERVERS.NET.     3600000 IN      A       198.41.0.4

A.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:503:ba3e::2:30

B.ROOT-SERVERS.NET.     3600000 IN      A       192.228.79.201

C.ROOT-SERVERS.NET.     3600000 IN      A       192.33.4.12

D.ROOT-SERVERS.NET.     3600000 IN      A       128.8.10.90

E.ROOT-SERVERS.NET.     3600000 IN      A       192.203.230.10

F.ROOT-SERVERS.NET.     3600000 IN      A       192.5.5.241

F.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:500:2f::f

G.ROOT-SERVERS.NET.     3600000 IN      A       192.112.36.4

H.ROOT-SERVERS.NET.     3600000 IN      A       128.63.2.53

H.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:500:1::803f:235

I.ROOT-SERVERS.NET.     3600000 IN      A       192.36.148.17

J.ROOT-SERVERS.NET.     3600000 IN      A       192.58.128.30

J.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:503:c27::2:30

K.ROOT-SERVERS.NET.     3600000 IN      A       193.0.14.129

K.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:7fd::1

L.ROOT-SERVERS.NET.     3600000 IN      A       199.7.83.42

M.ROOT-SERVERS.NET.     3600000 IN      A       202.12.27.33

M.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:dc3::35


;; Query time: 147 msec

;; SERVER: 198.41.0.4#53(198.41.0.4)

;; WHEN: Mon Feb 18 13:29:18 2008

;; MSG SIZE  rcvd: 615



如果安装好 bind之后 没有 /var/named/named.ca 这个文件


dig ( /usr/bin/dig ) : Domain Infomation Groper    (域信息搜索器) dns非常常用的客户端工具, 就是到域名服务器系统里面查找它的相关信息,很强大

接下来的很多测试都要用到它

    -t  (type) 指定记录类型,并指明通过哪个服务器查询就能够得到很多结果

[root@localhost named]# rpm -ql bind97-utils

/usr/bin/dig            

/usr/bin/host

/usr/bin/nslookup

/usr/bin/nsupdate

/usr/share/man/man1/dig.1.gz

/usr/share/man/man1/host.1.gz

/usr/share/man/man1/nslookup.1.gz

/usr/share/man/man1/nsupdate.1.gz

[root@localhost named]#


[root@localhost named]# man dig

Cannot open the message catalog "man" for locale "zh_CN.UTF-8"

(NLSPATH="<none>")


Formatting page, please wait...

DIG(1)                               BIND9                              DIG(1)


NAME

       dig - DNS lookup utility


SYNOPSIS

       dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m]

           [-p port#] [-q name] [-t type] [-x addr] [-y [hmac:]name:key] [-4]

           [-6] [name] [type] [class] [queryopt...]


       dig [-h]


       dig [global-queryopt...] [query...]


DESCRIPTION

       dig (domain information groper) is a flexible tool for interrogating

       DNS name servers. It performs DNS lookups and displays the answers that

       are returned from the name server(s) that were queried. Most DNS

       administrators use dig to troubleshoot DNS problems because of its

       flexibility, ease of use and clarity of output. Other lookup tools tend

       to have less functionality than dig.


       Although dig is normally used with command-line arguments, it also has


[root@localhost named]# dig -t NS .            (查找根域的ns记录的,能够帮我们查出来根域的所有dns服务器)

但是前提是 主机要能够访问互联网,不然的话,得不到这个结果

image.png

image.png


[root@localhost named]# vim /etc/resolv.conf

#把 nameserver 指向 马哥的 dns 服务器 172.16.0.1 (  172.16.0.1 是可以访问互联网的,它就能够让我们的 # dig -t NS . 获得结果 )

nameserver 192.168.0.1

search localdomain


 /etc/resolv.conf 配置了 nameserver 后 , 如果  # dig -t NS . 得不到结果 或者说结果不全面 ,可以使用 艾特 @a.root-servers.net.  当然上不了互联网的话,这个命令不行

下面的命令表示不借助于本地的服务器,直接到 a.root-servers.net.  查  根到底有多少台服务器

[root@localhost named]# dig -t NS .  @a.root-servers.net.


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -t NS . @a.root-servers.net.

;; global options: +cmd

;; connection timed out; no servers could be reached

[root@localhost named]# 

[root@localhost named]# dig -t NS .  @a.root-servers.net.

image.png

image.png

[root@localhost named]# pwd

/var/named

[root@localhost named]# vim named.localhost        本地主机,将 localhost 解析成 127.0.0.1

 为了避免其它人,为了避免我们的dns服务器配置错误,将 localhost 解析成一个正常的地址

每一个主机都使用localhost访问本机,所以我们定义了一个独特的区域,专门将localhost 解析为 127.0.0.1 (ipv6就是 ::1) 这称为本地回环地址

$TTL 1D

@       IN SOA  @ rname.invalid. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum    否定 TTL时长

        NS      @

        A       127.0.0.1

        AAAA    ::1


[root@localhost named]# pwd

/var/named

[root@localhost named]# vim named.loopback

用于实现将 127.0.0.1 解析成 localhost         这是本地主机名的正反向解析

$TTL 1D

@       IN SOA  @ rname.invalid. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

        NS      @

        A       127.0.0.1

        AAAA    ::1

        PTR     localhost.


我们只要把当前的 dns 服务器启动起来, 就算没装 caching-nameserver 也没关系,因为 bind97 已经把 caching-nameserver 的功能溶合进来了


DNS:

        监听的协议和端口:

                    53/udp

                    53/tcp

                   953/tcp, rndc 监听的   (rndc是远程控制工具 Remote Name Domain Controller  远程域名服务器控制器)

        默认情况下,客户端发起的查询请求,都是使用udp协议 53端口的,因为udp协议的速度要快得多,因为它不需要三次握手

        一般来讲,从服务器到主服务器传输数据的时候,为了保证数据的完整性,可靠的传输,会用到 tcp 的 53号端口

监听三个端口,而且还可以作为缓存服务器直接工作的,任何发往这台主机查询的请求结果都会被缓存下来,我们能不能把dns服务器指向这台主机(把某一个客户端的dns服务器)   (要想把客户端的dns服务器指向这台主机,这台主机要能够递归) 递归什么的都需要进行配置的


[root@localhost named]# service named start            (ctrl+c 暂时没有执行)

[root@localhost named]#

[root@localhost named]# vim /etc/named.conf

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

options {            #   全局选项,定义dns服务器的工作属性的

                          # 下面的这些内容,都是我们的dns服务器,或者说bind服务器,配置文件当中选项当中可以使用的指令加对应的值,或者说可以理解成参数和它的值,用来定义bind软件的工作属性的,而options称为全局选项,全局选项对每一个zone都能生效(下面的zone选项).

        listen-on port 53 { 127.0.0.1; };    # listen指令就是用于说明白我们到底监听在哪个地址的哪个端口上的 127.0.0.1:53不能接受来自远程主机的请求的    我们要想它能够监听工作,必须修改为监听外网地址    如果想监听所有地址 只需要把 { 127.0.0.1; } 去掉就可以了  省略地址不写,只写个  listen-on port 53  就可以了

        listen-on-v6 port 53 { ::1; };

        directory       "/var/named";        # 这个最关键的一个选项 明确说明数据文件目录,(只要告诉dns服务器到哪里去找数据文件即可)

        dump-file       "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";

        allow-query     { localhost; };        # 只允许本地查询

        recursion yes;        #允许别人递归


        dnssec-enable yes;

        dnssec-validation yes;

        dnssec-lookaside auto;


        /* Path to ISC DLV key */

        bindkeys-file "/etc/named .key";

};


logging {

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };,

};


zone "." IN {

        type hint;

        file "named.ca";

};


include "/etc/named.rfc1912.zones";




SOCKET:套接字        Unix 通信编程里面的套接字编程的主要目的就是让客户端能够通过这么一种机制,让位于两个不同主机上的进程能够互相通信的

        IP:PORT


很多软件 C/S:  Client/Server    套接字就是一种让客户端发起请求的时候,到哪儿去请求对方的服务的,那因此每一个服务器只要想让位于两个不同主机上的进程彼此间能够进行通信,一般来讲,服务器端就必须要监听到某个套接字上作为客户端的访问入口的

        127.0.0.1:53            127.0.0.1表示客户端和服务器端必须只能是本机,   接受的客户端来源只能是127.0.0.1的主机,因为 别人访问人的时候,你的地址不可能是 127.0.0.1

       假如 172.16.100.1:53        现在可以接受来自于172.16.100.1主机的客户端请求  来自于127.0.0.1的本机地址 向127.0.0.1:53端口 是不能够进行请求解析的

             但是一般来讲,只要监听到外网地址上 ,本地地址127.0.0.1 是没有关系的,是可以访问53号端口的



      假如客户端    192.168.0.13  向下面这个服务器192.168.0.12:53号端口请求,是无法得到响应的,只有向172.16.100.1:53 请求,,才有响应的 

      这个服务器有两个地址,下面一个地址监听到53号端口上    只有172.16.100.1作为服务器端,向它请求,它才会响应的

                192.168.0.12

                172.16.100.1:53  


       想两个地址都监听    1)种方法    0.0.0.0:53 监听所有地址的53号端口    

                                      2)种方法 

                                                                  192.168.0.12:53

                                                                  172.16.100.1:53  


    监听的这个套接字上,意味着我们的服务器端会不停地期望能够通过这么一个地址,这么一个套接字来接收来自于任何一个客户端的请求,或者说来自于某一个客户端的请求,并且在请求以后,在本地负责处理结束之后,把结果负责响应给客户端,这就是套接字的意义

    位于两个不同主机上的进程要想进行通信,一般来讲,服务器端需要在某个地址上随时等待着客户端的请求,这么一个位置,我们称为套接字.不然的话,你没法接受请求的

    所以我们的web服务器 ftp 服务器要监听套接字,只要接受客户端请求,都要做成套接字,都要监听在套接字上的


[root@localhost named]# mv  /etc/named.conf /etc/named.conf.orig

[root@localhost named]# ll -l /etc/named.conf.orig

root 用户 named组,只有组才有查看权限

-rw-r----- 1 root named 930 2010-02-15 /etc/named.conf.orig

[root@localhost named]#


区域:

    zone "ZONE NAME " IN {

            type    {master|slave|hit|forward};   # 事实上没有花括号,这里的花括号表示从中选一个

};

主区域: 还有定义

            file    "区域数据文件";             # 区域得有区域文件,数据文件本身可以是一个相对路径,相对于 directory "/var/named" 而言的

从区域: 还有定义

            file    "区域数据文件";             # 区域得有区域文件,数据文件本身可以是一个相对路径,相对于 directory "/var/named" 而言的

            masters    { master1_ip; master2_ip; };           # 花括号前后要有空格,每个地址后有分号,结尾也是分号   (   masters     { 主DNS服务器地址; };  )

根区域:  主要区别是  zone "." IN

            type  hint;

            file    "区域数据文件";             # 区域得有区域文件,数据文件本身可以是一个相对路径,相对于 directory "/var/named" 而言的



[root@localhost named]# vim /etc/named.conf

这个文件中每一个完整的语句必须要使用 分号( ; )结尾,花括号(大括号)的前后只要不在同一行中并且有字符(分号则无所谓 因为分号是结束符),得有空格; 如图image.png

其实只需要写下面这么多,基本上一个缓存名称服务器就建好了

options {

      directory "/var/named";

};

zone "." IN {

      type hint;

      file "named.ca";

};

zone "localhost" IN {

      type master;

      file "named.localhost";

};

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

      type master;

      file "named.loopback";

};


改用户组

[root@localhost named]# chown root:named /etc/named.conf

改权限

[root@localhost named]# chmod 640 /etc/named.conf

检查主配置文件语法错误

[root@localhost named]# named-checkconf            # 不报任何信息就是最好的信息

[root@localhost named]#

 检查区域文件语法错误

[root@localhost named]# named-checkzone "." /var/named/named.ca

zone ./IN: has 0 SOA records

zone ./IN: not loaded due to errors.

提示没有装载因为有错误,但是事实上这里是没有错误的,不用管它,因为这是根区域而已

[root@localhost named]#

 检查区域文件语法错误

[root@localhost named]# named-checkzone "localhost" /var/named/named.localhost

zone localhost/IN: loaded serial 0

OK

[root@localhost named]#

[root@localhost named]# named-checkzone "0.0.127.in-addr.arpa" /var/named/named.loopback

zone 0.0.127.in-addr.arpa/IN: loaded serial 0

OK

[root@localhost named]#

以前支持 configtest 参数的,现在不支持了

当然 我们现在可以写脚本(包含上面几个检测的功能),补到 /etc/init.d/named 文件里面去,也行

[root@localhost named]# service named configtest

用法:/etc/init.d/named {start|stop|status|restart|try-restart|reload|force-reload}

[root@localhost named]#

启动  named  服务

[root@localhost named]# service named start

Starting named:                                            [确定]

[root@localhost named]#

启动过程中产生的信息 都会记录到 /var/log/messages 当中去

[root@localhost named]# tail /var/log/messages

[root@localhost ~]# tail /var/log/messages

Jan 29 21:00:16 localhost named[19808]: automatic empty zone: D.F.IP6.ARPA

Jan 29 21:00:16 localhost named[19808]: automatic empty zone: 8.E.F.IP6.ARPA

Jan 29 21:00:16 localhost named[19808]: automatic empty zone: 9.E.F.IP6.ARPA

Jan 29 21:00:16 localhost named[19808]: automatic empty zone: A.E.F.IP6.ARPA

Jan 29 21:00:16 localhost named[19808]: automatic empty zone: B.E.F.IP6.ARPA

Jan 29 21:00:16 localhost named[19808]: command channel listening on 127.0.0.1#953

Jan 29 21:00:16 localhost named[19808]: command channel listening on ::1#953

Jan 29 21:00:16 localhost named[19808]: zone 0.0.127.in-addr.arpa/IN: loaded serial 0

Jan 29 21:00:16 localhost named[19808]: zone localhost/IN: loaded serial 0

Jan 29 21:00:16 localhost named[19808]: running        # 已经运行了

[root@localhost ~]#

Jan 29 20:44:15 localhost setroubleshoot: SELinux is preventing tpvmgp (cupsd_t)  "execute_no_trans" to /usr/lib/vmware-tools/bin32/appLoader (lib_t). For complete SELinux messages. run sealert -l 13973bd4-ab0c-4332-95c2-f308538b5d32

Jan 29 20:44:15 localhost setroubleshoot: SELinux is preventing tpvmlp (cupsd_t)    "execute_no_trans" to /usr/lib/vmware-tools/bin32/appLoader (lib_t). For complete SELinux messages. run sealert -l 13973bd4-ab0c-4332-95c2-f308538b5d32

[root@localhost named]#

马哥这边保护作用  the working directory is not writable 工作目录不能写,,,,,为什么我这边没有这一行呢?

大约是因为  权限的问题吧,没有缩小权限吧 我的/var/named/目录的权限如下

[root@localhost ~]# ls -lda /var/named/

drwxr-x--- 5 root named 4096 01-29 10:12 /var/named/

image.png


我们要确保 selinux 不要启动起来        

因为 selinux的控制的机制太复杂了,虽然对dns没有什么影响,但是以防万一,关掉它

临时关闭

[root@localhost named]# getenforce        # 查看当前的 selinux  的状态

Enforcing        # 表示启动了

[root@localhost named]# setenforce 0        #临时性的关闭selinux  假如要临时启动  setenforce 1        

[root@localhost named]# getenforce

Permissive        #  ( Permissive 许可的 放纵的 )  表示没启动,或者说不受影响  如果为 disabled 那就更没有影响了

[root@localhost named]# 


永久关闭

# vim /etc/selinux/config

找到 SELINUX  改为 permissive 或者 disabled 都可以,   ( 改成disabeld 也可以,只是启动起来更麻烦一点 )

改配置文件 只有在下次启动时才生效

image.png

image.png



[root@localhost ~]# netstat -tnlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      4086/portmap

tcp        0      0 192.168.0.55:53             0.0.0.0:*                   LISTEN      19808/named

tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      19808/named

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      4499/sshd

tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      3216/cupsd

tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      19808/named

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      4558/sendmail

tcp        0      0 0.0.0.0:925                 0.0.0.0:*                   LISTEN      4135/rpc.statd

tcp        0      0 :::22                       :::*                        LISTEN      4499/sshd

tcp        0      0 ::1:953                     :::*                        LISTEN      19808/named

[root@localhost ~]#

[root@localhost ~]# netstat -tunlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      4086/portmap

tcp        0      0 192.168.0.55:53             0.0.0.0:*                   LISTEN      19808/named

tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      19808/named

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      4499/sshd

tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      3216/cupsd

tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      19808/named

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      4558/sendmail

tcp        0      0 0.0.0.0:925                 0.0.0.0:*                   LISTEN      4135/rpc.statd

tcp        0      0 :::22                       :::*                        LISTEN      4499/sshd

tcp        0      0 ::1:953                     :::*                        LISTEN      19808/named

udp        0      0 0.0.0.0:919                 0.0.0.0:*                               4135/rpc.statd

udp        0      0 0.0.0.0:922                 0.0.0.0:*                               4135/rpc.statd

udp        0      0 192.168.0.55:53             0.0.0.0:*                               19808/named

udp        0      0 127.0.0.1:53                0.0.0.0:*                               19808/named

udp        0      0 0.0.0.0:56035               0.0.0.0:*                               4691/avahi-daemon

udp        0      0 0.0.0.0:5353                0.0.0.0:*                               4691/avahi-daemon

udp        0      0 0.0.0.0:111                 0.0.0.0:*                               4086/portmap

udp        0      0 0.0.0.0:631                 0.0.0.0:*                               3216/cupsd

udp        0      0 :::5353                     :::*                                    4691/avahi-daemon

udp        0      0 :::34034                    :::*                                    4691/avahi-daemon

image.png

[root@localhost ~]#

[root@localhost ~]# ping www.baidu.com            由下图可以访问互联网

image.png

[root@localhost ~]# vim /etc/resolv.conf

#nameserver 192.168.0.1

nameserver 192.168.0.55

search localdomain

image.png


[root@localhost ~]# dig -t NS .       通过这个命令来测下根   但是结果很可能是缓存中的内容

image.png

image.png



[root@localhost ~]# dig -t NS . @A.root-servers.net.        直接通过这台服务器来找  可以找到根服务器节点 由此我们就可以在互联网上去解析了

image.png

image.png



[root@localhost ~]# ping www.baidu.com        这个主机名 www.baidu.com 是要通过本机来解析的,本机不负责解析这个域,本机不知道 www.baidu.com  对应的ip地址是什么,它就会找根,然后通过迭代与递归,就解析出结果了,就ping通了,,,,所以说我们当前这台主机能够直接解析主机名了        它就算自己不知道,它就会去找根,通过迭代,以此能最终找到结果

image.png

[root@localhost ~]# ping www.magedu.com

image.png


[root@localhost ~]# chkconfig --list named

named           0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

[root@localhost ~]#


[root@localhost ~]# chkconfig named on

[root@localhost ~]# chkconfig --list named            2,3,4,5就是on了        现在这个服务就能开机自动启动了,一个缓存的dns服务器依然能够正常工作

named           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@localhost ~]#

此时我们的dns服务器仅仅是一个缓存dns服务器

比如 互联网上的magedu.com 注册的域名不算了,

我们换一个域名 mageedu.com ,假设在.com 上已经授权给当前这台主机进行解析了,怎么能够让当前这台主机扮演成一个互联网上的dns服务器,,,那我们就要定义自己负责的这个区域了


[root@localhost ~]# vim /etc/named.conf

options {

      directory "/var/named";

};

zone "." IN {

      type hint;

      file "named.ca";

};

zone "localhost" IN {

      type master;

      file "named.localhost";

};

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

      type master;

      file "named.loopback";

};

zone "mageedu.com" IN {

      type master;

      file "mageedu.com.zone";

};

~

[root@localhost ~]# named-checkconf            现在没有mageedu.com.zone这个文件,但是检查时,却没有报错,因为它只检查语法错误

[root@localhost ~]#


[root@localhost ~]# service named restart        但是重启下会报错的        (语法错误,或逻辑错误在重启服务器时,可以检查得出来的            所以不要冒然重启,必须要准备完成,不然的话,你的正在工作的服务器也没法工作了)

Stopping named: .                                          [确定]

Starting named:

Error in named configuration:

zone localhost/IN: loaded serial 0

zone 0.0.127.in-addr.arpa/IN: loaded serial 0

zone mageedu.com/IN: loading from master file mageedu.com.zone failed: file not found

zone mageedu.com/IN: not loaded due to errors.

_default/mageedu.com/IN: file not found

                                                           [失败]

[root@localhost ~]#

[root@localhost ~]# named-checkconf /etc/named.conf        即使指定配置文件名也不会报错,因为它不是语法错误,这是逻辑错误

[root@localhost ~]#

下面的把分号去了,才是语法错误

image.png

此时检查,就有语法错误了

image.png

[root@localhost ~]# cd /var/named/

[root@localhost named]# vim mageedu.com.zone            建这个区域文件吧    区域数据文件里面只能放资源记录

TTL 600        # 定义一下全局的TTL  600秒 ,下面的就不用写ttl值了,自动从这里继承

mageedu.com.     IN      SOA     ns1.mageedu.com.    admin.mageedu.com. (

            2013040101

                        1H

                        5M

                        2D

                        6H   )     # mageedu.com.  可以用艾特@代替(@指的是区域名称)    ns1.mageedu.com.  是主dns,是不是可以不是主dns?

            IN      NS      ns1        # zone name 跟上面的一样(相同),可以省掉,不用写(表示从上一条直接继承)    这里ns1表示 (ns1.mageedu.com. ) 不写全就不用加点了,它会自动补上区域名字的,而且会自动在后面加上点

            IN      MX      10      mail        #mail 也是一个FQDN

ns1      IN      A    192.168.0.55        # 这里IP指错了,问题不大,因为它不在本机用,真正解析本机的dns服务器是来自父域的

mail     IN      A     192.168.0.15   

www    IN      A    192.168.0.55

www    IN      A    192.168.0.25

ftp       IN      A    www


看看权限

[root@localhost named]# ll

总计 64

drwxrwx--- 2 named named 4096 2013-07-29 data

drwxrwx--- 2 named named 4096 2013-07-29 dynamic

-rw-r--r-- 1 root  root   243 01-30 12:40 mageedu.com.zone

-rw-r----- 1 root  named 1892 2008-02-18 named.ca

-rw-r----- 1 root  named  152 2009-12-15 named.empty

-rw-r----- 1 root  named  152 2007-06-21 named.localhost

-rw-r----- 1 root  named  168 2009-12-15 named.loopback

drwxrwx--- 2 named named 4096 2013-07-29 slaves


修改权限和所有者  

[root@localhost named]# chmod 640 mageedu.com.zone

[root@localhost named]# chown root:named mageedu.com.zone

[root@localhost named]#

检查区域文件

[root@localhost named]# named-checkzone "mageedu.com" /var/named/mageedu.com.zone

dns_master_load: /var/named/mageedu.com.zone:2: unexpected end of line

dns_master_load: /var/named/mageedu.com.zone:1: unexpected end of input

/var/named/mageedu.com.zone:8: using RFC1035 TTL semantics

dns_rdata_fromtext: /var/named/mageedu.com.zone:14: near 'www': bad dotted quad

zone mageedu.com/IN: loading from master file /var/named/mageedu.com.zone failed: unexpected end of input

zone mageedu.com/IN: not loaded due to errors.  (报这样的错,大概是要设置  A  为 CNAME 吧)

[root@localhost named]#


[root@localhost named]# vim /var/named/mageedu.com.zone

$TTL 600            #这里TTL前面要个美元符 ( $ ),因为这里定义了一个宏,因为它不是一条记录,必须要使用$进行引用,任何声明这样一个宏的时候,要加$

mageedu.com.    IN      SOA     ns1.mageedu.com.  admin.mageedu.com. (

                        2013040101

                        1H

                        5M

                        2D

                        6H )

                IN      NS      ns1

                IN      MX      10      mail

ns1             IN      A       192.168.0.55

mail            IN      A       192.168.0.15

www             IN      A       192.168.0.15

www             IN      A       192.168.0.55

ftp             IN      CNAME       www


 [root@localhost named]# named-checkzone "mageedu.com" /var/named/mageedu.com.zone

zone mageedu.com/IN: loaded serial 2013040101

OK

[root@localhost named]#


[root@localhost named]# service named restart

Stopping named:                                            [确定]

Starting named:                                            [确定]

[root@localhost named]#

域名服务器一定要指向自己

[root@localhost named]# vim /etc/resolv.conf

#nameserver 192.168.0.1

nameserver 192.168.0.55

search localdomain


不指向自己也没关系

dig -t RRT NAME  ( @IP )               # (RRT 就是 resource record type 资源记录类型) (加上@IP  表示直接切换到这个dns服务器上去查找,不经过中间互联网转过来转过去)

        dig -t NS mageedu.com            # 有NS记录的只能是区域



[root@localhost named]# dig -t A www.mageedu.com


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -t A www.mageedu.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55380

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1


;; QUESTION SECTION:        # 问题

;www.mageedu.com.               IN      A


;; ANSWER SECTION:                # 给出的答案

www.mageedu.com.        600     IN      A       192.168.0.55

www.mageedu.com.        600     IN      A       192.168.0.15


;; AUTHORITY SECTION:            #  授权区域 (权威区域)  明确告诉 哪个dns服务器是 www.mageedu.com.  的权威dns服务器

mageedu.com.            600     IN      NS      ns1.mageedu.com.


;; ADDITIONAL SECTION:        #补充段,附加段,额外段    任何一个 NS记录都有一个A记录与之相随 这是为了避免二次查询,因为我们常用NS(或者得到NS)的时候,得到的是一个主机名,而这个FQDN最终还是要转换成ip地址的,所以它干脆一下子直接转换出来了

ns1.mageedu.com.        600     IN      A       192.168.0.55


;; Query time: 13 msec

;; SERVER: 192.168.0.55#53(192.168.0.55)

;; WHEN: Wed Jan 30 17:20:56 2019

;; MSG SIZE  rcvd: 99


[root@localhost named]#

再执行一次

[root@localhost named]# dig -t A www.mageedu.com


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -t A www.mageedu.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60040

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1


;; QUESTION SECTION:

;www.mageedu.com.               IN      A


;; ANSWER SECTION:

www.mageedu.com.        600     IN      A       192.168.0.15    #顺序与上次不同了 ,这就叫负载均衡了

www.mageedu.com.        600     IN      A       192.168.0.55


;; AUTHORITY SECTION:

mageedu.com.            600     IN      NS      ns1.mageedu.com.


;; ADDITIONAL SECTION:

ns1.mageedu.com.        600     IN      A       192.168.0.55


;; Query time: 3 msec

;; SERVER: 192.168.0.55#53(192.168.0.55)

;; WHEN: Wed Jan 30 17:27:57 2019

;; MSG SIZE  rcvd: 99


[root@localhost named]#

[root@localhost named]# dig -t CNAME ftp.mageedu.com


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -t CNAME ftp.mageedu.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26851

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1


;; QUESTION SECTION:

;ftp.mageedu.com.               IN      CNAME


;; ANSWER SECTION:            # ftp.mageedu.com.  有正式名称 www.mageedu.com.

ftp.mageedu.com.        600     IN      CNAME   www.mageedu.com.


;; AUTHORITY SECTION:

mageedu.com.            600     IN      NS      ns1.mageedu.com.


;; ADDITIONAL SECTION:

ns1.mageedu.com.        600     IN      A       192.168.0.55


;; Query time: 3 msec

;; SERVER: 192.168.0.55#53(192.168.0.55)

;; WHEN: Wed Jan 30 17:30:18 2019

;; MSG SIZE  rcvd: 85


[root@localhost named]#


[root@localhost named]# dig -t NS  mageedu.com            # NS 后面应该跟的是区域名称


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -t NS mageedu.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1976

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1


;; QUESTION SECTION:

;mageedu.com.                   IN      NS


;; ANSWER SECTION:        # 这个区域  mageedu.com 的dns服务器是  ns1.mageedu.com.

mageedu.com.            600     IN      NS      ns1.mageedu.com.


;; ADDITIONAL SECTION:        # 而且 ns1.mageedu.com.  还有个地址是  192.168.0.55

ns1.mageedu.com.        600     IN      A       192.168.0.55


;; Query time: 2 msec

;; SERVER: 192.168.0.55#53(192.168.0.55)

;; WHEN: Wed Jan 30 17:32:10 2019

;; MSG SIZE  rcvd: 63


[root@localhost named]#

[root@localhost named]# dig -t MX  mageedu.com        # MX的名称也只能是一个区域


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -t MX mageedu.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44514

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2


;; QUESTION SECTION:

;mageedu.com.                   IN      MX


;; ANSWER SECTION:        # 有MX记录  mail.mageedu.com.

mageedu.com.            600     IN      MX      10 mail.mageedu.com.


;; AUTHORITY SECTION:

mageedu.com.            600     IN      NS      ns1.mageedu.com.


;; ADDITIONAL SECTION:        # 下一行是mail的ip地址

mail.mageedu.com.       600     IN      A       192.168.0.15

ns1.mageedu.com.        600     IN      A       192.168.0.55


;; Query time: 5 msec

;; SERVER: 192.168.0.55#53(192.168.0.55)

;; WHEN: Wed Jan 30 17:34:55 2019

;; MSG SIZE  rcvd: 100


[root@localhost named]#

由上 所以我们的dns服务器 正向区域解析完全可以正常工作了


dig -x IP        实现反向查询 表示查找这个IP地址的主机名 ,根据IP查FQDN



host命令

        host -t RRT NAME        它没法使用艾特@命令 ,它也能够查询某个对应名称的解析结果


[root@localhost named]# host -t A www.mageedu.com        # 查看一下 这个 www.mageedu.com FQDN 有没有A记录

www.mageedu.com has address 192.168.0.15

www.mageedu.com has address 192.168.0.55


[root@localhost named]# host -t A www.mageedu.com        # 再执行一次 顺序不一样

www.mageedu.com has address 192.168.0.55

www.mageedu.com has address 192.168.0.15

[root@localhost named]#


[root@localhost named]# host -t NS mageedu.com        # 查一下    mageedu.com    的NS记录,结果是  ns1.mageedu.com.

mageedu.com name server ns1.mageedu.com.

[root@localhost named]#

[root@localhost named]# host -t MX mageedu.com       # 查一下    mageedu.com    的MX记录,结果是 mail.mageedu.com.

mageedu.com mail is handled by 10 mail.mageedu.com.

[root@localhost named]# host -t SOA  mageedu.com    # 查一下     mageedu.com    的SOA  记录,时间自动转换成对应的秒数

mageedu.com has SOA record ns1.mageedu.com. admin.mageedu.com. 2013040101 3600 300 172800 21600

[root@localhost named]#

[root@localhost named]# dig  -t SOA mageedu.com        # dig 也可以查SOA的


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -t SOA mageedu.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28522

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1


;; QUESTION SECTION:

;mageedu.com.                   IN      SOA


;; ANSWER SECTION:        # 显示出来的结果与  host 方法是一样的

mageedu.com.            600     IN      SOA     ns1.mageedu.com. admin.mageedu.com. 2013040101 3600 300 172800 21600


;; AUTHORITY SECTION:

mageedu.com.            600     IN      NS      ns1.mageedu.com.


;; ADDITIONAL SECTION:

ns1.mageedu.com.        600     IN      A       192.168.0.55


;; Query time: 3 msec

;; SERVER: 192.168.0.55#53(192.168.0.55)

;; WHEN: Wed Jan 30 20:34:16 2019

;; MSG SIZE  rcvd: 105


[root@localhost named]#



命令 nslookup: name server look up  交互式命令,两种工作模式

            1)交互式

                    nslookup >

                                    server IP 第一命令,直接设定dns服务器

                                    set q=RRT 第二命令,设定资源记录类型

                                    NAME 第三命令,进行查询

我们当前的这个dns服务器也能够让其它的主机进行dns查询

  

            2)命令行

我们只来说说它的交互式模式,  nslookup  ,,,,,windows  也支持的,用法也近似


我们在 windows  下执行看看

image.png

我们可以让 nslookup  使用一个特殊的dns 进行解析

明确说明 使用 192.168.0.55 来查询 ,指定 server表示切换 dns服务器的,就是通过谁来查询

image.png

set  q= 来设定查询资源记录类型

  ( set  q=A 表示查询A记录类型 )

  ( set  q=NS 表示查询NS记录类型 )


image.png



下图是马哥的 可以正常查询

image.png

下面是我的 为什么查询超时  经反复验证是由于 192.168.0.55 的防火墙的问题,把  192.168.0.55 的防火墙  的规则全部清空掉就可以了 

image.png



下面做反向区域的配置

     反向区域的名称  0.168.192.in-addr.arpa

[root@localhost named]# vim /etc/named.conf


options {

      directory "/var/named";

};

zone "." IN {

      type hint;

      file "named.ca";

};

zone "localhost" IN {

      type master;

      file "named.localhost";

};

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

      type master;

      file "named.loopback";

};

zone "mageedu.com" IN {

      type master;

      file "mageedu.com.zone";

};

zone "0.168.192.in-addr-arpa" IN{         #0.55.168.192.in-addr-arpa 是错了,应该写成  0.55.168.192.in-addr.arpa

      type master;

      file "192.168.0.zone";

};


把正向复制为反向,再改改

[root@localhost named]# pwd

/var/named

[root@localhost named]# cp mageedu.com.zone 192.168.0.zone -p

[root@localhost named]#


[root@localhost named]# ll

总计 72

-rw-r----- 1 root  named  249 01-30 20:32 192.168.0.zone    # 权限 属主属组 仍旧保留

drwxrwx--- 2 named named 4096 2013-07-29 data

drwxrwx--- 2 named named 4096 2013-07-29 dynamic

-rw-r----- 1 root  named  249 01-30 20:32 mageedu.com.zone

-rw-r----- 1 root  named 1892 2008-02-18 named.ca

-rw-r----- 1 root  named  152 2009-12-15 named.empty

-rw-r----- 1 root  named  152 2007-06-21 named.localhost

-rw-r----- 1 root  named  168 2009-12-15 named.loopback

drwxrwx--- 2 named named 4096 2013-07-29 slaves

[root@localhost named]#

[root@localhost named]# vim 192.168.0.zone

$TTL 600

@       IN      SOA     ns1.mageedu.com.  admin.mageedu.com. (        # @直接保留继承 SOA除了区域名称不一样,其它的都一样

                        2013040101

                        1H

                        5M

                        2D

                        6H )

                IN      NS      ns1.mageedu.com.        # 这里必须写成完整名称   (NS 也是 除了区域名称不一样,其它都一样)

                #  IN      MX      10      mail            #反向区域里不需要MX记录

                                                                      #反向区域里不需要A记录

55                 IN    PTR    ns1.mageedu.com.  

55                 IN    PTR    www.mageedu.com.  

15                 IN    PTR    mail.mageedu.com.  

15                 IN    PTR    www.mageedu.com.  


#ns1             IN      A       192.168.0.55            

#mail            IN      A       192.168.0.15

#www             IN      A       192.168.0.15

#www             IN      A       192.168.0.55

# ftp             IN      CNAME   www            # 别名也不要,因为别名全是 FQDN 的别名,都是正向解析的别名        反向解析中也可以有别名,但是很少用到

            1H


检查下配置语法错误

[root@localhost named]# named-checkconf

[root@localhost named]#


检查下区域文件语法错误         "0.55.168.192.in-addr-arpa" 是区域名   192.168.0.zone是区域文件

[root@localhost named]# named-checkzone "0.55.168.192.in-addr-arpa" 192.168.0.zone   #    0.55.168.192.in-addr-arpa 是错了,应该写成  0.55.168.192.in-addr.arpa

zone 0.55.168.192.in-addr-arpa/IN: loaded serial 2013040101

OK

[root@localhost named]#


重启dns服务器

[root@localhost named]# service named restart

Stopping named: .                                          [确定]

Starting named:                                            [确定]

[root@localhost named]#


还用 windows 来检查 nslookup

下面是 windows  执行的结果 

*** [192.168.0.55] 找不到 55.0.168.192.in-addr.arpa.: Non-existent domain

image.png

下面是 linux   执行的结果 

** server can't find 55.0.168.192.in-addr.arpa.: NXDOMAIN

image.png

经检查 是 

/etc/named.conf 文件中 把 0.168.192.in-addr.arpa 错写成了 0.168.192.in-addr-arpa

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

      type master;

      file "192.168.0.zone";

};

正确的  /etc/named.conf 内容如下 

[root@localhost named]# vim /etc/named.conf

options {

      directory "/var/named";

};

zone "." IN {

      type hint;

      file "named.ca";

};

zone "localhost" IN {

      type master;

      file "named.localhost";

};

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

      type master;

      file "named.loopback";

};

zone "mageedu.com" IN {

      type master;

      file "mageedu.com.zone";

};

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

      type master;

      file "192.168.0.zone";

};

~

~

重启 dns 服务器 # service named restart  后

 windows  如下

看看  192.168.0.55 的主机名是什么

 image.png

看看这个区域的dns服务器是什么

image.png

linux 如下

image.png



[root@localhost named]# dig -x 192.168.0.55        看看这个ip的主机名是什么


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -x 192.168.0.55

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48363

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1


;; QUESTION SECTION:

;55.0.168.192.in-addr.arpa.     IN      PTR


;; ANSWER SECTION:

55.0.168.192.in-addr.arpa. 600  IN      PTR     ns1.mageedu.com.       # 主机名

55.0.168.192.in-addr.arpa. 600  IN      PTR     www.mageedu.com.    # 也是主机名


;; AUTHORITY SECTION:

0.168.192.in-addr.arpa. 600     IN      NS      ns1.mageedu.com.


;; ADDITIONAL SECTION:

ns1.mageedu.com.        600     IN      A       192.168.0.55


;; Query time: 4 msec

;; SERVER: 192.168.0.55#53(192.168.0.55)

;; WHEN: Wed Jan 30 22:45:46 2019

;; MSG SIZE  rcvd: 120


[root@localhost named]#

[root@localhost named]# dig -x 192.168.0.15


; <<>> DiG 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2 <<>> -x 192.168.0.15

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42003

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1


;; QUESTION SECTION:

;15.0.168.192.in-addr.arpa.     IN      PTR


;; ANSWER SECTION:        # 192.168.0.15 这个地址 也有两个主机名

15.0.168.192.in-addr.arpa. 600  IN      PTR     mail.mageedu.com.

15.0.168.192.in-addr.arpa. 600  IN      PTR     www.mageedu.com.


;; AUTHORITY SECTION:

0.168.192.in-addr.arpa. 600     IN      NS      ns1.mageedu.com.


;; ADDITIONAL SECTION:

ns1.mageedu.com.        600     IN      A       192.168.0.55


;; Query time: 2 msec

;; SERVER: 192.168.0.55#53(192.168.0.55)

;; WHEN: Wed Jan 30 22:46:58 2019

;; MSG SIZE  rcvd: 125


[root@localhost named]#



通过 windows 来解析的时候,使用nslookup的时候,首先 使用server指令指向这台dns服务器主机

来解析的 ,不指定 server  的话,是不能解析的

这个dns 101.198.198.198 (电信 给的 dns )不是负责 mageedu.com (www.mageedu.com)域的,它会去找根,通过迭代与递归 找根,然后找.com 再然后找 mageedu.com ,这里的域名是测试的(如果没有注册mageedu.com这个域名 ),所以找不到这个域名,所以就不能解析了

要在互联网上能用的话,就要与.com去买mageedu.com这个域名

(比如去 godaddy. com注册,不需备案) (在自己公司内部哪怕把ibm拿过来用也没事,在自己公司内部建.com .org 建根, 都是可以的 )

image.png






普通分类: