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";

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容