Linux網絡管理

網絡技術:
1.網絡基礎,CCNA+CCNP
2.網絡功能實現

網絡基礎:
什麼是網絡?

物理組件:
計算機:
PC,Server
網絡設備:
HUB,Bridge,Switch,Router,Gateway,Firewall,Net-Defence,LB,...
網絡連接器:
NIC(Network Interface Card),Connection-Ware(RJ-45網線水晶頭,RJ-11電話線水晶頭,...)
網絡通信介質:
有線:同軸電纜,光纖,雙絞線
無線:微波,藍牙,紅外線

軟件組件:
網絡操作系統:
Windows、Linux、UNIX
Cisco:IOS,Internetwork Operating System;
Huawei:ComWare,Communication Ware;
通信協議:
通過庫實現:
TCP/IP
IPX/SPX
OSI
數據庫:
數據庫管理系統:
Oracle,MySQL,MariaDB,Percona Server,PostGreSQL(PGSQL),SQL Sever
網絡應用程序:

計算機網絡:將地理位置分散且功能獨立的主機通過網絡設備通信介質連接起來,基於某種通信協議標準實現數據通信和資源共享的系統的集合;

網絡基本功能:
數據通信:
實現數據通信功能的OSI層次我們稱爲通信子網:包括:物理層、數據鏈路層、網絡層、傳輸層;
通信子網關注數據通信的細節和過程;
資源共享:
實現資源共享功能的OSI層次我們稱爲資源子網;包括:會話層、表示層、應用層;
資源子網關注通信的結果;
數據通信是實現資源共享的手段,資源共享是實現數據通信的最終目的

1984年:
ISO:International Standard Organization
ISO/OSI(Open System Internetwork)

根據網絡功能劃分層次:
資源子網
 應用層:
  1.爲應用程序提供網絡連接服務;
  2.完成身份驗證
 表示層:數據表示
  1.數據編碼和解碼
  2.數據加密和解密
  3.數據壓縮和解壓縮
 會話層:主機到主機之間的會話通信
  主機之間的會話建立的主體是應用程序進程;

通信子網
 傳輸層:端到端的連接,範圍到範圍的通信連接;
  端到端連接的建立,維護和拆除;
  可靠性傳輸和非可靠性傳輸;
   可靠性傳輸:
    面向連接
    流量控制
    數據重傳和確認
    序列化數據
   非可靠傳輸:
    面向無連接
    無序列化數據
    無數據重傳和確認
    無流量控制
    數據快速傳輸
 網絡層:路由選擇
  1.邏輯尋址:用邏輯地址標識數據的發送者和接收者;
  2.確定路由:根據邏輯地指標識確定數據傳輸路徑;
  3.地址解析:用邏輯地址解析物理地址;

  定義邏輯地址:
   IP地址:互聯網地址,IPv4、IPv6
    IPv4地址:32 bits --> digit,地址表示形式:點分十進制;
     示例:172.16.72.1
    IPv6地址:ipng,128 bits --> 32 xdigits --> 冒號分十六進制;
     示例:D120::45

   注意:邏輯地址用於標識主機在網絡中的位置,物理地址用於數據通信;

 數據鏈路層:介質訪問,點到點連接
  功能:
  1.格式化數據:將數據規範成二進制格式
  2.物理尋址:標識數據的發送者和接受者
  3.錯誤檢測:CRC算法

  定義了物理地址:
   以太網:以太網地址,MAC地址,MAC(Media Access Control)
    48Bits --> 12 xdigit
    Windows:00-00-00-00-00-00
    Linux/UNIX:00:00:00:00:00:00
    Cisco:0000.0000.0000
    MAC地址的長度爲48位(6個字節),通常表示爲12個16進制數,每2個16進制數之間用冒號隔開,如:08:00:20:0A:8C:6D就是一個MAC地址,其中前6位16進制數08:00:20代表網絡硬件製造商的編號,它由IEEE(電氣與電子工程師協會)分配,而後3位16進制數0A:8C:6D代表該製造商所製造的某個網絡產品(如網卡)的系列號
    注意:物理地址是直接燒錄在網絡接口設備的ROM芯片中;

 物理層:
  二進制比特流傳輸 
  定義了:電氣規範,機械規範,功能規範,過程規範

OSI的應用:
數據的封裝和解封裝;
發送數據一方實施數據封裝;
接收數據一方實施數據解封裝;

保證封裝和解封裝能夠順利進行的標準:
對等通信原則:
發送方和接收方雙方的相同層次,必須擁有完全相同的數據處理方式;

TCP/IP
協議棧,協議標準:

IEEE:美國電氣和電子工程師協會(IEEE)是一個國際性的電子技術與信息科學工程師的協會,是世界上最大的專業技術組織之一(成員人數),擁有來自175個國家的36萬會員(到2005年)。

TCP/IP協議棧是根據協議來分層;分層標準模糊;
網絡的實際應用標準;網絡實現的事實標準;

物理層:
 X.25,TIA/EIA 568A/568B,...
數據鏈路層:
 ppp,pppoE,HDLC,SLIP,Frame_Relay(FR),...
互聯網層:
 IP,IGMP(管理組播通信),ICMP,ARP(能夠根據邏輯地址能夠解析到MAC地址),RARP(能夠根據MAC地址能夠獲取到邏輯地址)
傳輸層:
 TCP,UDP,OSPF,EIGRP,...
應用層:
 HTTP,HTTPS,FTP,DNS,DHCP,SMB(服務消息塊),

互聯網層:
IP的功能:
1.尋址和路由
2.數據分片和重組
3.無連接不可靠傳輸(無序傳輸)

IP尋址:
分層編址的地址:網絡部分 + 主機部分
網絡部分:描述主機所在的邏輯網絡範圍
主機部分:描述在特定的邏輯網絡範圍內的具體位置

IPv4地址:
32bits二進制構成的地址標識符號;4個8位組
爲方便人讀取,將其設置爲點分十進制格式;

A.B.C.D
 A:0~255
 B:0~255
 C:0~255
 D:0~255

