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

(1) 以客户端请求www.magedu.com为例描述DNS服务器原理: 1) 查询本机上的/etc/hosts文件,看里面是否有www.magedu.com对应的IP地址 2) 查询本机上的DNS服务缓存,看里面是否有www.magedu.com对应的IP地址记录 3) 将请求发送给主机上配置的DNS代理解析服务器(如223.5.5.5),DNS代理解析服务器将用户请求转发至DNS缓存服务器进行查询,如果没有结果 4) DNS代理解析服务器将用户请求转发至根服务器 5) 根服务器返回.com域名服务器的IP, DNS代理解析服务器将用户请求转发至.com域名服务器 6) .com域名服务器返回magedu.com域名服务器的IP,DNS代理解析服务器将用户请求转发至magedu.com域名服务器 7) magedu.com域名服务器查询本地配置文件,得到对应的IP,返回查询结果给DNS代理解析服务器 8) DNS代理解析服务器将www.magedu.com和对应的IP发送给DNS缓存服务器进行保存,同时将查询结果返回给用户 9) 用户得到查询结果,并保存到本机的DNS服务缓存 (2) 搭建主-辅服务器: 1) 环境要求 需要四台主机 DNS主服务器:10.0.0.81 DNS从服务器: 10.0.0.73 web服务器:10.0.0.71 DNS客户端:10.0.0.72 2) 提前准备 关闭SElinux 关闭防火墙 时间同步 3) 主DNS服务端配置 安装DNS服务 yum install bind -y 配置/etc/named.conf vim /etc/named.conf 注释掉下面两行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; 只允许从服务器进行区域传输 allow-transfer { 从服务器IP;}; 配置/etc/named.rfc1912.zones vim /etc/named.rfc1912.zones 加上这段 zone "magedu.org" { type master; file "magedu.org.zone"; }; 配置/var/named/magedu.org.zone vim /var/named/magedu.org.zone $TTL 1D @ IN SOA master admin.magedu.org. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master NS slave master A 10.0.0.81 slave A 10.0.0.73 启动服务 systemctl start named #第一次启动服务 rndc reload #不是第一次启动服务 4) 从DNS服务器配置 安装DNS服务 yum install bind -y 配置/etc/named.conf vim /etc/named.conf 注释掉下面两行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; 不允许其它主机进行区域传输 allow-transfer { none;}; 配置/etc/named.rfc1912.zones vim /etc/named.rfc1912.zones zone "magedu.org" { type slave; masters { 主服务器IP;}; file "slaves/magedu.org.slave"; }; 启动服务 systemctl start named #第一次启动服务 rndc reload #不是第一次启动服务 查看区域数据库文件是否生成 ls /var/named/slaves/magedu.org.slave 5) 客户端测试主从DNS服务架构 配置网卡 vim /etc/sysconfig/network-scripts/ifcfg-eth0 DNS1=主服务器 DNS2=从服务器 验证主DNS服务器是否可以查询 dig www.magedu.org curl www.magedu.org 在主服务器上停止DNS服务 systemctl stop named 验证从DNS服务器仍然可以查询 dig www.magedu.org curl www.magedu.org

2、搭建并实现智能DNS。

