第十四周

Posted kfscott

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十四周相关的知识,希望对你有一定的参考价值。

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

  • DNS服务器原理

    DNS服务器会同时监听tcp和udp的53端口,在客户端解析域名时,使用udp的53端口;在主从服务器同步中tcp和udp都要用到。

    解析域名的方式有两种:迭代查询和递归查询,默认使用递归查询

    迭代查询:由客户端自己一步一步的查询结果。

    递归查询:把解析请求发送给本地的DNS服务器,由本地DNS服务器负责查询,把查询的结果发送给客户端

    解析过程:

    客户端要请求www.a.com的ip地址

    1、客户端发送请求给本地DNS服务器,如果本地DNS服务器知道结果,就返回;

    2、如果本地DNS服务器没有记录,会直接把请求发送给根DNS服务器

    3、如果根DNS服务器知道结果,就直接返回,如果不知道,就会返回com.的域名服务器的地址

    4、继续向com.域服务器查询,如果不知道结果,就会返回a.com.的域名服务器地址

    5、继续向a.com.域服务器查询,此时就能查到www.a.com的ip地址了

    6、本地DNS服务器在收到返回的结果之后,再发送给客户端

  • 搭建主-辅服务器

    实验环境:主服务器centos7,ip地址192.168.10.128;从服务器centos6,ip地址192.168.10.131

    先关闭所有设备上的防火墙和selinux

    1、安装软件包

    [root@master ~]#yum install bind -y
    [root@slave ~]#yum install bind -y
    

    2、编辑主服务器配置文件

     # 把下面两行注释掉
     [root@master ~]#vim /etc/named.conf
     12 options {
     13 //  listen-on port 53 { 127.0.0.1; };
    
     21 //  allow-query     { localhost; };
    
    

    3、编辑主服务器区域信息

    # 添加下面几行,域名是magedu.com,类型为master,对应的域配置文件为magedu.com.zone
    [root@master ~]#vim /etc/named.rfc1912.zones 
     13 zone "magedu.com" IN {
     14     type master;
     15     file "magedu.com.zone";
     16 };
    

    4、编辑主服务器的区域配置文件

    NS记录要把主从服务器都写上,否则无法进行同步

    [root@master ~]#vim /var/named/magedu.com.zone 
    
      1 $TTL 86400
      2 @   IN SOA @ admin ( 2 1D 1H 1W 3H )                                                                                       
      3        NS   ns1
      4        NS   ns2
      5 ns1    A    192.168.10.128
      6 ns2    A    192.168.10.131
      7 www    A    1.1.1.1
      8 ftp    A    2.2.2.2
      9 web    CNAME    www
     10 *      CNAME    www
     11 $GENERATE 1-100 server$   A   10.0.0.$
     12 @      A    2.2.2.2
    
    
    # 检查语法
    [root@master ~]#named-checkzone magedu.com /var/named/magedu.com.zone 
    zone magedu.com/IN: loaded serial 2
    OK
    
    # 启动服务
    [root@master ~]#systemctl start named
    

    5、编辑从服务器的配置文件

    和主服务器操作相同

     # 把下面两行注释掉
     [root@slave ~]# vim /etc/named.conf
     12 options {
     13 //  listen-on port 53 { 127.0.0.1; };
    
     21 //  allow-query     { localhost; };
    

    6、编辑从服务器区域信息

     # 添加下面的内容,指定主服务器为192.168.10.128
     [root@slave ~]#vim /etc/named.rfc1912.zones
     13 zone "magedu.com" IN {
     14     type slave;
     15     masters {192.168.10.128;};
     16     file "slaves/magedu.com.zone.slave";
     17 };
    

    7、启动从服务器的named服务

    启动服务之后,/var/named/slaves/magedu.com.zome.slave会自动创建,并且从主服务器拽取内容

    [root@slave ~]#service named start
    [root@slave ~]#ll /var/named/slaves/magedu.com.zone.slave 
    -rw-r--r-- 1 named named 2576 Jul 18 15:53 /var/named/slaves/magedu.com.zone.slave
    

    8、测试

    # 通过主服务器和从服务器都可以解析到www.magedu.com的地址1.1.1.1
    [root@CentOS8 ~]#host www.magedu.com 192.168.10.128
    Using domain server:
    Name: 192.168.10.128
    Address: 192.168.10.128#53
    Aliases: 
    
    www.magedu.com has address 1.1.1.1
    
    [root@CentOS8 ~]#host www.magedu.com 192.168.10.131
    Using domain server:
    Name: 192.168.10.131
    Address: 192.168.10.131#53
    Aliases: 
    
    www.magedu.com has address 1.1.1.1
    
    

    9、安全加固

    默认情况下,主服务器和从服务器都允许任何一台机器获取区域信息,需要配置安全加固控制权限

    # 在主服务器上添加第22行的内容,仅允许传输给从服务器192.168.10.131
    [root@master ~]#vim /etc/named.conf
     21     //allow-query     { localhost; };
     22     allow-transfer  { 192.168.10.131; };
    
    # 修改从服务器,添加第18行的内容,不允许传输给任何机器区域信息
    [root@slave ~]#vim /etc/named.conf
     17 //  allow-query     { localhost; };
     18     allow-transfer  { none; };
    
    

    10、测试安全加固效果

    # 做安全加固之前,可以从主服务器上获取信息
    [root@CentOS8 ~]#dig -t axfr magedu.com @192.168.10.128
    
    ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> -t axfr magedu.com @192.168.10.128
    ;; global options: +cmd
    magedu.com.		86400	IN	SOA	magedu.com. admin.magedu.com. 1 86400 3600 604800 10800
    magedu.com.		86400	IN	A	2.2.2.2
    magedu.com.		86400	IN	NS	ns1.magedu.com.
    *.magedu.com.		86400	IN	CNAME	www.magedu.com.
    ftp.magedu.com.		86400	IN	A	2.2.2.2
    ns1.magedu.com.		86400	IN	A	192.168.10.128
    server1.magedu.com.	86400	IN	A	10.0.0.1
    
    # 安全加固之后,获取区域信息失败
    [root@CentOS8 ~]#dig -t axfr magedu.com @192.168.10.128
    
    ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> -t axfr magedu.com @192.168.10.128
    ;; global options: +cmd
    ; Transfer failed.
    
    

2、搭建并实现智能DNS。

实验拓扑:

技术图片

实验环境:一台DNS服务器,三台主机,都是使用的centos7,实验之前需要先关闭防火墙和selinux

1、按照拓扑配置ip地址

host1的DNS指向192.168.1.1;host2的DNS指向172.16.0.1;host3的DNS指向192.168.10.138

2、安装软件包

[root@DNS ~]# yum install bind -y

3、修改配置文件

[root@DNS ~]# vim /etc/named.conf
# 找到下面两行,注释掉
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

# 找到下面几行内容删除
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";

# 在文件最后添加下面的内容,创建三个view,分别用来匹配beijingnet、shanghainet、othernet三个网段
acl beijingnet {
        192.168.1.0/24;
};

acl shanghainet {
        172.16.0.0/24;
};

acl othernet {
        any;
};
 
view view_beijing {
        match-clients { beijingnet; };
        include "/etc/named.rfc1912.zones.bj";
};
view view_shanghai {
        match-clients { shanghainet; };
        include "/etc/named.rfc1912.zones.sh";
};
view view_other {
        match-clients { othernet; };
        include "/etc/named.rfc1912.zones";
};

4、修改区域文件

# 添加下面的内容,作为other网段的区域配置文件
[root@DNS ~]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone.other";
};

zone "." IN {
        type hint;
        file "named.ca";
};

# 复制/etc/named.rfc1912.zones文件为/etc/named.rfc1912.zones.bj,一定要加上-a选项,保证文件属性不变
[root@DNS ~]# cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
# 修改如下
[root@DNS ~]# vim /etc/named.rfc1912.zones.bj
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone.bj";
};