IPv4地址分類:
 A類:最左側的二進制數字是“0”,8個網絡位,24個主機位;
    00000000 - 011111111
    0 - 127
    0:
    127:主機環回地址;
    可以地址範圍:
    1.0.0.0-126.255.255.255
 B類:最左側的兩位二進制數字是“10”,16個網絡位,16個主機位;
    10000000 00000000 - 10111111 11111111
    128.0 - 191.255
    可以地址範圍:
    128.0.0.0-191.255.255.255     
 C類:最左側的三位二進制數字是“110”,24個網絡位,8個主機位;
    11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111
    192.0.0 - 223.255.255
    可以地址範圍:
    192.0.0.0-223.255.255.255      
 D類:最左側的四位二進制數字是“1110”,32個網絡位,0個主機位;
  組播地址,多播地址
    11100000 00000000 00000000 00000000 - 11101111 11111111 11111111 11111111
    224.0.0.0 - 239.255.255.255
    可以地址範圍:
    224.0.0.0-239.255.255.255 
 E類:最左側的四位二進制數字是“1111”,32個網絡位,0個主機位;
  多用於科學研究
    11110000 00000000 00000000 00000000 - 11111111 11111111 11111111 11111111
    240.0.0.0 - 255.255.255.255
    可以地址範圍:
    240.0.0.0-255.255.255.255 

私有IP地址:
A:10.0.0.0 - 10.255.255.255
B:172.16.0.0 - 172.31.255.255
C:192.168.0.0 - 192.168.255.255
公有IP地址:
A:1.0.0.0 - 9.255.255.255 + 11.0.0.0 - 126.255.255.255
B:128.0.0.0 - 172.15.255.255 + 172.32.0.0 - 191.255.255.255
C:192.0.0.0 - 192.167.255.255 + 192.169.0.0 - 223.255.255.255

NAT:Nework Address Translation ,網絡地址轉換
SNAT:
將數據包的源IP地址從私有IP地址換爲公有IP地址;
多用於讓客戶端連接到互聯網;
DNAT:
將數據包的目的IP地址從公有IP地址換爲私有IP地址;
多用於將服務器上的服務發佈到互聯網;

以太網協議首部:
第一行:
第一字段:目的地址,6bits
第二字段:源地址,6bits
第三字段:類型,2bits
第四字段:數據,46~1500bits
第二行:
第一字段:類型,2bits
第二字段:IP數據報,46~1500bits
第三行:
第一字段:類型,2bits
第二字段:ARP請求/應答,28bits
第三字段:PAD,18bits
第四行:
第一字段:類型,2bits
第二字段:RARP請求/回答,28bits
第三字段:PAD,18bits

UDP協議首部:
第一行:
第一字段:源端口號,16bits;
第二字段:目標端口號,16bits;
第二行:
第一字段:UDP長度,16bits;
第二字段:UDP檢驗和,16bits;
第三行:(如果有就是)數據

IP PDU 首部:!!!!! 看一下IPv6的首部格式 首部是工作面試中的重點!!!
第一行:
1.Ver:4bits,IP協議的版本號:0110表示IPv6|0100表示IPv4
2.IHLL:4bits,Header Length,首部長度;最少0101 - 最多1111(200Bytes- 600Bytes)
3.TOS and PRIORITY:8bits
0000:最大帶寬,最小延遲,最高可靠性,最高負載;只有5中取值方式0000,1000,0100,0010,0001
0:保留爲;
000:優先級,000-111
4.Packet Length:16bits,IP協議可以封裝的數據包的最大長度65535Bytes;
第二行:
1.Indentifier:16bits,標識來源於那一個上層協議報文;
2.Flag:3bits,
0:是否可分片;
0:是否爲最後分片;
0:保留
3.Offset:13bits,被切分爲數據分片之後的各分片的順序標號;
第一個分片爲0,第二各分片偏移量爲第一個分片的大小除以8的結果,...
第三行:
1.TTL:8bits,爲了防止數據包被路由時,因爲缺少目的地址而無限循環;
數據包在經過任意的路由設備時,其TTL會減1,一旦TTL減到0,接受此數據包的設備將其丟棄;
2.Protocol:8bits,互聯網層和傳輸層的通信接口,通過此處指明的協議號,互聯網層可以在上層找到對應的協議來繼續處理該數據;
TCP:6 00000110
UDP:17 00010001
OSPF:89
EUGRP:88
3.Header Checksum:16bits,首部校驗和,將整個首部做hash,得到4位16進制數字;通常會在接收放主機上,對於接受到的數據包再次進行hash運算,將得到的結果與此處保存的結果進行異或比較,以確定是否在傳輸過程中被修改;
第四行:
源IP地址
第五行:
目的IP地址

IP地址的使用:
源IP地址:
1.手動配置
2.自動配置:DHCP,RARP

目的IP地址:
1.手動指定
2.名稱解析:
hosts文件
NIS
DNS(手動指定或自動獲得)

TCP/IP分層模型中,通信界定地址:
物理地址:
以太網地址,MAC地址;
功能:真正的用於本地通信的地址; 使用範圍:本地局域網內部且不誇路由設備;

邏輯地址:
在TCP/IP協議棧中,邏輯地址被定義爲IP地址;
功能:界定主機到主機的通信地址;點到點通信;邏輯地址僅用於主機定位不用於真正的通信;
使用範圍:全球互聯網;

邏輯端口號:
在TCP/IP協議棧中
功能:界定進程到進程的通信;

邏輯端口號的組成:
16bits二進制構成;其表示範圍爲0~65535;
0:他是特殊端口號不做定義;
1-1023:固定服務端口;
FTP:20/TCP,21/TCP
SSH:22/TCP
TELNET:23/TCP
SMTP:25/TCP
DNS:53/TCP,53/UDP
DHCP:
DHCPS:67/UDP
DHCPC:68/UDP
TFTP:69/UDP
HTTP:80/TCP
POP3:110/TCP
IMAP4:143/TCP
SNMP:161/UDP,162/UDP
HTTPS:443/TCP
1024-45121:半固定服務端口;也可以稱爲註冊端口
mysql:3306/TCP
tomcat:8080/TCP,8009/TCP,8005/TCP,8040/TCP
Memcached:11211/TCP
其餘端口號:可自由分配使用的端口;

