美文网首页
Linux基础及总结13之DNS

Linux基础及总结13之DNS

作者: 牵挂包含一种欣赏 | 来源:发表于2020-02-12 20:40 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/wreyxhtx.html