第十七天
raid
raid 0 条带化 chunk size n*min(size) 读写的提升 至少2块盘 raid 1 镜像 min(size) 写性能略降低,读性能提升 至少2块盘 raid 5 奇偶校验 (n-1)*min(size) 至少3块盘 raid 6 奇偶校验 (n-2)*min(size) 至少4块盘 raid 10 先做多个raid1,再组成raid0 安全性优于raid01 raid 01 先做多个raid0,再组成raid1 raid 50 先做多个raid5,再组成raid0,安全性略低于raid10
mdadm -C /dev/md0 -a yes -n 2 -l 0 /dev/sdc /dev/sdd mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sde /dev/sdf mdadm -C /dev/md1 -a yes -n 2 -l 1 -x 1 /dev/sd{e,f,g} -C 创建raid -a yes 自动创建raid设备/dev/mdX -n num 阵列中磁盘的数量 -l num 阵列的等级 -x num 热备盘的数量 mdadm -D /dev/md0 查看raid信息 cat /proc/mdstat 查看全部的raid信息 mdadm -S /dev/md0 停止raid mdadm -A /dev/md0 /dev/sdc /dev/sdd cat /proc/mdstat mdadm -D -s > /etc/mdadm.conf 将raid信息保存至文件 mdadm -A -s 激活/etc/mdadm.conf中的所有raid设备 mdadm -F /dev/md1 实时监控raid状态 ------------------以下四条命令,仅限raid1,raid5 mdadm /dev/md1 -f /dev/sdf 将md1中的sdf设置为坏的设备 mdadm /dev/md1 -r /dev/sdf 将md1中的sdf从raid成员中删除 mdadm /dev/md1 -a /dev/sdf 向md1中增加新成员sdf mdadm -G /dev/md1 -n 3 -a /dev/sdh 将raid1 md1的成员数量改为3,并加入新的成员(不是加为热备盘)
mdadm --zero-superblock /dev/sdc 删除某块硬盘的raid信息
共享热备盘实现方式 mdadm -D -s > /etc/mdadm.conf 在需要共享的多组raid信息最后分别都写上spare-group=magedu 然后再加一新行,顶头写MAILADDR root@localhost service mdmonitor restart
作业 1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录 2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录 3:创建一个raid50,由7块盘组成,其中一块为热备盘,最终容量为6G大小,chunk大小为1M,要求热备盘共享,创建为ext4文件系统,开机自动挂载到/magedata目录下。
第十八天
LVM pvcreate /dev/sda9 /dev/md1 pvs pvdisplay
vgcreate vgmagedu /dev/sda9 vgs vgdisplay
lvcreate -L 55M -n lv2801 vgmagedu lvcreate -l 10 -n lv2802 vgmagedu lvcreate -l +100%FREE -n lv2803 vgmagedu
lvs lvdisplay
扩展逻辑卷 如果卷组空间不够扩展需求,应先扩展卷组 vgextend vgmagedu /dev/md1 (如没有可用pv,应该先创建pv) lvextend /dev/vgmagedu/lv2801 -L 100M resize2fs /dev/vgmagedu/lv2801
如果卷组空间足够,直接扩展 lvextend -L 200M /dev/vgmagedu/lv2801 -r (加上-r一步到位,即扩展逻辑卷,同时扩展文件系统大小)
对于xfs文件系统,也可直接在lvextend中直接用-r,一步到位,如果要分开操作,先扩展逻辑卷,再拉伸文件系统,则应该使用xfs_growfs如下 xfs_growfs /dev/vgmagedu/lv2801
减小逻辑卷 1.umount 2.e2fsck -f /dev/vgmage01/lv2801 3.resize2fs /dev/vgmage01/lv2801 100M 4.lvreduce -L 100M /dev/vgmage01/lv2801
将包含lvm的磁盘迁移到其他主机 1.umount /mnt/datatest/ 2.vgchange -an vgtest 3.vgexport vgtest 4.迁移硬盘 5.在新的主机pvscan 6.vgimport vgtest 7.vgchange -ay
将某个pv从vg中删除,但该pv包含数据 1.pvmove /dev/sda9 [/dev/md1] 2.vgreduce vgmagedu /dev/sda9 3.pvremove /dev/sda9
逻辑卷快照 copy on write (COW) lvcreate -s -L 100M -n lvmagedu-snap /dev/vgmagedu/lvmagedu
练习: 1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录 2、 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录 3、扩展testlv至7G,要求archlinux用户的文件不能丢失 4、收缩testlv至3G,要求archlinux用户的文件不能丢失 5、对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
网络管理 curl -I www.microsoft.com 查看目标网站使用的web server信息 smb samba
99.999%
OSI ISO IOS
802.11 a/b/g/n 2.4G ac ad
80 http 443 https 3168 代理 53 dns tcp/udp 25 smtp 110 pop3 143 imap 993 imaps 995 pop3s 21 ftp 22 ssh 23 telnet
修改孤儿进程等待时间 echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
修改内核管理的孤儿进程的数量 echo 100000 > /proc/sys/net/ipv4/tcp_max_orphans
作业: 1.在centos6上部署http服务,将页面内容设置为It works. 2.在centos6上清空所有的防火墙策略,并设置仅centos7的主机可以访问到Centos6上的http服务。 3.在物理机上安装wireshark,对虚拟机网卡进行监控状态。 4.在centos7上使用curl 访问centos6主机的http服务,并在wireshark上查看tcp包的抓包信息 5.在自习课时间(可访问internet),使用centos6主机利用nslookup命令查看www.baidu.com的ip地址,并查看wireshark包中对udp协议的抓包信息。 6.在centos7上ping centos6主机,并在wireshark中查看icmp包的抓包状态。
TCP(Transmission Control Protocol,传输控制协议)是 面向连接的协议,也就是说在收发数据之前,必须先和对方建立连接,
一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的 描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步 (同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同 步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数 据。
需要了解的信息:
ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。
FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。 首先由Client发出请求连接即 SYN=1 ACK=0 (请看头字段的介绍), TCP规定SYN=1时不能携带数据,但要消耗一个序号,因此声明自己的序号是 seq=x 然后 Server 进行回复确认,即 SYN=1 ACK=1 seq=y, ack=x+1, 再然后 Client 再进行一次确认,但不用SYN 了,这时即为 ACK=1, seq=x+1, ack=y+1. 然后连接建立,为什么要进行三次握手呢(两次确认)。 建立三次握手主要是因为A发送了再一次的确认,那么A为什么会再确认一次呢,主要是为了防止已失效的连接请求报文段又突然传送给B,从而产生了错误。 所谓“已失效的连接请求报文”是这样产生的,正常情况下,A发出连接请求,但是因为连接报文请求丢失而未收到确认,于是A再重传一次连接请求,后来收到了请求,并收到了确认,建立了连接,数据传输完毕后,就释放链接,A共发送了两次连接请求报文段,其中第一个丢失,第二个到达了B,没有“已失效的连接请求报文段”,但是还有异常情况下,A发送的请求报文连接段并没有丢失,而是在某个网络节点滞留较长时间,以致延误到请求释放后的某个时间到达B,本来是一个早已失效的报文段,但是B收到了此失效连接请求报文段后,就误以为A又重新发送的连接请求报文段,并发送确认报文段给A,同意建立连接,如果没有三次握手,那么B发送确认后,连接就建立了,而此时A没有发送建立连接的请求报文段,于是不理会B的确认,也不会给B发送数据,而B却一直等待A发送数据,因此B的许多资源就浪费了,采用三次握手的方式就可以防止这种事情发生,例如刚刚,A不理会B,就不会给B发送确认,B收不到A的确认,就知道A不要求建立连接,就不会白白浪费资源,
当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送一个报文(没有数据),其中 FIN 设置为1, 服务器B收到后会给应用程序一个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。 A收到B的确认后进入等待状态,等待B请求释放连接, B数据发送完成后就向A请求连接释放,也是用FIN=1 表示, 并且用 ack = u+1(如图), A收到后回复一个确认信息,并进入 TIME_WAIT 状态, 等待 2MSL 时间。 为什么要等待呢? 为了这种情况: B向A发送 FIN = 1 的释放连接请求,但这个报文丢失了, A没有接到不会发送确认信息, B 超时会重传,这时A在 WAIT_TIME 还能够接收到这个请求,这时再回复一个确认就行了。(A收到 FIN = 1 的请求后 WAIT_TIME会重新记时)
另外服务器B存在一个保活状态,即如果A突然故障死机了,那B那边的连接资源什么时候能释放呢? 就是保活时间到了后,B会发送探测信息, 以决定是否释放连接
为什么连接的时候是三次握手,关闭的时候却是四次握手? 答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
ARP欺骗 由于局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输。所以,MAC地址在A上被伪造成一个不存在的MAC地址,这样就会导致网络不通,A不能Ping通C!这就是一个简单的ARP欺骗。
ARP解释 ARP(Address Resolution Protocol)是地址解析协议, 是一种将IP地址转化成物理地址的协议。从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。ARP具体说来就是将网络层(也就是相当于OSI的第三层)地址解析为数据链路层(也就是相当于OSI的第二层)的物理地址(注:此处物理地址并不一定指MAC地址)。 ARP原理 某机器A要向主机B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输。如果未找到,则A广播一个ARP请求报文(携带主机A的IP地址Ia——物理地址Pa),请求IP地址为Ib的主机B回答物理地址Pb。网上所有主机包括B都收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一个ARP响应报文。其中就包含有B的MAC地址,A接收到B的应答后,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。因此,本地高速缓存的这个ARP表是本地网络流通的基础,而且这个缓存是动态的
ARP协议 ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,当局域网中的某台机器B向A发送一个自己伪造的ARP应答,而如果这个应答是B冒充C伪造来的,即IP地址为C的IP,而MAC地址是伪造的,则当A接收到B伪造的ARP应答后,就会更新本地的ARP缓存,这样在A看来C的IP地址没有变,而它的MAC地址已经不是原来那个了。
- 什么是ARP欺骗?在局域网中,黑客经过收到ARP Request广播包,能够偷听到其它节点的 (IP, MAC) 地址, 黑客就伪装为A,告诉B (受害者) 一个假地址,使得B在发送给A 的数据包都被黑客截取,而B 浑然不知。
- 为什么黑客能够进行ARP欺骗? ARP 是个早期的网络协议,RFC826在 1980就出版了。早期的互联网采取的是信任模式,在科研、大学内部使用,追求功能、速度,没考虑网络安全。尤其以太网的洪泛特点,能够很方便的用来查询。但这也为日后的黑客开了方便之门。黑客只要在局域网内阅读送上门来的ARP Request就能偷听到网内所有的 (IP, MAC)地址。而节点收到ARP Reply时,也不会质疑。黑客很容易冒充他人
- 能够防止欺骗吗?不能。但这种伤害的伤害已经很小。因为局域网的工作环境有了改变, 服务器通常不会和终端主机在同一个局域网。但如果黑客对主机发送ARP欺骗分组,向它伪造了网关的地址,或对网关发送ARP欺骗分组,向网关伪造了主机的mac地址,则主机也无法正常和因特网上服务器交流。
ARP缓存表 在每台装有tcp/ip协议的电脑里都有一个ARP缓存表,表里的ip地址与mac地址是一一对应的,如图。 arp缓存表 arp缓存表 以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标的mac地址,直接把目标的mac地址写入帧里面发送就可以了;如果在ARP缓存表里面没有目标的MAC地址,主机A就会在网络上发送一个广播,目标mac地址是“ff-ff-ff-ff-ff-ff”,这表示向同一网段的所有主机发出这样的询问:“192.168.1.1的mac地址是什么呀?”网络上的其他主机并不回应这一询问,只有主机B接受到这个帧时才向A作出回应:“192.168.1.1的mac地址是00-aa-0-62-c6-09。(如上表)”这样,主机A就知道了主机B的mac地址,就可以向主机B发送信息了。同时,它还更新了自己的ARP缓存表,下次再向B发送数据时,直接在ARP缓存表找就可以了。ARP缓存表采用老化的机制,在一段时间里表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询的速度。 查看ARP缓存表 ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看arp缓存表的内容了。 用“arp -d”可以删除arp缓存表里的所有内容。 用“arp -s“可以手动在arp表中指定ip地址与mac地址的对应关系。