邏輯地址:邏輯端口號——套接字(Socket)
能夠界定特定主機上的特定應用程序服務進程;

TCP協議:
1.面向連接:
1)通信開始之前,必須先建立通信雙方主機之間的TCP通信連接;
2)在整個通信過程中,必須維持通信雙方主機之間的TCP通信連接的穩定性;
3)在通信結束時,必須拆除雙方主機之間已建立的TCP通信連接;

TCP協議建立連接的過程:三次握手
a)通信請求發起方,創建一個無數據報文,將其中的SYN標誌位置一;
b)接收方在收到建立連接的請求之後,根據給報文的目標端口號判斷本地是否有監聽此套接字的進程;如果有,即返回確認消息;創建一個無數據報文,將其中的ACK標誌位置一,同時將SYNC標誌位置一,用戶向對方請求建立同步連接;
c)通信請求發起方,再創建一個無數據報文,將其中的ACK標誌位置一;
TCP協議拆除連接的過程:四次揮手
a)由任何一方在數據傳輸結束之後,向另一方發送一個自己創建出來的數據報文,其中FIN標誌位置一;
b)收到連接斷開請求的一方,會對此請求信息予以確認,創建一個無數據報文,其中ACK標誌位置一;
c)此前收到連接斷開請求的一方會再次創建一個無數據報文,將其中的FIN標誌位置一,向對方請求斷開連接;
d)對方在收到此請求報文之後,再創建一個無數據報文,將其中的ACK標誌位置一確認斷開連接的請求;

TCP協議的有限狀態機(TCP FSM)

TCP協議首部:
第一行:
第一字段:源端口號,16bits;
第二字段:目標端口號,16bits;可以手動指定,也可以通過/etc/services文件判斷自動解析應用層協議獲得;

第二行:
序列號:TCP協議將大數據報文分段的順序編號,取值範圍是0~2^32-2;默認情況下,第一個數據段的序列號爲隨機選擇,以後的數據段的序列號通過計算得到;
第一段:隨機產生;
後續其他數據段:前一數據段的序列號+前一數據段的數據部分大小+1;

第三行:
確認號:(下一段的序列號)
接收到的最後一個數據段的下一個數據段的序列號;取值範圍1~2^32-1;

第四行:
第一字段:4bits,報文首部長度,通常報文首部長度爲24Bytes~60Bytes;
第二字段:標誌位:13bits
前三位:保留位;
4-6位:特殊標誌位;
URG:緊急指針標誌位,優先轉發標誌位;URG指針置一,後面的16bits的緊急指針才能生效
ACK:確認標誌位,保證數據傳輸可靠性;
PSH:推進標誌位
RST:重置標誌位
SYN:同步標誌位,三次握手建立連接時必選的標誌位
FIN:結束標誌位,四次握手拆除連接時必選的標誌位;
第三字段:窗口大小,16bits;一次併發傳輸的數據段的數量;

第五行:
第一字段:數據段校驗和,16bits,保證數據的完整性;
第二字段:緊急指針,16bits,在URG標誌位置一時,哪個數據段更緊急

第六行:
選項:TCP協議分段的標準;TCP協議的數據分段數間戳;...

TCP協議的確認機制:
1.發送方在接受到接收方返回的確認數據之前,不會繼續發送後續的數據段;
2.在指定定的時間內,發送方沒有接收到接收方返回的確認數據,則重新發送此前發送的數據段;

數據傳輸過程:
發送方打算把應用數據發送給接收方:
1.將給出的主機名解析爲此次通信的目標主機IP地址;
2.將應用層協議解析爲傳輸層協議加傳輸層端口號的組合(套接字),進而完成傳輸層封裝;
3.如果傳輸層使用TCP協議,則還需要爲TCP協議通信建立連接;
4.如果需要建立TCp連接,必須能夠在網絡層正確封裝IP地址以及在數據鏈路層正確封裝MAC地址;
5.在ARP緩存中,如果沒有對應的目標IP地址條目信息,則需要廣播ARP解析目標主機地址;
6.解析獲得目標主機的MAC地址後,則可以通過三次握手建立TCP連接;
7.爲應用層程序提供數據發送;
8.在數據傳輸完成之後,需要拆除TCP連接;

子網掩碼(Netmask)
組成:32bits二進制組成,與IPv4的地址位數相同;以點分十進制進行標識;
作用:用來標識IPv4地址中的網絡部分和主機部分各佔多少個二進制位;凡是萬羅部分就用“1”表示,凡是主機部分,就用“0”表示;

A類地址的標準子網掩碼:255.0.0.0
B類地址的標準子網掩碼:255.255.0.0
C類地址的標準子網掩碼:255.255.255.0

將IPv4的地址與其相對應的子網掩碼做邏輯與運算,得到的結果是:該IPv4地址所屬的網絡範圍的網絡地址;

網絡地址:主機位全都是“0”的IP地址;也被稱爲網絡名稱;也可以稱爲邏輯網段;
定向廣播地址:主機位全都是“1”的IP地址;在特定的邏輯網段中能夠被應用的廣播地址;

以上兩個地址通常是不能分配給主機使用的;

在一個邏輯網段中主機位全0和主機位全1的地址,必須排除在可以地址範圍之外;

子網掩碼地表示方法:
1.全掩碼錶示法:172.16.72.1/255.255.0.0
2.前綴表示法:172.16.72.1/16

192.168.0.1/16 CIDR,Classless Inter-Domain Routing,無類域間路由;
10.1.1.1/28    變長子網掩碼;

結論:
主機通過將自身的IP地址和目標主機的IP地址分別與自己的子網掩碼進行邏輯與運算,最終得到的結果就是兩臺主機的邏輯網絡地址;
然後將此二結果進行比較,如果相同,則表示此二主機在同一邏輯網絡範圍之內,因此可以直接使用ARP協議獲取對方的MAC地址,從而實現通信;如果不相同,則意味着此二主機在不同的邏輯網絡範圍之中,於是必須藉助於網關才能實現二主機的相同通信;

