文件系統檢測和修復 (fsck /dev/sdb2)
?常發生于死機或者非正常關機之后
?掛載為文件系統標記為“no clean” ?
注意:一定不要在掛載狀態下修復
?fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE一定要與分區上已經文件類型相同
?e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
2 .掛載(mount) (掛載如果想要永久生效需要寫入文件里 /etc/fstab如果有auto選項 mount-a 可以讓文件生效,默認的defaults 的選項里包含auto參數;如果是修改里面的參數則mount -a 不能使之生效了 需要取消掛載在重新掛上即可但如果有用戶在訪問則無法取消掛載需要用 mount -o remount /dev/sdb1 來實現)
一個文件只能掛載一個設備(/dev/sdb)
一個設備能掛載多個文件
設備掛載建議掛載在空文件夾下(如果不是空文件掛載點下原有文件在掛載完成后會被臨時隱藏 )
掛載點要事先存在則需要事先創建一個文件夾
掛載設備可一些設備名,卷標,UUID名 然后加掛載文件路徑(mount /dev/sdb2 /etc/lv )查看UUID的方法是(blkid /dev/sdb1)
掛載完成之后會生成一個文件/etc/mtab此文件會根據掛載自動更新掛載的內容和信息。
取消掛載
umount /dev/sdb2 或/root/lv (取消掛載寫設備名和掛載點都可以)
掛載常用的命令
-t vsftype:指定要掛載的設備上的文件系統類型 (不用加系統能夠自動識別出來)
?-r: readonly,只讀方式掛載 ?(mount -r /dev/sdb2 /root/lv)
-w: read and write, 讀寫掛載 ?(默認是讀寫掛載)
-n: 不更新/etc/mtab,(mount ,df 命令不可見,起到隱藏掛載的目的要想看可以從 cat /proc/mounts下查看)
?-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選 項中有auto功能)
?-L 'LABEL': 以卷標指定掛載設備 ?
-U 'UUID': 用UUID的方式掛載?
-B, –bind: 綁定目錄到另一個目錄上 ?查看內核追蹤到的已掛載的所有設備 cat /proc/mounts
-ooptions:(掛載文件系統的選項),多個選項使用逗號分隔(-o選項的參數)
async:異步模式 (復制文件時可能無法即使寫到磁盤上)
sync:同步模式,(內存更改時,同時寫磁盤 )
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統上運行應用程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:是否支持suid和sgid權限
remount:重新掛載
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載此設備,
/etc/fstab使用 acl:啟用此文件系統上的acl功能
loop: 使用loop設備 ?(可以把文件掛到 目錄上: 新建一個100M的文件然后用mkfs 格式化文件生成設備 然后就可以掛載到文件夾上了 mount -o loop p1路徑 + 掛載點文件夾)mknod /dev/loop8 b 7 8 增加loop個數。如果需要更多loop文件載內核參數上改一改vim /boot/grub/grub.conf 載kenal 后追加 max_loop=100 重啟機器生效 此目錄只在centos6上有。centos7上loop設備自動生成數量不受限制。而且掛文件不需要加-o loop 就能掛上。
查看正在訪問指定文件系統的進程
lsof +掛載設備
fuser -v +掛載設備?
終止所有在正訪問指定的文件系統的進程
fuser -km +掛載設備 (當有其他用戶在訪問時無法取消掛載的 所以需要此命令結束其他人的訪問進程之后就可以取消掛載了)
查看設備是否有人掛載
findmnt /dev/sdb2 (如果不顯示則說明現在是無掛載情況)
文件掛載配置文件
? /etc/fstab每行定義一個要掛載的文件系統
? 要掛載的設備或偽文件系統 設備文件 LABEL:LABEL="" UUID:UUID="" 偽文件系統名稱:proc, sysfs ? 掛載點 ? 文件系統類型 ?
掛載選項:defaults ? (默認掛載的選項)defaults:相當于rw, suid, dev, exec, auto, nouser, async
轉儲頻率:0:不做備份 1:每天轉儲 2:每隔一天轉儲 ?
自檢次序: 0:不自檢 1:首先自檢;一般只有rootfs才用1 (如果設置為檢查掛載設備中出現一個錯誤機器都將起不來所以一般建議不檢查如果是錯誤的但設置為不檢查 機器可以重啟) 當機器起不來是修復時 會失去修改權限則需要重新掛載賦予讀寫權限 mount -0 -rw remount / 意思是以可讀可寫的方式將根再掛一遍。之后就可以修改文件了。如果掛載點出現問題機器還是可以起來的。
將數據遷移到新的磁盤下
1 備份/home/
2 fdisk 磁盤名稱(創建一個分區,新添加的磁盤名稱可以通過fdisk -l 命令來查看)
過程:n:創建一個新的分區,p :查看已經創建的分區,w/q: 保存退出
3 mkfs.ext4 /dev/sdb1 (給分區創建文件系統)
4 mkdir /mnt/home (建立一個文件夾用來臨時存放/home下的數據)
5.mount /dev/sdb1 /mnt/home (將新創建的空文件夾掛載到新建的分區上因為只有空文件才可以掛載)
6.init 1 網斷 (切換到單用戶模式防止其他用戶訪問)
7cp -av /home/* /mnt/home (將/home 下的所有文件復制到新創建的文件夾下)
8.rm -rf /home/* (刪除/home下的數據)
8 vim /etc/fstab (永久掛載將空的/home 掛載到新建的分區下此時/home 將會同步/mnt/home下的數;blkid:查看分區的UUID號)
9.mount -a (讓掛載生效)
ls /home /mnt/home -l (查看/home和/mnt/home 發現他么有相同的數據)
9 umount /mnt/home;rm -rf /mnt/home (解除/mnt/home的掛載然后刪除文件夾現在只有/home掛載到新建的分區下了,既完成數據的遷移掛載)
10 init 5 (從但用戶模式切換到圖形界面)
創建swap 分區 (或將文件當作虛擬內存使用)
1 fdisk /dev/sdb1 (創建新的分區)(再用t 82 改一下swap分區的格式不知道的話可以用L來查看)
2 mkswap /dev/sdb1 (用專用的命令創建swap文件系統)
3 vim /etc/fstab (掛載swap 到新建的分區)
UUID=xxx swap swap defaults,pri=100 (在后面追加pri=100他的優先級為100 數字越大優先級越大)
4 swapon -a (將掛載生效)如果更改里面的內容先用swp off 禁用 在swpon 啟用才能生效
5 swapon -s 查看生效swp正在生效分區各是誰
6 swapoff /dev/sdb1 禁用swap分區
如果將文件作為虛擬內存來用思路
1 創建一個2G大小的文件(dd if=/dev/zero of=/data/swapfile)
2 創建swap文件系統 (mkswap /data/swapfile)
3掛載 (此處不能用UUID 只能用設備名既 /data/swapfile)
4 swapon -a 將掛載生效
5 swapon -s 查看生效的swap分區
外圍設備的使用(光盤和u盤)
?eject命令卸載或彈出磁盤 ?
創建ISO文件 cp /dev/cdrom /root/centos7.iso mkisofs -r -o /root/etc.iso /etc ?
刻錄光盤 wodim –v –eject centos.iso
創建ISO文件 cp /dev/cdrom /root/centos7.iso (將/dev/cdrom 制作成光盤保存到/root/centos7.iso)
mkisofs -r -o /root/etc.iso /etc
查看USB設備是否識別 • lsusb
eject命令卸載或彈出磁盤
、
dd和df工具
文件系統空間占用等信息的查看工具:
df [OPTION]… [FILE]…
-H 以1000為單位 (1K=1000的方式來計算)
-T 文件系統類型
-h: human-readable (以常見的單位來顯示如G M)
-i:inodes instead of blocks
-P: 以Posix兼容的格式輸出 ?查看某目錄總體空間占用狀態:
du [OPTION]… DIR (常用的du -sh /etc 查看/etc下文件的總大?。?/p>
-h: human-readable
-s: summary (匯總統計)
–max-depth (根據文件目錄的深度)
dd命令 (dd if=/etc/home of=/data/lv bs=1 count 1024 )
of=file 寫到所命名的文件而不是到標準輸出
if=file 從所命名文件讀取而不是從標準輸入
bs=size 指定塊大?。仁鞘莍bs也是obs)
ibs=size 一次讀size個byte
obs=size 一次寫size個byte
cbs=size 一次轉化size個byte
skip=blocks 從開頭忽略blocks個ibs大小的塊 (跳過的是源文件)
seek=blocks 從開頭忽略blocks個obs大小的塊 (跳過的是目標文件)默認是截斷目標文件后面的內容notrunc 不截短輸出文件
count=n 只拷貝n個記錄
例題
備份MBR:(前面512個字節的磁盤數據信息)
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1 ?
破壞MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446 ?(跳過目標文件前446個字節改后面的64個字節)
有一個大與2K的二進制文件fileA?,F在想從第64個字節位置開始讀取,需要讀 取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開 始的位置,替換128Bytes,
實現如下: dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
?備份: dd if=/dev/sdx of=/dev/sdy 將本地的/dev/sdx整盤備份到/dev/sdy
dd if=/dev/sdx of=/path/to/image 將/dev/sdx全盤數據備份到指定路徑的image文件
dd if=/dev/sdx | gzip >/path/to/image.gz 備份/dev/sdx全盤數據,并利用gzip壓縮,保存到指定路徑 ?恢復:
dd if=/path/to/image of=/dev/sdx 將備份文件恢復到指定盤
gzip -dc /path/to/image.gz | dd of=/dev/sdx 將壓縮的備份文件恢復到指定盤
修復硬盤 dd if=/dev/sda of=/dev/sda
習題
1、創建一個2G的文件系統,塊大小為2048byte,預留1%可用空間,文件系統 ext4,卷標為TEST,要求此分區開機后自動掛載至/test目錄,且默認有acl掛載 選項
mkfs.ext4 /dev/sdb2 -L 'TEST' -m 1 -b 2048
tune2fs /dev/sdb2 -o acl
最后掛載到/test 下
?2、寫一個腳本,完成如下功能: (1) 列出當前系統識別到的所有磁盤設備 (2) 如磁盤數量為1,則顯示其空間使用信息 否則,則顯示最后一個磁盤上的空間使用信息
a=`fdisk -l 2>/dev/null | grep "^Disk /dev/.*" | wc -l`
if [ $a -eq 1 ]
then
echo "`fdisk -l /dev/sda`"
else
b=`fdisk -l 2>/dev/null | grep "^Disk /dev/.*" | tail -n1 | tr ' ' : | cut -d: -f2`
echo "`fdisk -l $b`"
fi
3、將CentOS6的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64bin-DVD2.iso兩個文件,合并成一個CentOS-6.8-x86_64-Everything.iso文件, 并將其配置為yum源
RAID (多個磁盤組成的陣列)
1 .raid 0:條帶卷,最少兩個磁盤 將數據均勻寫入兩個磁盤 提升效率 但沒有冗錯性 可用磁盤數為N個
2.raid 1: 最少兩個磁盤 將數據寫入一個磁盤 另一個磁盤形成鏡像文件 有冗錯性 可用磁盤數為 N/2個
3. raid 4: 最少三個磁盤 將數據均勻寫入兩個磁盤中,第三個磁盤存校驗位 有冗錯性 可用磁盤數N-1個
4. raid5:最少三塊磁盤將數據和校驗位均勻的寫入三個磁盤中 有冗錯性 可用磁盤數為N-1個
5. raid6:最少四塊磁盤將數據和校驗位均勻的寫入四個磁盤中但校驗位有兩個 有冗錯性 磁盤可用數N-2個
另外還有組和使用功能 raid 10 raid 01 raid 50 等 其中他們還可以添加一個備用盤在磁盤故障時替換使用
邏輯卷管理器
思想:首先將多個空的磁盤或分區制作成物理磁盤然后將多個物理磁盤制作成一個邏輯卷組最后在卷組上創建所需要大小的邏輯卷之后創建邏輯卷的文件系統(創建文件系統時要更改文件系統的屬性)
示例:邏輯卷的建立
a :pvcreate /dev/sdc1 /dev/sdd1 (將空分區或空磁盤創建成物理磁盤可用pvs或pvdisplay查看詳細信息)
b:vgcreate -s 10M vg0 /,dev/sd{c,d}1 (將兩個物理磁盤創建成一個邏輯卷組可用vgs或vgdisplay來查看詳細信息 ,其中創建中10M為創建的卷組中PE的單個大小 vg0 為創建的卷組名稱 -s 為指定PE單位的大小)
c: lvcreate -n lv0 -l 300 vg0 (最從邏輯卷組中創建一個邏輯卷 其中lv0為新建的邏輯卷的名稱 -l 300 為指定邏輯卷的大小 l 為指定PE塊的個數來統計的 L為直接加大小如3G -n 為指定新名稱 -l 100%FREE意思是將剩余的空間都給分出去)
d: 最后創建邏輯卷的文件系統 mkfs.ext4 /dev/vg0/lv0
e:最后創建兩個文件夾將新創建的兩個邏輯卷lv0 ,lv1掛載到文件夾上使用。(在/etc/fstab下修改文件永久掛載保存)
在線增加邏輯卷的空間
a:首先先增加一塊磁盤或者空白的分區
b:將增加的磁盤或空白分區創建成物理分區(用pvcreate /dev/sde1)
c:再將新建的物理磁盤添加到卷組上(用vgextend vg0 /dev/sde1)
d:最后將卷組新增的空間加到邏輯卷上使用(用lvextend -L +3G /dev/vg0/lvo 或用+100%FREE把剩余的空間全部加進去)(lvextend -r -L +3G /dev/vg0/lvo 中加個-r時順便把文件系統也給擴了)
e: 最后將新增的3G的空間添加文件系統 (用resize2fs /dev/vg0/lv0 )
縮減邏輯卷的空間
a:首先將要縮減的邏輯卷取消掛載 (umount /mnt/lv0)
b:在檢查文件系統(fsck -f /dev/vg0/lv0 )
c:再縮減文件系統,其中4G代表要縮減到的大小 (resize2fs /dev/vg0/lv0 4G)
d:再縮減邏輯卷的大小,需要加上縮減文件系統的大小相同 (lvreduce -L 4G /dev/vg0/lv0)
e:再次掛在回去(mount -a)
拆除硬盤:
a : 首先加塊硬盤到邏輯卷組中同上步操作
b:然后將要拆除的硬盤上的數據移到空白的邏輯卷組中的其他磁盤上(pvmove /dev/sdd)不用加目標路徑他會自動移到空白的磁盤上的
c: 將空白的sdd磁盤剔除卷組 (vgreduce vg0 /dev/sdd)
d:再將sdd磁盤剔除物理卷組 (pvmove /dev/sdd)
最后就可將硬盤拆走了
總結: 用分區創建物理磁盤時需要添加LVM 8e的類型而直接用硬盤做物理磁盤則不需要,縮減邏輯卷時有可能造成數據丟失,只有在ext4文件系統才能縮減
vgrename vg0 centos6vg0 (如果要遷到centos7上名字相同需要更改名稱 此時該卷組名)
lvrename /dev/centos6vg0/lv0 /dev/centos6vg0/lv0 (此命令是更改邏輯卷的名稱)
如果要在centos7上使用 :首先取消掛載 :
再禁用邏輯卷組(vgchange -an cent0s6vg0)
再讓卷組導出狀態(vgexport centos6vg0)
連接到centos7時再讓他處于導出狀態(vginport centos6vg0)
再啟用邏輯卷組(vgchange -ay centos6vg0)
最后再centos7新建文件夾centos6vg0邏輯卷掛載就可以
邏輯卷的快照 (快照只記載邏輯卷修改的內容,修改一條備份原有內容一條 且邏輯卷快照只能使用一次就沒有了)
建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了(最多等于邏輯卷的大小一般更改不了全部內容)
快照與被快照的邏輯卷必須在一個邏輯卷組當中
lvcreate -n lv0snapshot -s -p r-L 1G /dev/vg0/lv0 (lv0snapshot時快照的名稱 指定大小 -s為創建快照選項 后面跟為誰創建快照-p r為添加只讀屬性既快照無法修改和刪除)
mkdir /mnt/snap
mount /dev/vg0/lv0snapshot /mnt/snap (創建文件夾并將快照掛載到新建的文件夾上)
要恢復快照:
umount /mnt/lv0
umount /mnt/snap (先將邏輯卷和他的快照取消掛載)
lvconvert –merge /dev/vg0/lv0 (用此命令恢復快照)
mount /dev/vg0/lv0 /mnt/lv0 (再次掛載邏輯卷就可以看到被刪除的內容恢復了)
用lvdisplay查看發現lv0的邏輯卷快照消失了 (既創建的每個邏輯卷快照只能用一次但可以創建多個快照來備用)
網絡基礎知識
網絡模型分層:OSI 七層
應用層(網絡進程訪問應用層)
表示層 (數據表示)
會話層(主機間的通信 建立管理和終止應用在程序間的對話)
傳輸層(傳輸問題)
網絡層(路由器 數據傳輸)
數據鏈路層(交換機 訪問介質)
物理層 (集線器 二進制傳輸)
數據的封裝 :從應用層開始每層添加報頭
數據的解封: 從物理層開始去掉每層的報頭
三種通訊模式
單播:單向向某一主機發送消息
廣播:向在此廣播域的全部主機發送消息
組播:向一個組里的主機發送消息
網絡接線:(RJ-45俗稱“水晶頭”)
T568A:橙白;橙;綠白;藍;藍白;綠;棕白;棕
T568B:綠白;綠;橙白;藍;藍白;橙;棕白;棕
100M的帶寬下載100M的大小內容理論時間
100/(100/8)
TCP協議和UDP協議
TCP協議特性
工作在傳輸層 ?
面向連接協議 ?
全雙工協議 ?
半關閉 ?
錯誤檢查 ?
將數據打包成段,排序 ?
確認機制 ?
數據恢復,重傳 ?
流量控制,滑動窗口 ?
擁塞控制,慢啟動和擁塞避免算法
UDP協議的特性
工作在傳輸層
提供不可靠的網絡訪問 ?
非面向連接協議 ?
有限的錯誤檢查 ?
傳輸性能高 ?
無數據恢復特性
TCP/IP堆棧 分層(常用的網絡傳輸)
應用層
傳輸層
Internet層
網絡訪問層
TCP包頭主要包含;
源端口 ;目的端口 ;序列號 ;確認號
以及三個檢查口 :ACK ,SYN,FIN
TCP協議的數據傳輸步驟:
首先當第一次連接其他主機傳輸數據時只有自己的IP地址和目標的IP地址無目標主機的MAC地址,它先要獲取目標主機的MAC地址通過ARP廣播的方式獲得目標主機的MAC地址然后存到源主機的交換機的MAC表中以便下次使用則無需再用ARP廣播來獲取MAC地址了 。
之后經過三次握手與目標主機建立TCP通信協議建立聯系傳輸數據包 。三次握手的具體過程(客戶機和服器為例):1 首先客戶機發送SYN=1 seq=x 包給服務器 客戶機以從CLOSED狀態變為SYN-SENT狀態等待服務器;2然后服務器收到客戶機發的包后回一個包(SYN=1 ACK=1 seq=y ack=x+1 其中大寫的ACK表示標記檢查位 小寫的ack表示已收到客戶機的包為第x個請求客戶機發送第x+1個包來表示客戶機發送給服務器的包發送成功 seq=y表示服務器發的第y個包給客戶機)給客戶機;3最后客戶機回復包(ACK=1 seq=x+1 ack=y+1 其中seq=x+1表示客戶機發的第x+1個包給服務器 ack=y+1表示服務器發送的y包已收到可以發送第y+1個包給客戶機了)給服務器。他倆之間的連接已經建立起來了,以可以傳輸數據了。建立連接最終完成。
TCP協議的解除鏈接(四次揮手)
首先客戶機和服務器再已鏈接的狀態想要斷開鏈接1 首先客戶機發送一個請求 包 (FIN=1 ,seq=u)給服務器請求斷開鏈接:2 服務器回應一個包(ACK=1 seq=v ack=u+1)給客戶機,隨后將又發一個包(FIN=1 ACK=1 seq=w ack=u+1)剩余數據傳送給客戶機等待回應 3 客戶機收到后發送一個包(ACK=1 seq=u+1 ack=w+1)給服務器確認斷開鏈接。詳細過程如下圖:
TCP超時重傳
?異常網絡狀況下(開始出現超時或丟包),TCP控制數據傳輸以保證其承諾的可 靠服務 ?TCP服務必須能夠重傳超時時間內未收到確認的TCP報文段。為此,TCP模塊為 每個TCP報文段都維護一個重傳定時器,該定時器在TCP報文段第一次被發送時 啟動。如果超時時間內未收到接收方的應答,TCP模塊將重傳TCP報文段并重置 定時器。至于下次重傳的超時時間如何選擇,以及最多執行多少次重傳,就是 TCP的重傳策略 ?
與TCP超時重傳相關的兩個內核參數: ?/proc/sys/net/ipv4/tcp_retries1,指定在底層IP接管之前TCP最少執行的重傳 次數,默認值是3 ?
/proc/sys/net/ipv4/tcp_retries2,指定連接放棄前TCP最多可以執行的重傳次 數,默認值15(一般對應13~30min)
Internet 協議特征(IP協議)
運行于 OSI 網絡層 ?(TCP/UDP運行與傳輸層分別屬于數據封裝的一部分,協同工作)
面向無連接的協議 ?
獨立處理數據包 ?
分層編址 ?(地址分兩層編寫)
盡力而為傳輸 (存在丟包)?
無數據恢復功能 (包丟了就丟了 但TCP協議有數據回復功能)
IP的報文頭部
1 版本:為版本號現在通用的為ipv4的采用的地址是32位的地址總量為2^32=42億個地址現在以滿足不了了
又有ipv6的版本采用的是128位的地址,總數量為2^128
2首部長度:占4位,可表示的最大數值是15個單位,一個單位為4字節,因此IP 的首部 長度的最大值是60字節
3.標識 :一個大數據需要拆分若干個包(最大支持1500多個字節一個包),如果標識一樣則代表原來屬于一個包拆分過來的,如果不一樣則表示原來就屬于不同的包
IP地址
它們可唯一標識 IP 網絡中的每臺設備 ,每臺主機(計算機、網絡設備、外圍設備)必須具有唯一的地址 IP地址由兩部分組成:
網絡ID: • 標識網絡 • 每個網段分配一個網絡ID •
主機 ID: • 標識單個主機 • 由組織分配給各設
IP地址的分類:(可分為四類) IP地址為4個八位二進制的數組成的
A類網:第一位為0 前八位為網絡ID 后24位為主機ID
A類地址的網絡數位2^(網絡ID位數—1位固定不變的數 :8-1):128個去掉0和127不用則有1—126個網絡ID
A類地址每個網絡的主機數位2^(32-8)-2個
默認子網掩碼為255.0.0.0
B類網絡:前兩位為10.前十六位為網絡ID
網絡數:2^(16-2)
每個網絡的主機數:2^(32-16)-2個
默認子網掩碼為 :255.255.0.0
C類網絡:前三位為110 前24位為網絡ID
網絡數為:2^(24-3)
每個網絡的主機數為:2^(32-24)-2
默認子網掩碼為:255.255.255.0
D類網組播用的 E類網做研究用的
后又劃分無類:網絡ID,主機ID不確定是 八的整數倍
CIDR 無類域間路由表示法:IP/網絡ID位數
子網掩碼: netmask:32位二進制數,網絡ID位數,netmask對應位為1,主機ID位數,netmask對應位為0連續的1和連續的0就可能成為子網掩碼
00000000 0
00000001 1
00000010 2
00000100 4
00001000 8
00010000 16
00100000 32
01000000 64
10000000 128
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255
例如;給一個IP地址192.168.199.111 網絡ID為前21位
其中主機數為;2^(11)-2
子網掩碼是:255.255.11111000.0 ==十進制的是255.255.248.0(把前21位變成1后11位變成0 在轉換為十進制的寫法)通??梢院唽憺?92.168.199.11/21 來表示子網掩碼。
網絡ID:IP地址的二進制和子網掩碼的二進制相與 (和1與的保留原值 和0與的位0 可理解為相乘來計算)
此題中的網絡ID為:192.168.(199的二進制與掩碼的二進制248相與).0 最后八位為0 是因為掩碼的后八位為0 相與則結果為0
最小網絡IP主機:192.168.11000 000.00000001 192.168.192.1/21(前21位不變后11位不能全為0 也不能全為1 所以最大最小如上下。
最大網絡IP主機:192.168.11000 111.11111110 192.168.199.254/21
網關必須要和IP地址在相同的網段
將大網分成小網需要向主機ID借一位使網絡ID增加一位
10.0.0.0/8 分成2個小網: (在10的大網下借一位主機ID使網絡ID變為9位)
10.0.0.0/9 (10.0 0000000 .0.0)
10.128.0.0/9(10.1 0000000.0.0)
10.0.0.0/8 劃分32個子網給32個省公司使用 (需要借5位才能滿足32個子網)
1)新的子網netmask:255.248.0.0 (新的掩碼按照借5位共13位來確定子網掩碼的)
32=2^N
N=5
新子網網數位數:8+5=13
2) 新的子網:min netid,max netid
10.00000 000.0.0 10.0.0.0/13 min netid (只變新增的網絡ID的五位來組和最小的子網)
10.11111 000.0.0 10.248.0.0/13 max netid(新增的五位來組和最大的子網)
3) 新的子網存放最多的主機數是多少?
主機ID=32-13=19
2^19-2=52萬
4)max netid IP:min ip ,max ip ? (意思是最大子網的最小主機IP和最大主機IP)
10.11111 000.0.1 minip:10.248.0.1
10.11111 111.255.254 maxip:10.255.255.254 (其中標記代表全為1最后為0 因為不能全為1或全為0)
合并超網
多個小網合并成一個大網,網絡ID退位,而主機ID向網絡ID借位 合并之后的超網要 和兩個小網的網絡 ID應該是相同的
192.168.000000 10.0/24
192.168.000000 11.0/24
上面兩個網絡合并超網后:192.168.0.0/22 (此超網中還包含兩個其他的子網如下)
192.168.000000 01/24
192.168.000000 00/24
所以一般合并要包含所有網絡的可能性才合并
IP的私有地址和公有地址
私有地址:在互聯網上沒有路由地址的 無法連接互聯網的 (局域網時使用)但可以訪問互聯網通過NAT技術
公有地址:除了私有地址以外的地址 在互聯網上可以被訪問的。
路由:(實現跨網段鏈接的)
工作原理:通過路由器中的路由表來訪問網絡中的主機,路由表中記錄著網路中每個主機的IP地址
路由表構成:
1目標: 數據包發送的目標路徑 192.168.0.0 (又分為三個路由分別為 主機路由;網絡路由;默認路由)
2netmask:子網掩碼
3interface:(接口)本路由器從哪個接口出去可以到達你所發送包地址出口
4gateway:(網關)
1)直連:不需要配置 (通過ARP廣播則可通)
2)非直連:下一個路由器鄰近本路由器的接口地址
訪問一個網址的主要過程
A—1 R1 2 —3 R2 4— 5 R3 6 — B (假如A為客戶機B為要訪問的web服務器 如下面訪問的網站其中R1 ,R2 ,R3 為中間經過的路由器1,2,3,4,5,6為各路由器的進出接口)
firefox http://www.magedu.com
0 dns
1 A判斷B和A是否在一個網段 (通過將A的IP地址于自己的子網掩碼與,再將目標地址B與自己的子網掩碼與,得出的結果相比較 如果不在一個網段則無法直接訪問,只能通過路由來訪問)
2 A gateway:R1 IP1 (A客戶機已經配好了默認網關就是R1路由1接口的IP地址)
ARP IP1 —> MAC1 (知道R1的1接口的IP地址但不知到MAC地址無法將數據發給R1 所以要用ARP廣播嘗試將R1的1接口的IP地址解析成MAC地址)
APR cache : IP1–MAC1 (ARP的緩存表就記錄A機器與R1路由1接口相對應的IP地址與MAC1的記錄下此信息在下次訪問時不需要廣播的方式來查找了)
數據包添加一下各層信息開始發送
frame:dest mac:mac1 src mac:macA (幀的頭部有目標MAC1和源MACA地址)
ip: dest ip:IPB src ip: IPA (IP頭部信息目標IPB 源IPA )
tcp:dest port:80 src port:xxxxx,syn(TCP 的目標端口 http服務為80端口 源端口 為隨機的數 )
3 R1 查路由表 (R1收到數據包后開始查路由表,R1中應該包含A到B的網絡信息)
net B 2 IP3 (2接口出去到R2的3接口IP地址但不知道MAC地址又存在上面的問題所以開始重復上面的過程將數據包發送到 R2 路由上)
ARP IP3 —> mac3
frame:dest mac:mac3 src mac:mac2(數據到達R2的路由后數據的包頭信息開始改變幀的MAC地址變成MAC2到MAC3的方向)
ip: dest ip:IPB src ip: IPA(IP的信息不變)
tcp:dest port:80 src port:xxxxx,syn (TCP的信息也不變)
4 R2 查路由表 (數據到達R2后又開始查路由表找到達目標地址相關的網絡信息并重復上述操作將數據發個下一個路由R3)
net B 4 IP5
ARP IP5 —> mac5
frame:dest mac:mac5 src mac:mac4
ip: dest ip:IPB src ip: IPA
tcp:dest port:80 src port:xxxxx,syn
5 R3 查路由表 (數據到達R3后查路由表發現B網段和自己是直連的 直連網段的路由記錄系統自帶不需要手工添加了)數據包直接發送給B服務器了
net B 6
ARP IPB —> macB
frame:dest mac:macB src mac:mac6
ip: dest ip:IPB src ip: IPA
tcp:dest port:80 src port:xxxxx,
整個過程從A到B的第一個包發送完畢 。這只是TCP協議傳輸數據包三次握手的第一次,后面還有兩次,發送數據包的過程如上所述。(沒有路由表或者路由表錯誤會導致數據包發送失?。?/p>
動態主機配置協議DHCP (及訪問服務器時服務器會自動分配一個IP地址給你)
添加路由命令
route add -net (要添加網段的IP只寫網絡IP就行例如12.0.0.0/8) gw (臨近路由靠近自己一側的接口IP)
查看路由表的信息
route -n
刪除路由:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] ?
目標:192.168.1.3 網關:172.16.0.1
route del -host 192.168.1.3 ?
目標:192.168.0.0 網關:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
實驗:簡單配置兩個不同網段的虛擬機讓其連接:
實驗環境:iptables 和selinux 以及service NetworkManager off
A 主機 (192.168.60.0/24)路由R (192.168.45.0/24) B 主機
1 . 將A主機的網卡設為192.168.60.0/24網段內的任意IP地址并在配置文件添加網關:
DEVICE=eth0
IPADDR=192.168.60.4
GATEWAY=192.168.60.254 (網關設為254是因為Windows經常會占用1的地址)
PREFIX=24
2 .1 . 將B主機的網卡設為192.168.45.0/24網段內的任意IP地址并在配置文件添加網關:
DEVICE=eth0
IPADDR=192.168.45.33
GATEWAY=192.168.45.254 (網關設為254是因為Windows經常會占用1的地址)
PREFIX=24
3 . 在路由器上設置兩個網卡:
eth0:
DEVICE=eth0
IPADDR=192.168.60.254 (此IP地址為左右兩邊網段或者主機的設定的網關IP地址)
PREFIX=24
eth1:
DEVICE=eth1
IPADDR=192.168.45.254(此IP地址為左右兩邊網段或者主機的設定的網關IP地址)
PREFIX=24
開啟虛擬機的路由功能:
vim /proc/sys/net/ipv4/ip_forward
將此文件的值改為1
cat /proc/sys/net/ipv4/ip_forward (查看其值)
sysctl -p (讓修改的配置文件生效)
重啟服務就可以了。如果ping不同可以將路由的兩塊網卡互換一下就可以了。
實驗配置 A訪問B 中間經過3個路由器的基本步驟 (注意網關最好設成254因為windows用的是1)
1首先將拓撲圖規劃出來
A —1網段—- eth1 R1 eth2—2網段— eth1 R2 eth2—-3網段—– eth1 R2 eth2—-4網段—- B
確定A的IP地址 192.168.1.100/24
確定B的IP地址 10.0.0.100/8
設置1;2;3;4各網段的網絡IP (只設定網絡ID的值主機ID的值都為零)
1:192.168.1.0/24
2:172.16.0.0/16
3:176.17.0.0/16
4:10.0.0.0/8
設置個路由的接口IP地址 (兩個路由相接的兩個接口的地址必須要在同一網段上)
R1 eth1:192.168.1.1/24 eth2: 172.16.0.1/16
R2 eth1:172.16.0.2/16 eth2:176.17.0.1/16
R3 eth1 :176,17.0.2/16 eth2:10.0.0.1/8
將3個虛擬機設為路由環境:將此文件的值改為1 /proc/sys/net/ipv4/ip_forward (三臺都需要改一遍)
sysctl -p (讓修改的配置文件生效)
將所有虛擬機防火墻停用
將所有虛擬機禁用此服務 ;chkconfig NetworkManager off
將虛擬機網卡地址設置 為拓撲圖所列的。A和B只需要一個網卡 R1 R2 R3 分別設置兩個網卡的IP地址操作如下
vim 編輯文件etc/sysconfig/network-scripts/ifcfg-eth*將內容改為一下
A和B的
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.1.100
PREFIX=24 (網絡ID位數)
GATEWAY=192.168.1.1 (臨近路由R1的eth0的IP地址)
R1 R2 R3 的設置如下
vim /etc/sysconfig/network-scripts/ifcfg-et1 (此內容是根據R1路由兩邊接口的IP地址來添加的)
DEVICE=eth1
IPADDR=192.168.1.1 (此為A的網關地址)
PREFIX=24
vim /etc/sysconfig/network-scripts/ifcfg-et2
DEVICE=eth2
IPADDR=172.16.0.1 (此為2網段的網關地址)
PREFIX=16
R2 R3 如上述R1 操作即可 (他們的兩個IP地址都是此路由左右兩邊的網段的網關地址)
設置完后啟動服務 :service network restart
最后給三個路由添加路由表
route add -net 172.16.0.0/16 gw 172.16.0.2/16 (此為示例)
添加路由表時,-net后面跟的是此路由不直連的網段 都要添加進去(如R1路由則要添加3.和4網段)
gw 后面跟的是此路由相鄰路由的相鄰接口的IP地址 無論 添加那個網段只要方向在同一方向就都添加此方向相鄰路由的相鄰接口 如果添加網段相反 則添加相反方向相鄰路由的相鄰接口的IP地址即可。
過程中容易出錯的是兩個路由之間的兩個相鄰接口的IP 必須要添加到相同的網段。
網絡接口識別并命名相關的udev配置文件
/etc/udev/rules.d/70-persistent-net.rules ?
查看網卡: dmesg |grep –i eth
網卡的驅動
卸載驅動:modprobe -r e1000
重啟驅動:modprobe e1000
多個物理網卡綁定到同一IP地址下(bonding)
將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。直接給 兩塊網卡設置同一IP地址是不可以的。通過bonding,虛擬一塊網卡對外提供連接, 物理網卡的被修改為相同的MAC地址
Bonding工作模式
mod0:(輪轉模式,在每一個物理網卡上輪流發送數據包,本模式提供負載均衡和容錯的能力)
mod1:(主備策略:只有一個物理網卡被啟用。當一個物理網卡無法使用時,第二塊備用的物理網卡開始啟用。為了避免交換機發生混亂此時綁定的MAC地址只有 一個外部端口上可見 )
mod3: (廣播策略:在每個物理網卡上發送相同的數據包)
Bonding配置 /etc/sysconfig/network-scripts/ifcfg-bond0
刪除bond0
ifconfig bond0 down
rmmod bonding
Bonding實現的步驟:(要綁定的兩個物理網卡保證在相同的連接方式要么僅主機要么橋接)
1 . 刪除原有的網卡配置文件
2. 新建bond0的配置文件
DEVICE=bond0
IPADDR=192.168.60.2
PREFIX=24
BONDING_OPTS="mode=1 miimon=100"(miimon 是用來進行鏈路監測的。如果miimon=100,那么系統每 100ms 監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路 )
3 .新建eth0/eth1的網卡配置文件
DEVICE=eth0
MASTER=bond0
SLAVE=yes
DEVICE=eth1
MASTER=bond0
SLAVE=yes
啟動網絡服務:service network restart
查看bond0狀態:cat /proc/net/bonding/bond0
刪除綁定:卸載bonding 驅動模塊前把網卡禁用(ifconfig bond0 down)
卸載驅動:modprobe -r bonding
之后將配置文件刪除
一個物理網卡綁定多個IP地址
添加 : ifconfig eth0:1 2.2.2.2/24 (臨時添加 重啟后失效)
永久添加要寫入配置文件:/etc/sysconfig/network-scrps/eth0:1
DEVICE=eth0:1
IPADDR=2.2.2.2
PREFIX=24
DNS=1.1.1.1 (域名解析用的)
重啟網絡服務 前需要停用此服務 : service NetworkManager stop
刪除:ifconfig eth0:1 down
在centos7中想采用centos6中的網卡命名方式 :需要修改配置文件
修改/boot/grub2/grub.cfg
rhgb quiet LANG=en_US.UTF-8 net.ifnames=0
改過后重啟即可
nmcli命令
顯示所有包括不活動連接
nmcli con show ?
顯示所有活動連接
nmcli con show –active ?
顯示網絡連接配置
nmcli con show "System eth0“ ?
顯示設備狀態
nmcli dev status
測DNS服務的命令
nslookup ?(windows和Linux通用的命令)
host ?
dig
wget [option]… [URL]…(什么服務的都可以下載)
-q: 靜默模式
-c: 斷點續傳
-P:保存在指定目錄 (可以指定新的文件名稱)
-O: 保存為指定的文件名
–limit-rate=: 指定傳輸速率,單位K,M等
wget +地址 -選項
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96934