Linux基础及总结13之DNS

1、简述DNS服务器原理,并搭建主-辅服务器。

    1)、在浏览器中输入www.baidu.com 域名,操作系统会先检查自己本地的hosts文件是存在这个网址映射关系,如果存在会优先调用本地的IP地址映射,完成域名解析。

    2)、如果本地hosts里没有对应域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有直接返回应答,完成域名解析。

    3)、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

    4)、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

    5)、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,会去.com域的这台服务器请求解析。.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会请求baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机最终完成域名解析。

    6)、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间的交互查询就是迭代查询。


    主辅DNS服务器搭建

        主DNS:192.168.2.238   从DNS:192.168.2.239     测试域名:www.dnstest.com  客户端机器:192.168.2.240

        1)在主从服务器上安装bind包  yum -y install bind

        2)修改主服务器dns配置文件  vim /etc/named.conf

            将此行注释运行所有机器访问dns,dns默认53端口是监听在本机,

            //      listen-on port 53 { localhost; };

            允许所有主机查询

            allow-query    { any; };

            //      安全限制,只允许dns从服务器查询

             allow-transfer { 192.168.2.239; };

        3)添加解析的域,创建解析域的数据库文件

            vim /var/named/dnstest.com.zone

            $TTL 1D

            @    IN      SOA  master.dnstest.com admin.dnstest.com. (

                        1

                        1D

                        1H

                        1W

                        3H )

              NS    master

               NS    slave1

            master IN  A    192.168.2.238

            slave1 IN  A    192.168.2.239

            www    CNAME    webapp

            webapp IN  A    192.168.2.238

            webapp IN  A    192.168.2.239

        4)添加域配置,type指定类型为dns主服务器,file指定域解析的数据库文件

            vim /etc/named.rfc1912.zones

                zone "dnstest.com" {

                    type master;

                    file "dnstest.com.zone";

                };

        5)启动dns服务并验证主DNS服务域名解析

           在客户端机器上验证 dig -t A www.dnstest.com @192.168.2.238   

             6)从DNS服务器配置

                修改从服务器dns配置文件

                vim /etc.named.conf

                将此行注释运行所有机器访问dns,dns默认53端口是监听在本机,

                //      listen-on port 53 { localhost; };

                允许所有主机查询

                allow-query    { any; };

                //      安全限制,不允许任何dns服务器与当前dns服务器同步数据

                    allow-transfer { none; };

        7)添加同步域配置,

            vim /etc/named.rfc1912.zones

            zone "kang.com" IN {

                    type slave;

                    masters {192.168.2.238;};

                    file "slaves/dnstest.com.zone.slave";

                };

        8)启动从节点上的dns服务器,查看主节点数据库文件是否同步成功

                systemctl     start     named

                ls /var/named/slaves/   文件同步成功

        9)验证使用从节点解析域名是否正常,同时测试将主服务器dns服务停止使用dns从节点是否还能正常解析域名

            dig -t A www.dnstest.com @192.168.2.239

    停止主DNS服务器,验证从服务器是否解析正常

dig -t A www.dnstest.com @192.168.2.239

        10)DNS主从服务器搭建完成。