# 再复制一份/etc/named.rfc1912.zones.sh,做相应修改
[root@DNS ~]# cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
[root@DNS ~]# vim /etc/named.rfc1912.zones.sh
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone.sh";
};

5、配置解析记录

# 创建文件/var/named/magedu.com.zone.bj,内容如下
# 如果是192.168.1.0/24网段的客户解析www.magedu.com,返回192.168.1.200
[root@DNS ~]# vim /var/named/magedu.com.zone.bj 
$TTL 1D
@      IN   SOA   ns1  admin ( 1 1D 1H 1W 2H )

        NS      ns1
ns1     A       192.168.1.1
www     A       192.168.1.200

# 创建文件/var/named/magedu.com.zone.sh,内容如下
# 如果是172.16.0.0/24网段的主机解析www.magedu.com,返回172.16.0.200
[root@DNS ~]# vim /var/named/magedu.com.zone.sh 
$TTL 1D
@      IN   SOA   ns1  admin ( 1 1D 1H 1W 2H )

        NS      ns1
ns1     A       172.16.0.1
www     A       172.16.0.200

# 创建文件/var/named/magedu.com.zone.other,内容如下
# 如果是其他任何网段解析www.magedu.com,就返回8.8.8.8
[root@DNS ~]# vim /var/named/magedu.com.zone.other 
$TTL 1D
@      IN   SOA   ns1  admin ( 1 1D 1H 1W 2H )

        NS      ns1
