SRE-第五周作业

1.Centos7做DHCP服务器

DHCP工作原理
在这里插入图片描述
1.发现阶段:DHCP客户端寻找DHCP 服务器的阶段。客户端以广播方式发送 DISCOVER 报文。
2.提供阶段:DHCP服务器提供 IP 地址的阶段。DHCP 服务器接收到客户端的DISCOVER 报文后,根据 IP 地址分配的优先次序选出一个IP地址,与掩码,网关等其他参数一起通过OFFER报文发送给客户端。
3.请求阶段:如果有多台DHCP 服务器向该客户端发来OFFER报文 ,客户端只接受第一个收到的OFFER 报文,然后以广播方式发送 REQUEST 报文,该报文中包含DHCP 服务器在OFFER 报文中分配的 IP 地址。同时该报文中包含Option 54(服务器标识选项),即它选择的DHCP服务器的IP地址信息。
4.确认阶段:DHCP服务器确认IP 地址的阶段。DHCP 服务器收到DHCP 客户端发来的 REQUEST 报文后,只有DHCP 客户端选择的服务器会进行如下操作:如果确认地址分配给该客户端,则返回 ACK 报文;否则将返回NAK 报文,表明地址不能分配给该客户端。客户端收到服务器返回的ACK 确认报文后,会以广播的方式发送ARP 报文(目的地址是被分配到的地址)进行地址探测,如果在规定的时间内没有收到回应,客户端才使用此地址。

Centos7搭建DHCP服务器

[root@localhost ~]# yum -y install dhcp
#将配置文件模板复制到配置文件目录下使用(基于模板更改相关信息即可)
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "ken.com";           #指定默认域名
option domain-name-servers 223.5.5.5;   #指定 DNS 服务器地址   

default-lease-time 21600;              #默认租约为 6 小时,单位为秒
max-lease-time 43200;                  #最大租约为 12 小时,单位为秒
log-facility local7;

subnet 192.168.200.0 netmask 255.255.255.0 {   #首先声明dhcp服务器网段以及子网掩码
}

subnet 192.168.200.0 netmask 255.255.255.0 {  #其次声明网段以及子网(DHCP客户端获取的信息)
  range 192.168.200.10 192.168.200.254;       #地址池范围
  option routers 192.168.200.1;               #网关
}

#配置完上述启动服务即可
[root@localhost dhcp]# systemctl start dhcpd.service

如果启动失败可查看日志

[root@localhost dhcp]# cat /var/log/messages

此时已完成DHCP服务器配置,找一台主机和DHCP服务器同一广播域,接口开启DHCP自动获取测试,查看dhcp服务器日志已完成分派地址的4个阶段

[root@localhost dhcp]# cat /var/log/messages
Dec  5 19:35:08 localhost dhcpd: DHCPDISCOVER from 00:0c:29:e0:40:b7 via ens37
Dec  5 19:35:09 localhost dhcpd: DHCPOFFER on 192.168.200.10 to 00:0c:29:e0:40:b7 via ens37
Dec  5 19:35:09 localhost dhcpd: DHCPREQUEST for 192.168.200.10 (192.168.200.2) from 00:0c:29:e0:40:b7 via ens37
Dec  5 19:35:09 localhost dhcpd: DHCPACK on 192.168.200.10 to 00:0c:29:e0:40:b7 via ens37

2.使用Centos7实现DNS服务器主-从搭建

2.1DNS作用

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。

2.2 搭建主-从DNS服务器

在这里插入图片描述
实现目标:
只有一台主DNS服务器,存在单点失败的问题,建立主DNS服务器的备份服务器,即从服务器来实现DNS服务的容错机制。从服务器可以自动和主服务器进行单向的数据同步,从和主DNS服务器一样,也可以对外提供查询服务,但从服务器不提供数据更新服务。客户端使用从服务器做DNS,往主服务器中更改记录,客户端也能解析出最新的更改记录

主服务器配置:
安装,修改主配置文件