(1) 环境要求 需要五台主机 DNS主服务器和web服务器1:10.0.0.81/24,172.16.0.81/16 web服务器2:10.0.0.82/24 web服务器3:172.16.0.82/16 DNS客户端1:10.0.0.71/24 DNS客户端2:172.16.0.71/16 (2) 前提准备 关闭SElinux 关闭防火墙 时间同步 (3) DNS 服务器的网卡配置 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:59:ff:53 brd ff:ff:ff:ff:ff:ff inet 10.0.0.81/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe59:ff53/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:cf:6b:b8 brd ff:ff:ff:ff:ff:ff inet 172.16.0.81/16 brd 172.16.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever (4) 主DNS服务端配置文件实现view 安装DNS服务 yum install bind -y 配置/etc/named.conf vim /etc/named.conf 在文件最前面加下面行 acl beijingnet { 192.168.8.0/24; }; acl shanghainet { 172.16.0.0/16; }; acl othernet { any; }; 注释掉下面两行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; 创建view view beijingview { match-clients { beijingnet;}; include "/etc/named.rfc1912.zones.bj"; }; view shanghaiview { match-clients { shanghainet;}; include "/etc/named.rfc1912.zones.sh"; }; view otherview { match-clients { othernet;}; include "/etc/named.rfc1912.zones.other"; }; include "/etc/named.root.key"; (5) 实现区域配置文件 vim /etc/named.rfc1912.zones.bj zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.bj"; }; vim /etc/named.rfc1912.zones.sh zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.sh"; }; vim /etc/named.rfc1912.zones.other zone "." IN { type hint; file "named.ca"; }; zone "magedu.org" { type master; file "magedu.org.zone.other"; }; chgrp named /etc/named.rfc1912.zones.bj chgrp named /etc/named.rfc1912.zones.sh chgrp named /etc/named.rfc1912.zones.other (6) 创建区域数据库文件 vim /var/named/magedu.org.zone.bj $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.81 websrv A 10.0.0.82 www CNAME websrv vim /var/named/magedu.org.zone.sh $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 172.16.0.81 websrv A 172.16.0.82 www CNAME websrv vim /var/named/magedu.org.zone.other $TTL 1D @ IN SOA master admin.magedu.org. ( 2019042214 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.81 websrv A 127.0.0.1 www CNAME websrv 修改所属组 chgrp named /var/named/magedu.org.zone.bj chgrp named /var/named/magedu.org.zone.sh chgrp named /var/named/magedu.org.zone.other 启动服务 systemctl start named #第一次启动服务 rndc reload #不是第一次启动服务 (7) 实现位于不同区域的三个WEB服务器 分别在三台主机上安装http服务 在web服务器1:10.0.0.81/24实现 yum install httpd echo www.magedu.org in Other > /var/www/html/index.html systemctl start httpd 在web服务器2:10.0.0.82/24 yum install httpd echo www.magedu.org in Beijing > /var/www/html/index.html systemctl start httpd 在web服务器3:172.16.0.81/16 yum install httpd echo www.magedu.org in Shanghai > /var/www/html/index.html systemctl start httpd (8) 客户端测试 分别在三台主机上访问 DNS客户端1:10.0.0.71/24 实现,确保DNS指向10.0.0.81 curl www.magedu.org www.magedu.org in Beijing DNS客户端2:172.16.0.71/16 实现,确保DNS指向172.16.0.81 curl www.magedu.org www.magedu.org in Shanghai DNS客户端3:10.0.0.81 实现,,确保DNS指向127.0.0.1 curl www.magedu.org www.magedu.org in Other

3、通过编译、二进制安装MySQL5.7

(1) 源码编译安装mysql 5.7.32 1) 安装相关依赖包 yum -y 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 2) 做准备用户和数据目录 useradd -r -s /sbin/nologin -d /data/mysql mysql 3) 准备数据库目录 mkdir /data/mysql chown mysql.mysql /data/mysql 4) 源码编译安装 下载并解压缩源码包 tar xvf mysql-5.7.32.tar.gz 源码编译安装mariadb cd mysql-5.7.32/ 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 make && make install 5) 准备环境变量 echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh 6) 生成数据库文件 cd /app/mysql/ scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql 7) 准备配置文件 cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf 8) 准备启动脚本,并启动服务 cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start 9) 安全初始化 mysql_secure_installation (2) 二进制安装MySQL5.7 1) 安装相关包 yum -y install libaio numactl-libs 2) 创建用户和组 groupadd mysql useradd -r -g mysql -s /bin/false mysql 3) 准备程序文件 tar xf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz –C /usr/local cd /usr/local/ ln -s mysql-5.7.29-linux-glibc2.12-x86_64/ mysql chown -R root.root /usr/local/mysql/ 4) 准备环境变量 echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh 5) 准备配置文件 cp /etc/my.cnf{,.bak} vim /etc/my.cnf [mysqld] datadir=/data/mysql skip_name_resolve=1 socket=/data/mysql/mysql.sock log-error=/data/mysql/mysql.log pid-file=/data/mysql/mysql.pid [client] socket=/data/mysql/mysql.sock 6) 生成数据库文件,并提取root密码 mysqld --initialize --user=mysql --datadir=/data/mysql ...省略... 2019-07-04T13:03:54.258140Z 1 [Note] A temporary password is generated for root@localhost: LufavlMka6,! #注意生成root的初始密码 grep password /data/mysql/mysql.log 2019-12-26T13:31:30.458826Z 1 [Note] A temporary password is generated for root@localhost: LufavlMka6,! awk '/temporary password/{print $NF}' /data/mysql/mysql.log LufavlMka6,! 7) 准备服务脚本和启动 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start 8) 修改口令 mysqladmin -uroot -p'LufavlMka6,!' password magedu 9) 测试登录 mysql -uroot -pmagedu