網關:可以理解爲一個邏輯網絡的門戶,或者是出入口;現在多用路由器充當網關設備;

注意:一旦數據傳輸經過網關等路由設備,則其數據鏈路層的封裝格式會徹底改變;即:重新封裝數據的源MAC地址及目的MAC地址;

對於主機來說,在一次通信的過程中,需要使用配置在自身網絡設備接口上的子網掩碼判斷目標主機與自身IP地址是否在同一邏輯網段;

對於路由器來說,需要利用路由表中路由條目上所攜帶的子網掩碼,來判斷目標主機所在的網絡地址,是否存在與本地路由表中,若果有,則按照路由表知識進行轉發;否則直接丟棄不予轉發;

Linux網絡配置網絡層中的IP地址是內核的屬性這是對Linux而言的!!!
在Linux系統中,網絡功能的實現被分成兩部分存放:
1.存放於內核空間中的協議棧:
包括:物理層、數據鏈路層、網絡層及傳輸層協議;
實現通信子網的功能
2.存放與用戶空間中的應用程序協議:
包括:會話層、表示層及應用層協議;
實現資源子網之功能;

網絡接口的命名規則:
1.傳統的命名規則:
以太網網卡設備:ethX:X是從0開始的整數標識;如:ech0,eth1,...
PPP網絡設備(家裏的ads貓):PPPoE(PPP over Ethernet)
pppX:X是從0開始的整數標識;如:ppp0,ppp1,...
virt:虛擬網絡接口
環回接口:loopback,簡稱loX,X可以省略,X是從0開始的整數標識
2.可預測的命名規則:(CentOS 7開始)
1)根據Firmware進行命名;
每一臺計算機上的網卡設備在其計算機硬件固件中都有唯一的標識符,比如:MAV地址,廠商標識,設備的電器編號等;

  a.如果Firmware或BIOS是主板集成的設備提供的索引信息並且給信息可以被引用,則根據此索引信息進行設備命名,如:
   enoX:如:eno1,eno4646,eno6464,...
  b.如果Firmware或BIOS是主板上擴展插槽所提供的索引信息並且該信息可以被引用,則根據此索引信息進行設備命名,如:
   ensX:如:ens1,ens5555,...
  c.如果用戶現實的定義可以使用諸如MAC地址之類的信息引用網絡設備,可以將設備命名爲:
   enx000c290005b4
2)根據設備在主板上的物理拓撲結構進行命名;
 每一臺計算機的主板上都有固定數量的插槽或接口,根據設備插接位置來唯一標識設備;比如:主板上第二個PCI插槽所插3的網卡的第一個接口;

  a.如果硬件接口的物理拓撲位置信息存在並且可以被引用則可以根據此信息進行設備命名,如:
   enp1s0

注意:在CentOS 7中,如果上述可預測命名規則皆不可用,則延續傳統命名方式對網絡設備進行命名;

在可預測的明明命名結構中,命名格式表示的含義:
 en:Ethernet,表示以太網;
 wl:wlan,表示無線以太網;
 ww:wwan,無線廣域網;

 o<index>:表示集成設備的索引編號;
 s<index|slot>:表示擴展插槽編號或擴展插槽的索引號;
 x<String>:基於MAC地址進行命令的網絡接口;
 p<bus>s<slot>:基於總線模型和擴展插槽的索引聯合索引編號;

CentOS系統中的網絡管理方式:
1.爲網卡設備設置網絡屬性參數:
自動設置:
當主機所在的網絡中至少有一臺DHCP服務器時,可以考慮使用此方法;
通過DHCP服務器可以獲取的網絡配置屬性參數包括:
主要參數:
IPv4地址/Netmask
可選參數:
默認網關
DNS服務器地址
主機域名後綴
TFTP服務器地址
WINS服務器地址
...

手動設置:
 1)使用命令完成配置
  在所有的CentOS系統中,都可以使用的命令;
   net-tools家族(ifcfg家族)
   iproute2家族

  僅在CentOS 7中可以完美使用的命令
   nm家族

 2)修改配置文件完成配置
   /ifcfg-IF_NAME
  /etc/sysconfig/network-scripts/route-IF_NAME
  /etc/hosts
  /etc/host.conf後來被/etc/nsswitch.conf取代
  /etc/resolv.conf
  /etc/services