ns1     A       192.168.10.1
www     A       8.8.8.8

# 修改文件权限,和目录中的其他权限一致
[root@DNS ~]# chgrp named /var/named/magedu.com.zone*
[root@DNS ~]# chmod 640 /var/named/magedu.com.zone.*
[root@DNS ~]# ll /var/named
total 28
drwxrwx---. 2 named named   23 Jul 18 23:02 data
drwxrwx---. 2 named named  172 Jul 18 23:02 dynamic
-rw-r-----. 1 root  named  102 Jul 18 23:01 magedu.com.zone.bj
-rw-r-----. 1 root  named   97 Jul 18 23:01 magedu.com.zone.other
-rw-r-----. 1 root  named  100 Jul 18 23:01 magedu.com.zone.sh
-rw-r-----. 1 root  named 2253 Apr  5  2018 named.ca
-rw-r-----. 1 root  named  152 Dec 15  2009 named.empty
-rw-r-----. 1 root  named  152 Jun 21  2007 named.localhost
-rw-r-----. 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx---. 2 named named    6 Apr  1 09:35 slaves

# 启动服务
[root@DNS ~]# systemctl start named

6、测试

# 在host1上测试,ip为192.168.1.2,所以返回结果是192.168.1.200
[root@host1 ~]# host www.magedu.com
www.magedu.com has address 192.168.1.200

# 在host2上测试,ip为172.16.0.2,所以返回结果是172.16.0.200
[root@host2 ~]# host www.magedu.com
www.magedu.com has address 172.16.0.200

# 在host3上测试,ip为192.168.10.128,所以返回结果是8.8.8.8
[root@host3 ~]#host www.magedu.com
www.magedu.com has address 8.8.8.8

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

1、安装需要的软件包

[root@centos7 ~]# 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 -y

2、创建mysql用户

指定mysql用户的主目录为/data/mysql,但是不要创建

[root@centos7 ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql

3、创建存放数据库的目录

[root@centos7 ~]# mkdir /data/mysql

4、修改数据库目录的权限

[root@centos7 ~]# chown mysql.mysql /data/mysql/

5、编译安装

编译安装10.2.25版本

# 解压软件包
[root@centos7 data]# tar xf mariadb-10.2.25.tar.gz

# 开始编译安装,时间有点长
[root@centos7 data]# cd mariadb-10.2.25/
[root@centos7 mariadb-10.2.25]# cmake . > -DCMAKE_INSTALL_PREFIX=/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=utf8 > -DDEFAULT_COLLATION=utf8_general_ci

[root@centos7 mariadb-10.2.25]# make && make install

6、修改环境变量,添加命令目录

[root@centos7 ~]# echo ‘PATH=/app/mysql/bin:$PATH‘ > /etc/profile.d/mysql.sh
[root@centos7 ~]# . /etc/profile.d/mysql.sh 
[root@centos7 ~]# echo $PATH
/app/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

7、生成数据库文件

[root@centos7 ~]# /app/mysql/scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql

8、准备配置文件

[root@centos7 ~]# cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

9、准备启动脚本

[root@centos7 ~]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

# 注册到chkconfig
[root@centos7 ~]# chkconfig --add mysqld

# 启动数据库
[root@centos7 ~]# service mysqld start

10、登录测试

[root@centos7 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 10
Server version: 10.2.25-MariaDB-log Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘h‘ for help. Type ‘c‘ to clear the current input statement.

MariaDB [(none)]> 

以上是关于第十四周的主要内容,如果未能解决你的问题,请参考以下文章

学习进度条--第十四周

每周总结(第十一至第十四周)

第十四周学习进度情况

学习进度第十四周

第十四周进度

第十四周课程总结&实验报告