[root@localhost ~]# yum -y install bind bind-utils
options {
        listen-on port 53 { 127.0.0.1;192.168.110.70; };    #本机哪些IP可提供dns服务
        allow-query     { 192.168.110.0/24; };              #允许哪些IP访问本机dns服务

创建DNS区域数据库文件

[root@localhost ~]# vim /var/named/ken.com.zone
$TTL 1D                                #全局继承TTL
@        IN SOA master admin.ken.com. (1 1D 1H 1W 3H);    #1是序列号   
         IN  NS  master                #NS=nameserver master对应下面的A记录 
          IN  NS slave                 #从服务器
master   IN  A  127.0.0.1              #本机的A记录
slave    IN  A  192.168.110.249        #从服务器IP
www      IN  A  192.168.110.2

在named.rfc1912.zones文件内调用刚创建的数据库文件使生效

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "ken.com" IN {
        type master;
        file "ken.com.zone";
        allow-update { none; };
};

从DNS服务器配置:
安装,修改主配置文件

[root@localhost ~]# yum -y install bind bind-utils
[root@localhost ~]# vim /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1;192.168.110.249; }          #本机哪些IP可提供dns服务 
        allow-query     { any; };                                 #允许所有IP访问本机DNS服务

在named.rfc1912.zones文件内新建zone

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "ken.com" IN {                               #zone“ken.com”必须和主服务器名字一样
        type slave;                               #类型是slave(从)
        masters { 192.168.110.70; };              #主服务器地址
        file "slaves/ken.com.zone.slave";         #存放主服务备份过来的文件路径
};

主服务器和从服务器都重启dns服务

[root@localhost ~]# systemctl restart named

从服务器如果备份成功,会自动创建/var/named/slaves/ken.com.zone.slave文件

验证:windows上使用从服务器做dns进行解析
从dns能正常同步主dns的记录

C:\Users\Administrator>nslookup www.ken.com  192.168.110.249
服务器:  UnKnown
Address:  192.168.110.249

名称:    www.ken.com
Address:  192.168.110.2

更新主dns服务器的记录,验证从服务器是否自动同步

[root@localhost ~]# vim /var/named/ken.com.zone 
$TTL 1D
@        IN SOA master admin.ken.com. (2 1D 1H 1W 3H);     #2是序列号,每次更改配置后,序列号手动更改加大,即可自动推送配置给从服务器    
         IN  NS  master
         IN  NS slave
master   IN  A  127.0.0.1
slave    IN  A  192.168.110.249
www      IN  A  192.168.110.2
web      IN  A 192.168.110.110

#重启主服务器named
[root@localhost ~]# systemctl restart named

客户端使用从服务器IP解析新建添加的web.ken.com,看到已经自动同步成功

C:\Users\Administrator>nslookup web.ken.com 192.168.110.249
服务器:  UnKnown
Address:  192.168.110.249

名称:    web.ken.com
Address:  192.168.110.110

3.使用Centos7实搭建智能DNS

在这里插入图片描述

实验目的:
公司珠海和深圳使用同一台DNS服务器,两地分别有一台NAS服务器使用同一个域名“nas.ken.com”。通过智能DNS,区分广州和深圳的客户端,解析出不同的IP。

实现步骤:
1.针对珠海和深圳IP段分别建立两个ACL
2.创建两个区域数据库文件
3.分别建立2个区域配置文件
4.主配置文件新建view
5.针对不同acl调用不同的区域配置文件,达到针对不同的地区IP段解析不同的地址

主服务器准备2张网卡:
eth0:192.168.110.70/24 (珠海使用此网段)
eth1:192.168.121.130/24 (深圳使用此网段)

主服务器配置
1.在主配置文件最前面针对珠海深圳地址段建立两个ACL

[root@localhost ~]# vim /etc/named.conf 
acl zhnet {
        192.168.110.0/24;
};
acl sznet {
        192.168.121.0/24;
};

2.创建两个区域数据库文件

珠海
[root@localhost ~]# vim /var/named/ken.com.zone.zh
$TTL 1D
@        IN SOA master admin.ken.com. (1 1D 1H 1W 3H);
         IN NS master
master   IN A 192.168.110.70        
nas      IN A 1.1.1.1                   #珠海解析nas.ken.com对应的IP

深圳
[root@localhost ~]# vim /var/named/ken.com.zone.sz
$TTL 1D
@       IN SOA master admin.ken.com. (1 1D 1H 1W 3H);
        IN NS master
master  IN A 192.168.121.130
nas     IN A 2.2.2.2                   #深圳解析nas.ken.com对应的IP

3.分别建立两个个区域配置文件(调用对应的两个区域数据库文件)

珠海
[root@localhost ~]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.zh
[root@localhost ~]# vim /etc/named.rfc1912.zones.zh
zone "." IN {
        type hint;
        file "named.ca";
};

zone "ken.com" IN {
        type master;
        file "ken.com.zone.zh";              
};

深圳
[root@localhost ~]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sz
[root@localhost ~]# vim /etc/named.rfc1912.zones.sz
zone "." IN {
        type hint;
        file "named.ca";
};

zone "ken.com" IN {
        type master;
        file "ken.com.zone.sz";
};

4.在主配置文件创建view视图

将主配置文件的根域注释,放到区域配置文件中
#zone "." IN {
# type hint;
#file "named.ca";
#};

将包含rfc1912.zones文件注释
#include "/etc/named.rfc1912.zones";

创建视图
珠海
view zhview {
        match-clients { zhnet; };                  #对应珠海地区 acl段                                  
        include "/etc/named.rfc1912.zones.zh";     #对应珠海地区的区域配置文件             
};
深圳
view szview {
        match-clients { sznet; };                                       
        include "/etc/named.rfc1912.zones.sz";                 
};

5.完成以上操作,重启服务

[root@localhost ~]# systemctl restart named

6.验证
珠海客户端(解析nas.ken.com对应的是珠海的服务器IP)

 C:\Users\Administrator>nslookup nas.ken.com 192.168.110.70
服务器:  UnKnown
Address:  192.168.110.70

名称:    nas.ken.com
Address:  1.1.1.1

深圳客户端(解析nas.ken.com对应的是深圳的服务器IP)

C:\Users\Administrator>nslookup nas.ken.com 192.168.121.130
服务器:  UnKnown
Address:  192.168.121.130

名称:    nas.ken.com
Address:  2.2.2.2

4. 使用iptables/firewalld/nftable实现端口访问控制

目的:只允许访问本机SSH,TELNET,FTP和WEB服务器,其他拒绝
iptables

[root@localhost ~]# iptables -A INPUT -s 0.0.0.0/0 -p tcp -m multiport --dports 22,23,21,80 -j ACCEPT
[root@localhost ~]# iptables -A INPUT  -j DROP

firewalld

#添加服务(--permanent是永久添加)
[root@localhost ~]# firewall-cmd --permanent --add-service=http
[root@localhost ~]# firewall-cmd --permanent --add-service=ftp
[root@localhost ~]# firewall-cmd --permanent --add-service=telnet
[root@localhost ~]# firewall-cmd --reload                 #重新加载firewall

5.SNAT和DNAT(端口映射)

SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP。常用与内网访问互联网NAT成出口的公网IP使用

DNAT(端口映射):destination NAT 支持PREROUTING , OUTPUT,把
本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP。常用于内部服务器对外提供服务,将访问公网IP的IP+指定端口,映射到内网服务器的IP+服务端口

5.1通过SNAT实现内部服务器NAT成路由器的出口IP进行上网

在这里插入图片描述

环境:
web server centos7
出口路由器 centos7

需求1:
web server需要通过出口路由器实现网络访问
需求2:
web servver的web服务器需要对外提供,需要通过端口映射将192.168.200.30:80映射到互联网

配置思路:
需求1:server将网关指向192.168.200.1,出口路由器默认路由指向192.168.10.1(条件有限,使用192.168.10.70模拟公网IP),路由器开启路由转发功能,使用iptables将源192.168.200.0/24NAT成192.168.10.70实现server通过路由器上网

需求2:在出口路由器做端口映射,将192.168.10.70:8080映射到webserver192.168.200.30:80

server配置
将网卡网关配置为192.168.200.1(会自动生成默认路由)

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.200.1   0.0.0.0         UG    0      0        0 ens37

出口路由器配置
1.配置2块网卡

eth0(外网):192.168.10.70/24  gw:192.168.10.1
eth1(内网):192.168.200.1/24

2.开启路由转发功能

#临时开启
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

3.配置SNAT

源地址192.168.200.0/24访问所有目的,nat成出口IP
[root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -d 0.0.0.0/0 -j MASQUERADE

4.配置DNAT

[root@localhost ~]# iptables -t nat -A PREROUTING -s 0/0 -d 192.168.10.70 -p tcp --dport 8080 -j DNAT --to-destination 192.168.200.30:80 

5.永久保存iptables规则+开机自动启用规则

[root@localhost ~]# iptables-save > /etc/sysconfig/iptables       #将iptables规则保存到文件
[root@localhost ~]# vim /etc/sysconfig/iptables-autostart.sh      #新建一个脚本,将加载规则命令写进去
#!/bin/bash
iptables-restore < /etc/sysconfig/iptables           #加载规则

[root@localhost ~]# vim /etc/rc.d/rc.local                          #将运行脚本命令写入该文件,开机自动启动
bash /etc/sysconfig/iptables-autostart.sh
[root@localhost ~]# chmod +x /etc/rc.d/rc.local               #需要加执行权限

验证:
1.在server上测试已成功通过路由器进行网络访问

[root@localhost ~]# traceroute 114.114.114.114
traceroute to 114.114.114.114 (114.114.114.114), 30 hops max, 60 byte packets
 1  gateway (192.168.200.1)  0.276 ms  0.243 ms  0.213 ms

 2  * * *
 3  192.168.1.1 (192.168.1.1)  5.775 ms  5.721 ms  5.669 ms
 4  100.64.0.1 (100.64.0.1)  10.223 ms  10.229 ms  10.215 ms
 5  14.148.19.33 (14.148.19.33)  7.653 ms  7.669 ms  7.602 ms
 6  14.148.18.37 (14.148.18.37)  10.060 ms 14.148.18.41 (14.148.18.41)

2.测试端口映射

C:\Users\Administrator>tcping 192.168.10.70 8080

Probing 192.168.10.70:8080/tcp - Port is open - time=1.297ms

6.mysql8.0.30二进制安装一键脚本

#!/bin/bash
VERSION=8.0.30
PACKAGE=mysql-${VERSION}-linux-glibc2.12-x86_64.tar.xz
UNZIPKG=mysql-${VERSION}-linux-glibc2.12-x86_64
DATADIR=/data/mysql

#检查
rpm -q wget || yum -y install wget >/dev/null

if [ -d ${DATADIR} ];then
        echo "${DATADIR}目录已存在"
else
        mkdir -pv $DATADIR
fi

if id mysql &>/dev/null;then
        echo "mysql用户已存在"
else
        useradd -r -s /sbin/nologin mysql
fi

if [ -e /usr/local/mysql ];then
        echo "mysql已安装,不需要重复安装"
        exit
else
        echo "继续安装"
fi


#安装
yum -y install install libaio numactl-libs >/dev/null
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/${PACKAGE} || { echo "下载异常";exit; }
tar -xf ${PACKAGE} -C /usr/local
ln -s /usr/local/${UNZIPKG} /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/

#编辑配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
datadir=${DATADIR}                     
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 
EOF

#数据库初始化创建
mysqld --initialize --user=mysql --datadir=${DATADIR}

#准备服务器启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start

#判断是否安装成功
if [ $(service mysqld status | awk -F! '{print $1}') = SUCCESS ];then
echo "mysql已安装完成,可以使用下面初始化密码登录"
echo "密码:`cat /data/mysql/mysql.log | awk -F"localhost:" '/password/{print $2}'`"
else
echo "mysql启动失败,请查明原因!"
fi

安装完成后可以配置环境将mysql命令路径添加进PATH变量,方便使用

echo "PATH=/usr/local/mysql/bin:${PATH}" > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

执行脚本并测试登录

[root@localhost ~]# bash mysql.sh
.... 
mysql已安装完成,可以使用下面初始化密码登录
密码: swbHwrazq2&b

[root@localhost ~]# mysql -p
Enter password:                        #输入上面密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.30

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值