net-tools家族(ifcfg家族)
ifconfig
ifconfig - configure a network interface 配置一個網絡接口
格式:
ifconfig [-v] [-a] [-s] [interface]
查看網絡接口的配置屬性;
如果省略接口名稱[interface]則默認查看所有處於UP狀態的接口的配置屬性;
-a:查看所有接口,包括處於DOWN狀態的接口的配置屬性;
示例:
[root@localhost ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0C:29:7D:39:22
inet addr:172.16.72.10 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fe7d:3922/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:536 errors:0 dropped:0 overruns:0 frame:0
TX packets:275 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:52465 (51.2 KiB) TX bytes:24683 (24.1 KiB)
Bcast:172.16.255.255廣播地址
BROADCAST支持廣播通信 RUNNING正在運行狀態 MULTICAST支持多播結構 MTU:1500最大傳輸單元爲1500字節
Metric:1度量值 衡量路徑選擇的好壞的一種標準 越小開銷越小 越好
RX收到的傳輸數據包packets:536收到數據包數量errors:0收到報文中錯誤報文數量dropped:0丟棄報文數量overruns:0溢出的
TX傳出的傳輸數據包
collisions:0衝突 由於網絡連接有問題產生的衝突
如果其中錯誤 衝突 丟棄 有一個不是0就證明你的網絡一定是有問題的
目的地址不是你所以你收不到,交換機有一個特性爲泛洪,如果設置爲混雜模式,主機將接受所有數據,監聽網絡中所有的網絡數據,這要求我們能夠分析數據,如果沒必要執行時此命令是危險的;
-v:查看詳細信息
ifconfig [-v] interface [aftype] options | address ...
設置網絡接口的配置屬性或IP地址信息;
[-]arp:在指定網絡接口上開啓或關閉ARP協議支持;
[-]promisc:在指定網絡接口上開啓或關閉混雜模式;
up:激活指定接口;
down關閉指定接口上的驅動;
netmask:明確的指定與IP地址相關的子網掩碼;個是必須是點分十進制;
address:將指定的地址設置在指定的網絡接口上;

route
route - show / manipulate the IP routing table 顯示或操縱IP路由表;

路由表示路由設置完成路由轉發的基礎依據,因此路由表的存在對於路由設備而言至關重要;

路由表中可能存在的路由條目類型:
1.主機路由:目的地址爲特定單個IP地址的路由條目;
172.16.72.1/32

2.網絡路由
子網路由:目標地址是子網地址的路由條目
172.16.72.0/24
10.1.1.4/30
主網路由:目標地址爲主網地址的路由條目;
超網路由(CIDR):目標地址爲CIDR的路由條目;或稱爲聚合路由或彙總路由;

3.默認路由:目標地址爲0.0.0.0/0的路由條目:
0.0.0.0/表示整個IPv4地址棧中所有有效IPv4地址;
默認路由意思是:到達任意主機的路由

通常情況下路由表條目匹配的順序爲“首項匹配域”;匹配範圍最小的優先級最高;

格式:
route [-CFvnNee] [-A family |-4|-6]
查看kernel中的IP路由表
-n:不將IP地址反解爲主機名,而是以數字化的IP地址顯示主機標識
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
route del [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
操縱路由表
~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.2 dev eth0
~]# route add default gw 172.16.0.2
~]# route del -host 192.168.100.1
~]# route del -net 192.168.10.0

netstat
netstat - Print network connections, routing tables, interface statis‐tics, masquerade connections, and multicast memberships

Print network connetions:
[--tcp|-t]:僅顯示與TCP協議相關的會話連接的信息;
[--udp|-u]:僅顯示與UDP協議相關的會話連接的信息;
[--udplite|-U]:僅顯示與UDPLITE協議相關的會話連接的信息;
[--sctp|-S] :僅顯示與SCTP協議相關的會話連接信息;
[--raw|-w]:僅顯示與裸套接字相關的會話連接信息;
[--listening|-l]:僅顯示當前主機上處於LISTEN狀態的TCP連接的信息;
[--all|-a]:查看所有狀態的任意協議的連接信息;
[--numeric|-n]:數字化顯示查詢結果中的主機名,端口號,用戶ID等信息;
[--numeric-hosts]
[--numeric-ports]
[--numeric-users]
[--program|-p]:顯示與該網絡會話連接相關的應用程序進程信息
TCP協議有限狀態機: 瞭解就好
ESTABLISHED
The socket has an established connection.

   SYN_SENT
          The socket is actively attempting to establish a connection.

   SYN_RECV
          A connection request has been received from the network.

   FIN_WAIT1
          The socket is closed, and the connection is shutting down.

   FIN_WAIT2
          Connection  is  closed, and the socket is waiting for a shutdown from the remote end.

   TIME_WAIT
          The socket is waiting after close to handle packets still in the network.

   CLOSE  The socket is not being used.

   CLOSE_WAIT
          The remote end has shut down, waiting for the socket to close.

   LAST_ACK
          The  remote end has shut down, and the socket is closed. Waiting for acknowledgement.

   LISTEN 
          The socket is listening for incoming connections.  Such  sockets are  not included in the output unless you specify the --listen‐ing (-l) or --all (-a) option.

   CLOSING
          Both sockets are shut down but we still don't have all our  data sent.

   UNKNOWN
          The state of the socket is unknown.

常用的選項組合:
-tan , -uan , -tnl , -unl , -tnlp , -unlp , -tunlp

Print routing tables 沒有示意的有興趣可以自己瞭解!
{--route|-r}:顯示kernel路由表信息;
[--numeric|-n]:數字化顯示查詢結果;
[--numeric-hosts]
[--numeric-ports]
[--numeric-users]
[--extend|-e[--extend|-e]]:顯示擴展主機名

常用的選項組合:
-rn , -rne

Print interface statistics
{--interfaces|-I|-i}:顯示接口的狀態統計信息
[--all|-a]
[--extend|-e]
[--verbose|-v]
[--pro-gram|-p]
[--numeric|-n]
[--numeric-hosts]
[--numeric-ports]
[--numeric-users]

常用的選項組合:
-i,-ie

Print protocol statistics
{--statistics|-s}:顯示各個協議的詳細的統計信息
[--tcp|-t]
[--udp|-u]
[--udplite|-U]
[--sctp|-S]
[--raw|-w]

iproute2家族:
ip
ip - show / manipulate routing, devices, policy routing and tunnels
格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | addrlabel | route | netns }
OPTIONS := { -V[ersion] | -s[tatistics] | -n[etns] name }
COMMAND :={ add | delete | set | show | }

 link:
  ip link ...
   ip-link - network device configuration

   ip link { add | delete | set | show/list }

   ip link set [dev] IF_NAME { up | down }
    激活或關閉指定的網絡接口;

   ip link set [dev] IF_NAME { arp {up | down} }
    是否允許在指定接口上使用ARP協議;

   ip link set [dev] IF_NAME name NEWNAME
    修改網絡接口的名稱,需要將要改名的藉口關閉

   ip link set [dev] IF_NAME { netns PID | netns NETNSNAME }
    將指定的網絡接口添加到指定的網絡命名空間中;

  ip link show | ip link list
   列表顯示所有的網絡接口,只顯示網絡接口的數據鏈路層的屬性信息

  ip link help:
   獲取簡短的幫助信息

netns僅在CentOS7中可用:
 ip-netns - process network namespace management
  設置內核中的網絡命名空間;

 ip netns add NTENSNAME
  創建網絡命名空間

 ip netns extc [ NETNSNAME ] command...
  在指定的網絡命名空間中執行命令;

 ip [-all] netns del [ NETNSNAME ]
  刪除指定的網絡命名空間,或者刪除所有的網絡命名空間;