2、搭建并实现智能DNS。

        实验环境: dns服务器1台:192.168.2.241     客户端1台:192.168.2.238,192.168.6.41,127.0.0.1

        www.dnstest.com  A记录解析的IP分别是:192.168.2.239、192.168.6.181、119.29.29.29

        1)在dns服务端安装bind包  yum -y install bind

        2)修改named.conf ,定义各地的ip地址列表,注意事项小网段定义在前,大网段定义在后,否则不能实现智能解析

            acl beijingnet { 192.168.2.0/24;  };

            acl shenzhennet { 192.168.6.0/24;  };

            acl othernet { any;  };

        3)在/var/named/目录下创建3个区域数据库文件,实际生产环境ns解析服务器可使用对应区域的IP,这里实验使用同一个地址,同时修改3个文件的权限chgrp named dnstest.com.zone.*

               dnstest.com.zone.beijing

            $TTL 1D

            @  IN SOA ns1 admin ( 1 1H 1H 1D 3H )

                  NS  ns1

                ns1  A    192.168.2.241

                www  A    192.168.2.239

               dnstest.com.zone.shenzhen

            $TTL 1D

            @  IN SOA ns1 admin ( 1 1H 1H 1D 3H )

                  NS  ns1

                ns1  A    192.168.2.241

               www  A    192.168.6.181

               dnstest.com.zone.other

            $TTL 1D

            @  IN SOA ns1 admin ( 1 1H 1H 1D 3H )

                  NS  ns1

                ns1  A    192.168.2.241

                www  A    119.29.29.29

        4)定义bind view,定了view后,必须将所有的zone放到view中

        在vim named.conf中定义

        view view_beijing {

        match-clients { beijingnet; };

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

        };

        view view_shanghai {

        match-clients { shenzhennet; };

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

        };

        view view_other {

        match-clients { othernet; };

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

        };

        5)将/etc/named.named.rfc1912.conf放到view中,将view中定义的zone配置段放到/etc/named.named.rfc1912.zones文件中,便于管理

        zone "dnstest.com" {

          type master;

          file "dnstest.com.zone.beijing";

        };

        zone "dnstest.com" {

          type master;

          file "dnstest.com.zone.shenzhen";

        };

        zone "dnstest.com" {

          type master;

          file "dnstest.com.zone.other";

        };

        6)将named.conf文件中的如下配置段放入到/etc/named.named.rfc1912.zones文件中

        zone "." IN {

        type hint;

        file "named.ca"

        };

        7)将/etc/named.named.rfc1912.zones复制3份,分别修改里面的zone为定义的区域,同时修改3个文件的权限chgrp named dnstest.com.zone.*

        cp /etc/named.named.rfc1912.zones /etc/named.named.rfc1912.zones.beijing

        zone "dnstest.com" {

          type master;

          file "dnstest.com.zone.beijing"

        };

        cp /etc/named.named.rfc1912.zones /etc/named.named.rfc1912.zones.shenzhen

        zone "dnstest.com" {

          type master;

          file "dnstest.com.zone.shenzhen"

        };

        /etc/named.named.rfc1912.zones 为other配置文件

        zone "dnstest.com" {

          type master;

          file "dnstest.com.zone.other"

        };

        8)启动dns服务器,并在不同网段的客户端机器上验证www.dnstest.com域名的dns解析

            在192.168.2.0网段客户端机器上验证beijingdns解析  dig www.dnstest.com @192.168.2.241      

    在192.168.6.0网段客户端机器上验证beijingdns解析  dig www.dnstest.com @192.168.2.241        

在其他网段客户端机器上验证other解析,dig www.dnstest.com   @127.0.0.1

3、编译安装Mariadb,并启动后可以正常登录

    1)下载并解压mariadb源码包 wget https://github.com/MariaDB/server/archive/mariadb-10.2.18.tar.gz

        tar xf mariadb-10.2.18.tar.gz

    2)安装编译时所需依赖包

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel

    3)创建程序运行用户和mariadb数据存放目录

        mkdir -p /root/data/mysql

        useradd -r -s /sbin/nologin -d /data/mysql/

        chown mysql.mysql /data/mysql/

    4)编译安装

        cmake . \

        -DCMAKE_INSTALL_PREFIX=/data/app/mysql \

        -DMYSQL_DATADIR=/data/mysql/ \

        -DSYSCONFDIR=/etc/ \

        -DMYSQL_USER=mysql \

        -DWITH_INNOBASE_STORAGE_ENGINE=1 \

        -DWITH_ARCHIVE_STORAGE_ENGINE=1 \

        -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

        -DWITH_PARTITION_STORAGE_ENGINE=1 \

        -DWITHOUT_MROONGA_STORAGE_ENGINE=1 \

        -DWITH_DEBUG=0 \

        -DWITH_READLINE=1 \

        -DWITH_SSL=system \

        -DWITH_ZLIB=system \

        -DWITH_LIBWRAP=0 \

        -DENABLED_LOCAL_INFILE=1 \

        -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \

        -DDEFAULT_CHARSET=utf8mb4 \

        -DDEFAULT_COLLATION=utf8mb4_general_ci

     5)安装

            make -j 4 && make install 

        6)配置mariadb环境变量

            echo 'PATH=/data/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh

            加载环境变量    source /etc/profile.d/mysql.sh

        7)初始化数据库

            进入到mariadb程序安装目录  cd /data/app/mysql/

            ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

        8)准备mariadb配置文件

            cp /data/app/mysql/support-files/my-huge.cnf /etc/my.cnf

        9)准备mariadb启动脚本

            cp /data/app/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

        10) 启动mariadb服务

                chkconfig --add mysqld;systemctl start mysqld        

        11)修改登录密码,数据库安装完成。

            mysqladmin -uroot password "new_password";

你可能感兴趣的:(Linux基础及总结13之DNS)