1. 程式人生 > >馬哥教育第十六天至十九天學習總結

馬哥教育第十六天至十九天學習總結

raid \ 網絡原理

第十七天

raid

raid 0 條帶化 chunk size nmin(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地址已經不是原來那個了。

1) 什麽是ARP欺騙?在局域網中,黑客經過收到ARP Request廣播包,能夠偷聽到其它節點的 (IP, MAC) 地址, 黑客就偽裝為A,告訴B (受害者) 一個假地址,使得B在發送給A 的數據包都被黑客截取,而B 渾然不知。
2) 為什麽黑客能夠進行ARP欺騙? ARP 是個早期的網絡協議,RFC826在 1980就出版了。早期的互聯網采取的是信任模式,在科研、大學內部使用,追求功能、速度,沒考慮網絡安全。尤其以太網的洪泛特點,能夠很方便的用來查詢。但這也為日後的黑客開了方便之門。黑客只要在局域網內閱讀送上門來的ARP Request就能偷聽到網內所有的 (IP, MAC)地址。而節點收到ARP Reply時,也不會質疑。黑客很容易冒充他人
3) 能夠防止欺騙嗎?不能。但這種傷害的傷害已經很小。因為局域網的工作環境有了改變, 服務器通常不會和終端主機在同一個局域網。但如果黑客對主機發送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地址的對應關系。

馬哥教育第十六天至十九天學習總結