address:
ip-address - protocol address management
ip [ OPTIONS ] address { COMMAND | help }

ip address { add|del } IF_ADDR dev IF_NAME
在網絡接口上添加IP地址或者從網絡接口上刪除IP地址;

 ~]# ip address add 192.168.100.100/24 dev eth666
 ~]# ip address del 192.168.100.100/24 dev eth666

ip address { show | list } [dev IF_NAME]
查看指定接口上或所有接口上的地址屬性信息;

ip address flush [dev IF_NAMME]
將指定接口或所有接口上通過ip命令添加配置的IP地址全部清除

注意:此命令在執行之前,必須保證不能影響全部網絡接口,不能阻止遠程管理的進行

示例:
[root@localhost ~]# ip addr add 192.168.10.1/24 dev eth666
[root@localhost ~]# ip addr add 10.1.1.1/24 dev eth666
[root@localhost ~]# ip addr add 172.18.0.1/24 dev eth666
[root@localhost ~]# ip addr list dev eth666
3: eth666: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:0c:29:7d:39:2c brd ff:ff:ff:ff:ff:ff
inet 192.168.100.100/24 scope global eth666
inet 192.168.10.1/24 scope global eth666
inet 10.1.1.1/24 scope global eth666
inet 172.18.0.1/24 scope global eth666
[root@localhost ~]# ip address flush dev eth666
[root@localhost ~]# ip addr list dev eth666
3: eth666: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:0c:29:7d:39:2c brd ff:ff:ff:ff:ff:ff

ip address add IF_ADDR dev IF_NAME label LABEL_NAME
ifconfig LABLE_NAME IF_ADDR
給網絡接口添加新的IP地址時,指定將IP地址應用於接口的某一個標籤上,其目的是爲了能夠讓ifconfig命令查看到同一接口上不同的IP地址配置;

一般來講,接口的標籤都會使用IF_NAME:#

route:靜態路由管理 !!!!
ip-route - routing table management 路由表管理工具
ip route { add | del | change | append | replace } ROUTE

ROUTE := TARGET(目標地址)/NETMASK(目標地址掩碼) [via NEXT_HOP [dev IF_NAME]] 修改的時候要寫完整 刪除時[]號中的內容可省略
~]# ip route add 192.168.100.0/24 via 172.16.0.1 dev eth666
~]# ip route del 192.168.100.0/24

ss
ss - another utility to investigate sockets

-t,--tcp:僅顯示與TCP協議相關的會話連接狀態統計信息;
-u,--udp:僅顯示與UDP協議相關的會話連接狀態統計信息;
-w,--raw:僅顯示與裸套接字相關的會話連接狀態統計信息;
-l,--listening:僅顯示處於監聽狀態的套接字狀態統計信息;
-a,--all:顯示所有的套接字會話連接的狀態統計信息;
-n,--numeric:數字化顯示結果;
-p,--processes:顯示與連接會話相關的應用程序進程及進行ID;
-e,--extended:顯示詳細的擴展信息;
-m,--memory:顯示套接字佔用的內存數量;
-o,--options:顯示計時器信息;
常用選項組合:
-tan,-uan,-tnl,-unl,-tnlp,-unlp,-tunlp

FILTER:=[ state STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER:
ALL standard TCP states: established , syn-sent,syn-recv,fin-wait-l,fin-wait-2,time-wait,closed,close-wait,last-ack,listen and closing.

 all - for all the states

 connected - all the states except for listen and closed

 synchronized - all the connected ststes except for syn-sent

 bucket - states,whic are maintained as minisockets,i.e. time-wait and syn-recv

 big - opposite to bucket

EXPRESSION:
 dport = :port
 sport = :port 

 示例:
  '( dport = :80 or dport = :22)'

net-tools家族和iprote2家族:
特點:所有能夠完成網絡參數配置的命令,在進行網絡參數的配置之後,其配置結果會立即生效;但是,只要重新啓動網絡設備或刷新內核參數,其配置就會立即丟失;

爲了能夠持久化保存網絡參數的配置結果,需要將有意義的參數寫入到配置文件中;

配置文件:
1./etc/sysconfig/network-scripts/ifcfg-IF_NAME
在CentOS 6中:跟IP、MASK、GATEWAY、DNS相關的配置文件;
DEVICE=eth0
此網絡接口的名稱;
HWADDR=00:0C:29:28:03:BD
此網絡接口設備的物理地址,在以太網中即爲MAC地址;
TYPE=Ethernet
此網絡接口的網絡類型,比較常見的是:Ethernet,Bridge,Token Ring,...
NM_CONTROLLED=no
是否受到Network_Manager組件的管理控制;
ONBOOT=yes
在操作系統引導啓動的過程中,是否自動激活此網絡接口;
BOOTPROTO=static
在激活此網絡接口時,使用何種協議來配置此接口的IP地址等屬性;
手動指定,靜態配置:static | none
自動獲取,動態配置:dhcp | bootp
IPADDR=172.16.67.1
如果BOOTPROTO配置指令的值爲靜態配置,則此指令爲當前網絡接口配置靜態IP地址;
如果BOOTPROTO配置指令的值爲動態配置,即便定義了此指令,也不生效;
PREFIX=16
通過指定網絡位長度而指定子網掩碼;
NETMASK=255.255.0.0
指定子網掩碼;
NETBOOT=yes
當前網絡接口是否支持網絡引導啓動;
IPV6INIT=no
是否在此網絡接口上初始化IPv6協議;
USERCTL=no
是否允許普通用戶管理此網絡接口;推薦取值爲"no";
GATEWAY=172.16.0.1
設置默認網關;
DNS1=x.x.x.x
DNS2=y.y.y.y
DNS3=z.z.z.z
定義首選DNS服務器,備用DNS服務器及第三DNS服務器地址;
PEERDNS=no:
是否允許把從DHCP服務器獲取到的DNS服務器地址覆蓋存儲到/etc/resolv.conf文件中;默認值爲允許;

    注意:在CentOS 6中,不建議使用Network-Manager管理網絡接口;因此建議在CentOS 6中將NM服務徹底關閉,使用下列命令即可:
        ~]# service NetworkManager stop
        ~]# chkconfig NetworkManager off

    在CentOS 7中:跟IP、MASK、GATEWAY、DNS相關的配置文件;
        TYPE=Ethernet
        BOOTPROTO=dhcp
        DEFROUTE=yes
        PEERDNS=yes
        PEERROUTES=yes
        IPV4_FAILURE_FATAL=no
        IPV6INIT=yes
        IPV6_AUTOCONF=yes
        IPV6_DEFROUTE=yes
        IPV6_PEERDNS=yes
        IPV6_PEERROUTES=yes
        IPV6_FAILURE_FATAL=no
        NAME=eno33554984
        UUID=2ffd49eb-26ac-4eaf-92cc-45deed5d9e04
        DEVICE=eno33554984
        ONBOOT=yes
        NM_CONTROLLED=yes

2.主機名的配置文件:/etc/sysconfig/network
    CentOS 6:
        HOSTNAME=mylab11.qhdlink.com

    設置主機名的命令:
        hostname
            hostname - show or set the system’s host name

        修改主機名:
            # hostname HOST_NAME
                註銷再登錄則新主機名生效;重啓之後,該主機名失效;

    CentOS 7:
        /etc/sysconfig/network不具備保存主機名的意義;

        hostnamectl命令:
            # hostnamectl set-hostname HOST_NAME
                註銷再登錄,新主機名生效,重啓之後,該主機名仍然有效;

3.本地解析文件:/etc/hosts
    格式:
        IP地址 主機名 主機名 ...

    CentOS 6和CentOS 7中,功能相同;

4.解析器文件:/etc/resolv.conf
    保存了DNS服務器的IP地址,以用於基於DNS服務的主機名稱解析;
        search DOMAIN_NAME
        nameserver DNS_SERVER_IP1
        nameserver DNS_SERVER_IP2
        nameserver DNS_SERVER_IP3
        ...

5.靜態路由配置文件:/etc/sysconfig/network-scripts/route-IF_NAME
    注意:IF_NAME必須是此次路由出站的接口名稱;
    此文件通常有兩種書寫風格:
        1) 每條靜態路由信息,佔用一行:
            TARGET/MASK via NEXT_HOP [dev IF_NAME]

            示例:
                10.0.0.0/8 via 172.16.0.1 dev eno16777736

        2) 在多行中分別列出每條路由信息的內容:
            ADDRESS#=TARGET
            NETMASK#=MASK
            GATEWAY#=NEXT_HOP

            示例:
                ADDRESS0=10.0.0.0
                NETMASK0=255.0.0.0
                GATEWAY0=172.16.0.1

6.名稱解析順序的定義:/etc/host.conf
    multi on;
        服務器上的多個網絡接口是否能夠同時完成網絡功能;

    order hosts,dns
        在實現將名稱解析爲IP地址時,本地hosts文件和遠程DNS服務器哪一個被優先查找;

7.各種名稱解析的順序:/etc/nsswitch.conf

8.內核參數的調整文件:/etc/sysctl.conf
    net.ipv4.ip_forward = 0
        Linux內核中的核心轉發功能,是否開啓;

    sysctl命令:
        sysctl - configure kernel parameters at runtime
            -a:查看當前所有有效的內核參數及值;
            -w:修改運行時內核參數值;修改的結果爲一次性有效,下次重載內核參數時就失效;
            -p:從/etc/sysctl.conf文件中重載所有內核參數的值;

nm家族:僅限於CentOS 7發行版;
nmcli:命令行接口工具
nmcli - command‐line tool for controlling NetworkManager
格式:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }

  OBJECT := { general | networking | radio | connection | device | agent }

   connection - start, stop, and manage network connections
    COMMAND := { show | up | down | add | edit | modify | delete | reload | load }

    show:顯示所有 | 指定的網絡連接的屬性信息;
    up | down:啓用或關閉網絡連接;
    add:添加一個網絡連接;創建網絡接口的配置文件;
      autoconnect yes | no :是否自動啓動此連接,相當於在配置文件中指明OONBOOT={yes|no}
      ifname IF_NAME:指定要創建連接的目標網絡接口的設備名稱;
      con-name CON_NAME:爲指定的網絡接口設備創建一個連接名稱;
      type TYPE:指定網絡設備的接口類型;
    delete:刪除一個網絡連接,刪除網絡接口的配置文件;參數爲CON_NAME
    reload:不重啓網絡接口,但重新加載接口的配置文件中所定義的配置信息;
    modify:
     modify [id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
      <setting>:
       connection.autoconnect yes|no
       ipv4.addresses
       ipv4.dns
       ipv4.gateway
       ipv4.method [auto,link-local,manual,shared,disabled]
     通過nmcli命令設置的網絡連接的配置,默認會直接存放在網絡接口的配置文件中,因此配置不會立即生效,如果想要配置文件中的配置屬性
      1.重啓全部網絡接口:
       #sustemctl restart network.service
      2.重啓指定的網絡接口:
       ifdown IF_NAME ; ifup IF_NAME
      3.不重啓接口加載配置文件:
       nmcli connection reload CON_NAME
    device:
     device - show and manage network interfaces
     COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }

nmtui:文本用戶接口
nmtui - Text User Interface for controlling NetworkManager

與nmtui相似的CentOS 5 | 6中的命令:

system-config-network[-tui]

setup --> [Network Configuration,網絡配置]

注意:上述操作,完成之後必須重啓網絡接口,才能使新配置信息生效;

Bonding——接口綁定
就是將多塊網絡接口設備組織成一個統一的邏輯接口,並設置IP地址;在所有被綁定的網絡接口之間可以實現網絡數據的負載均衡或者網絡接口的高可用功能;

在設置了綁定之後,虛擬出一個網絡接口對外提供網絡服務及網絡連接,將所有的物理網絡接口的物理地址都改爲相同的MAC地址;

Bonding的工作模式:
mode=0:balance-rr,默認的工作模式,負載均衡解決方案;round-robin,從頭到尾按照順序在每個slave接口上面發送數據包,可以實現負載均衡和容錯;
mode=1:active-backup,主備解決方案;在此模式中,只有一個slave接口被激活,用於正常的數據傳輸;而其他的接口都僅僅只是監視活動接口的工作狀態;當且僅當活動的slave接口被判定爲失敗時,纔會從其他的備份接口中選擇一個接口用於激活;此模式只能實現容錯,不能實現負載均衡;

mode=2:balance-xor;

mode=3:boadcast,全廣播模式解決方案;在所有的slave接口上,傳輸全部報文內容;無法實現負載均衡,可以實現容錯;
mode=4:802.3ad,動態鏈路聚合;創建一個聚合組,同時要求所有參與據合租的藉口必須具備相同的速率模式和雙工模式;而且必須要求連接此接口的交換機也支持802.3ad模式;

mode=5:balance-tlb,自適應的傳輸負載均衡,無需交換機支持;每個slave接口根據當前的負載情況分配外出的數據流量;

mode=6:balance-alb,自適應負載均衡,包括mode=5模式,同時加上針對於IPv4流量的接收負載均衡(rlb,recieve loab balance),而且無需交換機支持;

Bonding的監控時長:
miimon=Number

用miimon來監控鏈路狀態;在指定的時間內(Number,單位是ms)時間內,如果某個藉口的測試結果爲不能聯通則將此接口標識爲失效,此時需要進行故障倒換;

Bonding的配置:
1.創建虛擬接口,其名稱通常bond0,...;
2.選擇miimon的監測時間;
3.選擇bonding的工作模式;
4.選擇用於此次bonding的物理接口(slave接口);

nmcli,nmtui,vim6

注意:直接在虛擬機上物理斷開網絡連接進行測試,不要使用ifdown命令:

配置方式:
1.虛擬接口的配置(Master 接口)

vim /etc/sysconfig/network-scripts/ifcfg-bond0

vim /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100"
IPADDR=172.16.254.1
PREFIX=16

2.物理接口的配置(Slave 接口)

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes
NM_CONTROLLED=no
USERCTL=no

所有物理接口,進行類似配置:DEVICE的值一定要和物理接口保持一致;

在CentOS 7中除了Bonding之外,還引入了一個新的概念,網絡組(Network Teaming)
網絡組:將多個網絡接口設備聚合在一起的方案,可以實現網絡接口的冗餘和高可用,提高吞吐量;

網絡組和Bonding相比,具有更好的性能以及更好的可擴展性;建議在CentOS7中使用網絡組而不是Bonding;

在CentOS7所選擇的內核中支持網絡組;網絡組就是其內核中的一個內核驅動,和一個名字爲teamd的守護進程;

在bonding中能夠使用的工作模式,網絡組都可以支持,並且網絡組使用運行器(runner)來實現這些功能;
loadbalance
activebackup
broadcast
roundrobin
lacp(802.3ad,Link Aggregation Control Protocol)

網絡組的特點:
1.啓動網絡組接口不會自動啓動網絡組中的其他的port接口;
2.啓動網絡組port接口,也不會自動啓動網絡組接口;
3.禁用網絡組接口,則會立即禁用網絡組中所有的port接口;
4.對於沒有添加任何port接口的網絡組而言,只能配置靜態IP地址,不能設置DHCP獲取IP地址;如果對於此類的網絡組接口設置了DHCP配置,這樣的網絡組接口就一直不啓動,一直等待其他的port接口加入此網絡組;

網絡組的配置方法:
1.創建網絡組接口
nmcli connection add type team con-name TEAM_CON_NAME ifname IF_NAME config JSON
JSON是用來指定runner的,其格式爲:
'{"runner": {"name": "METHOD"}}'

示例:
    ~]# nmcli connection add type team con-name class18 ifname class18 config '{"runner": {"name": "loadbalance"}}'

2.創建port接口:
nmcli connection add type team-slave [con-name CON_NAME] ifname IF_NAME master TEAM_NAME

注意:如果不知道con-name,默認的con-name爲: team-slave-IF_NAME

示例:
~]# nmcli connection add type team-slave ifname eno33554984 master class18
~]# nmcli connection add type team-slave ifname eno16777736 master class18

~]# nmcli connection up class18
~]# nmcli connection up eno16777736
~]# nmcli connection up eno33554984

~]# nmcli device disconnect eno16777736
~]# nmcli device disconnect eno33554984

注意:
1.所有的port接口不需要配置IP地址,子網掩碼,網關,DNS服務器等屬性;此類配置屬性僅在網絡組接口中配置即可;配置的方法,可以直接修改其配置文件,也可以使用nmcil connection modify...
2.配置完成之後,需要重啓網絡服務:

建議:
 在CentOS6中使用Bonding
 在CentOS7中使用Network Teaming;

網絡檢測工具:
ping
traceroute
arp

ping命令:
ping, ping6 - send ICMP ECHO_REQUEST to network hosts
格式:
ping [-c count] [-I interface] [-t ttl] [-W timeout] [-s pack‐etsize]
常用選項:
-c #:此次測試發送的報文數量;
-I interface|address:如果參數是IP地址,則此次測試操作的源IP地址即爲此處指明的IP地址;
如果參數是接口名稱,則此次測試操作,經由該口發送出去;
-t ttl:手動設置此次測試時的報文的TTL值;
-W timeout:設置接收相應報文的超時時間;
-s pack‐etsize:指明包的大小;

traceroute命令:
Windows中爲tracert

traceroute - print the route packets trace to network host
僅返回TTL值爲1時的路由接口的IP地址;

arp命令:
arp - manipulate the system ARP cache
查看或修改arp緩存中的內容;
常用選項:
-n, --numeric:以數字化顯示結果;

網絡客戶端工具:
ftp,lftp,lftpget,wget

wget:
Wget - The non-interactive network downloader.
格式:
wget [option]... [URL]...
常用選項:
-O file ,--oupt-document=file
--limit-rate=amount
-nH,--no-host-directories
-np,--no-parent

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章