網絡的特徵
速度
成本
安全性
可用性
可擴展性
可靠性
拓撲mysql
- 其中可用性按整個系統可用時間佔整年整體時間的百分比來計算。
好比99%可用1%不可用,則一年內有3天左右的時間不可用,這是沒法接受的。
通常大型企業要求99.999%,大約5分鐘左右不可用時間。
raid技術就是一個解決可用性的技術,服務器和多個機房備份也是爲了可用性。
- 而可靠性指的是硬件和系統的性能,注意它倆區別。
國際標準化組織(International Organization for Standardization,ISO)簡稱ISO。
OSI是Open System Interconnection的縮寫,意爲開放式系統互聯。國際標準化組織(ISO)制定了OSI模型,該模型定義了不一樣計算機互聯的標準,是設計和描述計算機網絡通訊的基本框架。OSI模型把網絡通訊的工做分爲7層,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。這是一種事實上被TCP/IP 4層模型淘汰的協議。在當今世界上沒有大規模使用。linux
應 用 層:Application layer
表 示 層:Presentation layer
會 話 層:Session layer
傳 輸 層:Transport layer :網段 :
網 絡 層:Network layer :邏輯地址(更容易找到設備的位置):數據包 :三層交換機,路由器,家用集成路由器
數據鏈路層:Data link layer : 物理地址(世界惟一性) :幀 :二層交換機,網卡(IP地址是操做系統分配,並不是網卡自帶,固然MAC地址也可用windows虛擬更改)
物 理 層:Physical layer :位 :網線,集線器ios
- 注意每一層傳輸的時候都要爲上一層提供服務,所以要指明上一層的協議(由於每一層都有不少種不一樣的協議)。
- 這是由於目標主機拆解封裝包的時候,它若是不指明上一層協議,則當這一層解報頭傳到上一層以後,目標主機不知道要用什麼協議在上一層對數據進行拆解以及各類處理。
- 從應用層到物理層爲封裝,每次加報頭,數據鏈路層加上校驗位,反過來爲解封裝。
PDU
PDU: Protocol Data Unit,協議數據單元是指對等層次之間傳遞的數據單位
物理層的 PDU是數據位 bit
數據鏈路層的 PDU是數據幀 frame
網絡層的PDU是數據包 packet
傳輸層的 PDU是數據段 segment
其餘更高層次的PDU是消息 messagegit
數據傳輸方式
按方向分: 單工 半雙工 全雙工 ,分別爲單向,同一時間單向,同時可雙向。
按目標主機數量分:單播 多播(組播) 廣播
- 注意單播多播廣播它只管發送,無論目標主機是否收到。不是目標主機的機器也會收到信息只不過默認狀況下會將其拋棄,但也可能經過其它手段故意獲取信息內容達到竊聽的效果。
- 注意廣播可能會影響到衝突域內的其餘主機(不想接受廣播)的通訊效率
局域網LAN和廣域網WAN
- 局域網突出的特色就是基於廣播的方式通訊,在一個小的範圍內,這樣它尋找主機的效率最好
- 廣域網通常就是經過點對點,一段一段將數據傳出
雙絞線排序
國內經常使用T568B標準,國際上經常使用T568A標準.
百兆之內不排序也可,可是百兆以上不排序會影響網速。算法
- 直連線:RJ45水晶頭兩頭爲同一種排序方式,生活工做中用的最多就是這種直連線。
- 交叉線:兩頭分別爲T568A和T568B
目前主機上大多都能自動識別交叉線仍是直連線,所以不用刻意交叉,直接用直連線便可相互通信。不過有些網卡沒有這功能,仍是須要製做交叉線才行。
以上都是5類線的標準,當網速達到千兆以上,用到超5類線以上標準,則8根線每根都既能發送又能接收數據。
T568B:
sql


- 1和3線以及2和6線分別相互對調即T568A和T568B互換。

- 早期主機相連就是按照上圖方式,不過如今的網卡均可以自適應,因此無需分別,除非是特別老的機器。
以太網(Ethernet):用於局域網內標準
- 目前基本上局域網內用的都是以太網協議,早期還有令牌環網等協議
- 以太網協議工做在數據鏈路層(和物理層)
- wifi也是屬於以太網協議(無線),802.11開頭。
注意wifi和wlan和wapi區別:wlan是另外兩種協議的統稱,表明無線局域網協議shell




- 以太網工做在數據鏈路層,以幀爲數據單位,其結構能夠參考網絡資料。
- MAC:media access control
- 早期以太網協議沒有指明上一層(網絡層)協議,後來在長度位增長了type兩個字節用來指明上一層協議
查看幀內內容可用抓包工具
windows:wareshark
linux:數據庫
命令行命令 tcpdump
-i 後面指定要抓包的網卡名
-nn 抓包的網卡,當對方訪問本機時,顯示對方的IP地址而不是主機名
-x 顯示16進制的包內數據信息ubuntu
查看網卡信息 ethtool
ethtool 直接跟網卡名:顯示網卡詳細信息
-i 後面指定網卡名 好比 eth0 :查看網卡驅動模塊vim
查看網卡信息 mii-tool -v eth0
netstat 或者 ss 查看網絡各類信息
- n 儘可能以數字形式顯示,不要顯示主機名等等
- t 只顯示與TCP協議相關的數據
- r 路由表相關信息
- a 全部信息
雜項
yunm -install httpd-tools
ab -c 100 -n 2000 http://192.168.0.1/test.txt
早期同軸電纜的時期CSMA/CD用來解決衝突,後來用了雙絞線以及各類網絡設備:
- HUB :集線器,也被稱爲中繼器repeter(雙絞線的最大有效傳輸100米左右,用它來放大信號延長距離),傻瓜式向全部端口以廣播的機制轉發數據,一個主機發送數據以後鏈接到集線器上的全部設備都會收到這個數據,其也被稱爲泛洪機制(flood)。
- 它的缺點就是數據不安全(全部機器都能收到數據,所以即可抓取並窺竊);同時會干擾到其餘不須要接收數據的機器;再有就是兩臺機器以上同時發送數據會在集線器內發生衝突,那就仍然須要回退算法(CSMA/CD)從新發送;全部機器共享HUB帶寬,工做方式半雙工。
- 鏈接到hub上的主機在一個衝突域內(兩臺機器同時發送數據,數據會發生衝撞並損毀,那麼這兩臺主機就在一個衝突域)
- 注意HUB工做在物理層。
- 網橋:網橋兩端分別爲兩個衝突域,它就是一個兩個端口的交換機,二層設備工做在數據鏈路層。
- switch:交換機,外觀相似集線器,不過是以單播轉發的機制向特定主機發送數據,它的每個端口就是一個衝突域,而且鏈接到它的每一個主機的帶寬就是交換機的帶寬,並非共享方式,而是獨佔方式,全雙工通信。固然它要提早動態學習port和MAC對應的MAC地址表才能達到這個分離衝突域的效果(注意下面的.
- 它會根據本身內存中的端口和地址對應的表來對應的轉發數據,若是表中沒有目標地址MAC和端口對應數據,則它會向全部端口轉發數據,若是找到了,則只會向目標地址MAC對應的端口轉發數據,達到單播的效果,也就是至關於只有第一次發送數據的時候是廣播形式(由於找不到目標MAC地址主機對應的端口)
- 它學習過程是這樣的,當收到一個主機發送的數據幀時(以太網幀),它會記下它收到的這個發送的數據來自哪一個端口port以及發送這個數據的主機的MAC地址,這樣就把這個端口和MAC地址對應起來了(注意學習的時候是靠源數據來自的源地址以及源端口來學習並存入內存表格中的,而不是靠目標地址)
- 注意一個端口對應的MAC地址能夠有多個,由於一個端口上能夠再次接上交換機或者集線器等等,能夠有多臺主機接在這一個端口上,因此一個端口對應了多個MAC地址。注意這個MAC地址表存在內存中,斷電會丟失,由於是動態學習方式,因此能夠被清除或者修改,其能保存的對應條目是有限的。
- 由於它的這個特性,可知若是內存表空間被佔滿,它就不會再記錄新的端口和MAC對應條目,所以它受到數據以後若是找不到對應的MAC地址,他就會廣播形式向全部端口轉發,形成網絡擁堵。經過這種僞造虛假源地址發送數據,而後佔滿內存表的方式讓交換機廣播發送,降級設備,就能實現監聽數據的效果(由於廣播了因此全部的接口都會收到找不到目標MAC地址的數據)。固然具備管理能力的交換機可以避免這種狀況發生,但沒有管理能力的就沒法控制這種行爲了。
- 相比於HUB,它數據更加安全。但某些具備管理功能的交換機一樣能夠將某個端口設置爲旁路接口,全部經過這個交換機的數據都要轉發到這個接口上,不論目標地址是什麼,也能夠達到竊聽效果。
- 同時要注意交換機工做在數據鏈路層,它記錄的是端口和MAC地址而不是IP,IP在網絡層
- 交換機和網橋能隔斷衝突域,不能隔斷廣播域(廣播域就是說一臺主機發送一個廣播,另外一臺主機收到,那麼他倆就在一個廣播域,廣播域的以太網幀中的目標地址信息爲48個1也就是FF:FF:FF:FF:FF:FF)。由於它裏面存的MAC地址表都是從源地址學習得來,源地址不可能有48個1的MAC地址,既然找不到這48個1對應的MAC地址和端口,受到廣播數據MAC地址爲48個1就會向所有端口轉發,所以便會廣播。(注意鏈接到交換機的交換機也會收到廣播信息,想一想原理便知)
VLAN:一般用於配置交換機分隔廣播域,每個VLAN就是一個虛擬局域網網段。(相似實現了路由器的功能,節省單獨購買路由器的成本)
- 1.分隔廣播域 2.安全 3.靈活管理 :注意交換機須要支持配置功能才能配置VLAN。
- 實現:最經常使用的以端口方式劃分VLAN:將交換機的幾個端口劃分紅一個VLAN中,另外幾個端口劃分到另一個VLAN中,這每個VLAN就是一個廣播域(相似子這些端口接到了一個子交換機上),可是兩個不一樣的VLAN之間不能通信(至關於物理上隔斷了,或者說多個VLAN之間接了一個路由器)
- 若是隻能劃分VLAN不能配置他們之間的通信策略,就是二層交換機;若是咱們能夠配置這多個VLAN之間的相互通信策略,實現劃分廣播域,達到安全配置功能,就是帶有路由功能的三層交換機。
- 二層交換機VLAN間互訪需藉助路由或三層交換機來實現,三層不須要。
- 若是兩個(或多個)交換機之間的VLAN想要鏈接在一塊兒,能夠把這兩個交換機上都各自拿出一個端口並相連,同時
將這兩個端口各自加入想要鏈接的VLAN內便可,但若是想要鏈接的VLAN和交換機太多,就會佔用過多的端口。這時候就須要一個trunk-802.1Q協議並利用一個trunk端口,也就是幹路端口來讓這一個接口能夠轉發此交換機上全部VLAN的數據。
- 可是轉發出去的數據包若是不指定上目標交換機想要與這個數據包來自的VLAN網絡合並的VLAN,則在目標交換機會所有轉發,所以會在以太網幀的報頭信息內指定上目標交換機的VLAN信息,以便相互合併。這就是trunk的工做方式。

- 上圖中主交換機和子交換機相連的全部口都是trunk接口,注意主交換機上配置了3個trunk接口。固然前提是交換機能夠配置,不能配置的交換機不支持VLAN功能。
- 路由器:爲了實現路由,路由器須要作下列事情(這裏指的是企業級專用路由器,工做在網絡層,家裏用的路由器是個集成交換機的集成設備,注意區分):
- 分隔廣播域(多播廣播數據都會隔斷,只有單播才能穿越,單播也能夠配置讓它不能穿越,總之所有均可調控,達到安全配置功能)
- 選擇路由表中到達目標最好的路徑
- 維護和檢查路由信息 :好比企業中的核心交換機都是帶有路由功能的,三層交換機,能夠配置鏈接到它的各個端口的二層交換機之間可否傳輸數據和通訊。這樣就把它的子交換機(各個部門交換機)分隔成一個一個的廣播域,而不是全都在一個廣播域內,能夠設置子交換機(各個部門)之間的通信方式(單向,雙向,不可通信),實現安全策略。
- 鏈接廣域網
分層的網絡結構(企業中的簡單配置):

TCP/IP 協議棧和 OSI 模型
Transmission Control Protocol/Internet Protocol傳輸控制協議/因特網互聯協議
TCP/IP是一個Protocol Stack,包括TCP、 IP、 UDP、CMP、 RIP、TELNET、FTP、 SMTP、ARP等許多協議,最先發源於美國國防部(縮寫爲DoD)的因特網的前身ARPA網項目,1983年1月1日,TCP/IP取代了舊的網絡控制協議NCP,成爲今天的互聯網和局域網的基石和標準,由互聯網工程任務組負責維護
共定義了四層和ISO參考模型的分層有對應關係
ethr(IP(TCP(App([DATA]))SCR

TCP/IP中各類協議服務工做的層級:


TCP和UDP

TCP:
工做在傳輸層
面向鏈接協議 :先創建鏈接,再傳輸數據(三次握手和四次揮手)
全雙工協議
半關閉 :一方關閉,變成了單工傳輸
錯誤檢查
將數據打包成段,排序
確認機制
數據恢復,重傳
流量控制,滑動窗口
擁塞控制,慢啓動和擁塞避免算法

- 端口號指定的是輸層TCP上一層工做的應用層協議或者服務的端口,好比ssh服務端口號就是22,ftp爲21,telnet 23,smtp 25,pop110.
- 不一樣的軟件和服務用不一樣的端口號,基於網絡通信的軟件分爲服務器和客戶端軟件,但這些服務器軟件的端口都是固定端口,客戶端的端口是隨機分配的。經過源端口和目標端口就確認了應用程序惟一標識。

TCP協議PORT
傳輸層經過port號,肯定應用層協議
Port number:
tcp:傳輸控制協議,面向鏈接的協議;通訊前須要創建虛擬鏈路;結束後拆除鏈路
0-65535
udp:User Datagram Protocol,無鏈接的協議
0-65535
IANA:互聯網數字分配機構(負責域名,數字資源,協議分配)
- 0-1023:系統端口或特權端口(僅管理員可用) ,衆所周知,永久的分配給固定的
系統應用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
- 1024-49151:用戶端口或註冊端口,但要求並不嚴格,分配給程序註冊爲某應用使用,1433/tcp(SqlServer), 1521/tcp(oracle),3306/tcp(mysql),11211/tcp/udp
- (memcached)
49152-65535:動態端口或私有端口,客戶端程序隨機使用的端口
其範圍的定義:/proc/sys/net/ipv4/ip_local_port_range
- Linux內私有端口(動態端口)範圍(某些狀況下能夠更改它以避免端口數量不夠用):/proc/sys/net/ipv4/ip_local_port_range
- 查看已經被使用的固定端口號:/etc/services
TCP三次握手

TCP四次揮手

sync半鏈接和accept全鏈接隊列
ss –lnt
/proc/sys/net/ipv4/tcp_max_syn_backlog 未完成鏈接隊列大小,建議調整大小爲1024以上
/proc/sys/net/core/somaxconn 完成鏈接隊列大小,建議調整大小爲1024以上
- 以上兩個值能夠直接用 echo 1024 > 重定向的方式修改,可是沒法永久保存,所以要修改相關配置文件
- 它們的數字決定了服務器主機在同一時間內創建半連接(1次握手)和全鏈接(3次握手)最大的客戶端個數。也就是限制了連接的客戶端最大數量。
- 這個半連接狀態容易受到**致使沒法讓其餘的客戶端訪問(只發送創建連接的請求,可是不回覆SYN=1的信息給服務器端),被稱爲半連接***。
TCP服務擁塞控制和超時重傳相關文件
當前所使用的擁塞控制算法 :/proc/sys/net/ipv4/tcp_congestion_control
與TCP超時重傳相關的兩個內核參數:
/proc/sys/net/ipv4/tcp_retries1,指定在底層IP接管以前TCP最少執行的重傳次數,默認值是3
/proc/sys/net/ipv4/tcp_retries2,指定鏈接放棄前TCP最多能夠執行的重傳次數,默認值15(通常對應13~30min)
UDP協議
工做在傳輸層
提供不可靠的網絡訪問
非面向鏈接協議
有限的錯誤檢查
傳輸性能高
無數據恢復特性
Internet層:

icmp協議:網絡控制信息協議
APR協議:地址解析服務協議
它的做用就是找到邏輯上的IP地址對應的網絡中真正主機的位置,也就是其對應的MAC地址。
若是目標地址IP與本機就在同一網段,則當數據傳出到這一個IP地址時,好比說ping IP地址,它就會對IP其進行解析,找出物理上的MAC地址,而後將數據包向其轉發
若是目標IP和本機不在一個網段以內,則會向路由器的端口轉發,由於在ARP表中,這個IP地址對應的MAC就是路由器鏈接到此網段的端口,至於後面路由器怎麼找到這個IP對應的真正的主機的地址,就是路由器和路由表中的工做了。它會一級一級通過路由器轉發,直到最終找到目標IP地址的網段和其真正的MAC地址主機,將數據轉發給目標
實現過程(ARP表的創建):
- 當知道目標的IP地址以後,第一次發送數據便以廣播方式在當前網段內發送消息,詢問目標IP地址的以太網協議(MAC)地址(注意在以太網協議中,這個廣播信息幀的目標MAC地址也就是12個F,源地址就是本機的MAC地址)
- 當目標IP地址主機收到這個廣播消息以後,他就會知道這條消息的源IP地址以及源MAC地址(由於在廣播信息中寫的有源MAC地址和IP地址,但須要注意MAC地址是二層以太網協議的報頭中的,IP地址是第三層ARP協議中報頭中的,其中IP地址包括本機的IP還包括目標主機的IP。這樣目標IP主機收到廣播纔會處理這條信息,其餘IP的發現不是發給本機的就會忽略掉這個廣播。
- 注意這些信息存在數據中不一樣報頭中,並存在兩個相互通信的主機內存中的。而以前說的MAC端口地址是存在交換機中的,不要搞混淆了,它們不是同一個機器
- 當目標IP主機收到發給本身的詢問的廣播信息後,它會處理並以單播方式回覆發送廣播的這個IP和MAC地址的主機一條信息,(其中在以太網協議中的報頭中就會包含本機的MAC地址)這樣雙方就都知道了對方的IP和MAC對應關係,就會把它各自存入本身內存的ARP表中,下次再進行相互訪問時就不用再發送廣播而是直接單播方式進行傳輸數據了。

- 注意:當網絡服務重啓(systemctl restart network)以後便會清空ARP表,以後便會再次從新進行上述過程進行對比尋找。
- 通過測試抓包信息可知,第一次雙方通信創建ARP表的時候,數據幀的內容不多。
- 發送廣播方的幀內data區域:包含着發送ARP廣播的源主機IP和目標IP,注意MAC在以太網幀報頭處,目標MAC爲12個f,源MAC就是本機MAC,type指定就是ARP(0806)
- 回覆方數據data區域內:它本機的IP和對方的IP 一樣的在以太網幀報頭處,這時候已知了目標MAC(發送時源MAC),所以源MAC和目標MAC都會寫上。

跨網段(路由器隔離)的APR實現(APR表的創建)過程:
注意:ARP分段廣播,路由表優先級高於ARP協議,(每次先判斷路由表,再決定是ARP廣播尋找網關mac仍是尋找目標主機mac)
- 假如發送方和目標方主機之間隔着1個或者多個路由,則發送數據時(已知本機IP和目標IP),首先在本機網段的路由這一側,發送數據時會先經過ARP廣播找到本機網段的網關對應的MAC,也就是路由器接到這個網段接口IP對應的MAC(這裏隱含了一個提早判斷,就是主機已經判斷過目標IP和本機IP不在一個網段內,所以它就會用廣播尋找本機所在網段的路由網關IP接口的MAC地址。從這裏也能夠看出路由尋址是要高於APR協議的,先判斷路由再判斷ARP),而後本機就會將數據包轉給網關到路由
- 轉給第一級路由以後,路由器就會根據這個路由的路由表內的信息判斷要將這個數據包從此路由的哪個端口往外轉發,並轉到下一個路由的哪個網關。在這第二個網段轉發的過程當中也是經過APR協議找到下一個網關對應的MAC,而後將數據包轉發給下一個網關。
注意路由表一行內包含 1.目標網段(2.包括子網掩碼),3.能發送到目標網段的出口端口 4.能轉發給目標網段的下一個路由器的網關入口
固然路由這是在網絡層說的,源IP和目標IP都仍然爲最初的IP保持不變(由於這些IP地址並不在以太網幀報頭內而是在網絡層IP協議的報頭數據內,路由器去掉以太網幀報頭以後就會根據網絡層報頭內的目標IP地址進行路由表匹配,並再次以太網封裝轉發出去,不改變IP協議中的內容,除非是有NAT功能的路由)但在數據鏈路層來講,以太網幀報頭內就是指從這個路由器轉出的端口MAC到下個路由器接入的網關MAC,所以每通過一個路由器都會進行封裝拆封的過程會不斷改變。
- 第2個步驟重複進行直到數據轉發到與目標IP網段相連的路由器,此時路由器就會把數據發送到目標IP的主機上。
注意直接與路由器相連的網段 其目標網段和子網掩碼就是相連的這個網段和子網掩碼沒必要多說,但注意其網關爲0.0.0.0 ,全爲0的IP地址 0.0.0.0表明着IP地址不明,也能夠認爲是它表明了全部的IP地址。
- 若是它在路由表中的目標網段中,意味着這一條路由表項是默認路由條目,全部找不到匹配項的未知IP的數據都會往這一項寫的網關上轉發
- 而若是這全爲0的地址寫在路由表項網關一欄上,一種狀況是它表明這一路由表項對應的轉出端口就在這一項前面所寫的目標網段上,也就至關因而路由器直連到前面寫的目標網段。此時這個路由表就會從這個轉出端口進行ARP廣播來尋找目標IP的MAC地址。(注意在這裏目標的IP地址和這一項對應的端口的IP地址在同一個網段)
- 而另外一種狀況就此路由表項所寫的目標網段和這個端口不在同一個網段,可是網關仍然寫的都是0.0.0.0(正常狀況下不在同一網段要寫下一個路由的網關入口進行轉發的);這種狀況下就是爲了讓這個端口或者主機的IP所在的網段可以與這個路由表項所寫的目標網段進行相互通訊,(注意它倆不在一個網段,和第一種狀況不一樣,雖然也是直連)其實際效果就是讓這個端口連通目標網段的IP時,進行ARP廣播,直接尋找MAC地址進行相互通信。實際應用中就是爲了讓交換機上不一樣VLAN的網段之間可以進行通信但不須要增長路由器,只須要在路由表中添加入本機想要通信的目標網段,把網關改成所有爲0,端口寫上,則它在和目標網段內IP進行通信時,就會進行APR廣播直接尋找MAC,由於交換機就是工做在數據鏈路層用MAC來尋找機器,所以即可不一樣網段的VLAN之間進行相互通信了。
- 還有一種狀況就是若是目標網段和網關所有都寫0.0.0.0 則這個路由表無論數據要轉發到任何IP地址,它都會直接在這一項對應的端口進行ARP廣播來尋找目標IP的MAC,與這個端口物理上相連的(經過交換機,集線器等,但不能經過路由器,除非恰好要尋找的目標IP就是路由器接到這個物理鏈接的網絡中的端口IP,)全部不論任何IP的機器均可以相互通信了。
linux中可用arp 命令查看arp表,或者 ip neigh
-n 不顯示名稱只顯示數字IP
ARP欺騙
- 在交換機同一個網段內,假裝本身爲某個接收方的IP的MAC地址,分別***發送方和接收方,讓發送方誤認爲本身是接收方,而讓接收方誤認爲本身是發送方。進而這兩個主機之間的通信便會中間途徑ARP欺騙的機器,在通過這個機器轉發到真正的接收和發送方。所以數據信息就被竊聽甚至能被修改。
- 在一個網段內假裝本身爲路由器網關的IP以及MAC,這樣這個網段內全部的聯通外網的數據都會通過本身,而後再進行轉發(或者不轉發形成斷網),這樣就可以盜取密碼等敏感信息。
- 由於ARP每次重啓網絡服務都會從新刷新再次進行動態學習,因此很不安全。所以爲了防止ARP欺騙,比較簡單的方法就是將網關以及與本機重要連通方的IP和MAC綁定爲靜態地址,並讓它重啓不丟失便可(linux中開機自動運行某個腳本進行環境設置,注意重啓網絡服務也得重寫別忘了,windows中自帶命令開機不丟失),這樣它就不會再被ARP欺騙(靜態優先級比動態高)。
反向ARP
發送方主機發送數據的時候不知道對方IP, 須要向DHCP服務器申請IP地址。發送一條ARP廣播,其中只包含本機MAC,不含本機IP以及對方IP和MAC,當具備DHCP服務功能的服務器收到廣播後回覆並分配給它一個IP,並告知對方本身的IP以及MAC。(
反向ARP(MAC解析爲IP):發送方只有發送方MAC,回覆方4個信息都包含,有效信息爲兩個IP和回覆方的MAC;
ARP(ip解析爲MAC):發送方有MAC,本機和對方兩個IP,回覆方雖然兩個MAC,兩個IP都包含,可是有效信息只有回覆方的MAC。
網吧中的無盤電腦就是這樣,開機直接申請IP,DHCP服務器查詢提早配置好的IP和MAC對應表,匹配MAC給啓動的電腦分配一個固定的IP,而後將此電腦將遠程硬盤中的系統載入內存啓動。
附加知識點:
centos7 能夠tab按鍵自動補全命令,centos6中不可,但能夠裝一個軟件包名字叫作bash-completion,在yum的epel源裏面
IP協議
運行於 OSI 網絡層
面向無鏈接的協議
獨立處理數據包
分層編址
盡力而爲傳輸
無數據恢復功能
IP地址
它們可惟一標識 IP 網絡中的每臺設備
每臺主機(計算機、網絡設備、外圍設備)必須具備惟一的地址
IP地址由兩部分組成
- 網絡ID:
標識網絡
每一個網段分配一個網絡ID ,最後的主機IP爲均爲0(主機位所有爲1表明廣播信息,注意這個IP廣播和ARP廣播的區別)
- 主機 ID:
標識單個主機
由組織分配給各設備
早期分爲A,B,C,D,E等類,用於判斷大網核心網,如今的無類地址用子網掩碼來判斷IP的網段了。
特殊的:
- 0.0.0.0
0.0.0.0不是一個真正意義上的IP地址。它表示全部不清楚的主機和目的網絡
- 255.255.255.255
限制廣播地址。對本機來講,這個地址指本網段內(同一廣播域)的全部主機
- 127.0.0.1~127.255.255.254
本機迴環地址,主要用於測試。在傳輸介質上永遠不該該出現目的地址爲「127.0.0.1」 的數據包
- 224.0.0.0到239.255.255.255
組播地址,224.0.0.1特指全部主機,224.0.0.2特指全部路由器。224.0.0.5指OSPF路由器,地址多用於一些特定的程序以及多媒體程序
- 169.254.x.x
若是Windows主機使用了DHCP自動分配IP地址,而又沒法從DHCP服務器獲取地址,系統會爲主機分配這樣地址
C私網地址:192.168.0.0-192.168.255.0
B私網地址:172.16.0.0-172.31.0.0
A私網地址: 10.0.0.0-10.255.255.255
主機ID爲全爲0表明此網段,全爲1表明此網段廣播,須要剔除網段中這兩個IP
- 注意私有地址只在局域網中,在公網中顯示的都是公有地址,會有一個轉換過程。
A類:1-126
0 000 0000 - 0 111 1111: 1-127
網絡數:126, 127
每一個網絡中的主機數:2^24-2
默認子網掩碼:255.0.0.0
私網地址:10.0.0.0
B類:128-191
10 00 0000 - 10 11 1111:128-191
網絡數:2^14
每一個網絡中的主機數:2^16-2
默認子網掩碼:255.255.0.0
私網地址:172.16.0.0-172.31.0.0
C類:192-223
110 0 0000 - 110 1 1111: 192-223
網絡數:2^21
每一個網絡中的主機數:2^8-2
默認子網掩碼:255.255.255.0
私網地址:192.168.0.0-192.168.255.0
D類:組播
1110 0000 - 1110 1111: 224-239
E類:保留未使用
240-255
子網掩碼
- 子網掩碼判斷對方一個IP是否和本身在同一網段的時候,本機網段就是子網掩碼位和IP位想與便可,而判斷對方的IP是否和本身在同一個網段,要拿本身的子網掩碼來與對方的IP,看其獲得的結果是否和本身的網段相同來判斷。
- 子網掩碼前面的位必須爲1,中間不能有0而後再出現1這種狀況
- 複習知識:路由協議高於ARP協議,ARP廣播以前就須要先判斷目標IP是否和本身在一個網段,在一個網段直接ARP廣播找MAC,不在一個網段則去找路由網關MAC(這也就解釋了爲什麼路由表的網關設置爲0.0.0.0以後,當尋找這一項前面對應寫的目標網段內的IP地址時,ARP就直接發送廣播來找想要鏈接的IP地址的MAC了。由於0.0.0.0就表明任何地址或者說未知地址,或者簡單一點就把本身當作路由,若是網關是個特定的IP,確定是要用ARP廣播尋找這個特定IP的MAC的,發送廣播的時候目標地址寫的就是這個網關特定IP地址,可是由於寫是0.0.0.0,未知,因此ARP發送廣播的時候目標地址就直接寫了最初想要鏈接的主機的IP了,若是說目標地址和本機地址不在一個網段,也會讓它強行廣播直接尋找,這樣在交換機上物理鏈接的不一樣網段就能互通了。)
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255
劃分子網和合並超網
- 劃分子網:將一個大網(主機ID位多)劃分紅多個小網(主機ID位數少),原有網絡ID位數不變,新的小網的網絡ID變多,主機ID位變少,原有網絡ID位向主機ID借位。
- 合併超網:恰好與上一過程相反。
一些計算方法公式
- 網絡中主機數=2^主機ID位-2=2^(32-網絡ID位)-2
- 網絡數=2^可變網絡ID位
- 網絡ID=IP與netmask
- 無類地址CIDR表示法:IP/網絡ID位數, CIDR表示法,無類域間路由
- 劃分子網數=2^網絡ID向主機ID借位的位數(1分爲兩個子網,2分爲4子網,以此類推,但別忘了修改子網掩碼)
- 劃分超網:合併多個小網成爲一個大網,主機ID向網絡ID借位
路由詳細介紹
跨網絡通訊:路由
路由分類(這裏指的是路由表內的每一條信息,不是路由器):
主機路由 :子網掩碼全爲1,會形成路由表很龐大,不經常使用
網絡路由 :網段路由,最經常使用的路由表方式,到達網段內以後進行ARP廣播查找某個IP對應主機
默認路由 :找不到目標網絡時便會向默認路由記錄的網關轉發,一般用來指定局域網上的主機的網關(主機上也有路由表),注意不能配置在有多條線路上的路由器上面。
優先級:精度越高,優先級越高(主機->網段->默認)
- 注意:不只僅是路由器有路由表,每一個主機都有路由表,路由表很是重要,它決定了數據包通過網絡要發出去時所走的路徑,若是缺失路由表,則與它相關的數據包將直接沒法發送出去。
基本網絡配置1:
將Linux主機接入到網絡,須要配置網絡相關設置,通常包括以下內容:
- 主機名
- IP/netmask
- 路由:默認網關
- DNS服務器:
主DNS服務器
次DNS服務器
第三DNS服務器
主機名知識點1:
6的network:
04:07[root@Centos6 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Centos6.10Test
7的hostname文件:
10:35[root@centos7 /etc/]# cat /etc/hostname
centos7.6test
接口命名方式:CentOS 6
以太網:eth[0,1,2,...]
ppp:ppp[0,1,2,...]
網絡接口識別並命名相關的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看網卡:
dmesg |grep –i eth
ethtool -i eth0
卸載網卡驅動:
modprobe -r e1000
rmmod e1000
裝載網卡驅動:
modprobe e1000
- 附加知識點:在centos中,若是直接複製一個虛擬機的文件而後打開這個虛擬機,則有些配置會和之前的虛擬機重複,尤爲是有固定ID的設備。
好比說網卡的MAC地址就會和網卡名綁定在一塊兒,致使新複製的這個虛擬機網卡名不會從0開始。這時候要刪除掉這個綁定的信息,它在 /etc/udev/rule.d/這個文件夾中,其中網卡對應的就是70-persistent-net.rules ,刪除掉或者修改對應的網卡名和mac地址便可(Centos6中有這個文件,7中貌似沒有)。
以後想要重啓這個設備,須要用模塊控制命令卸載掉網卡驅動,而後再從新啓動便可:
ethtool -i eth0 :查看網卡驅動
rmmod e1000 :卸載網卡驅動模塊
modprobe e1000:從新加載驅動模塊
這樣就能夠把名字和MAC的對應關係從新修改了。
基本網絡配置2:
IP、 MASK、 GW、DNS相關配置文件:/etc/sysconfig/networkscripts/ifcfg-IFACE
- 路由相關的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
/etc/sysconfig/network-scripts/ifcfg-IFACE:說明參考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
主機名和本地解析器
- 配置當前主機的主機名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
- 解析器執行正向和逆向查詢
/etc/hosts
本地主機名數據庫和IP地址的映像
對小型獨立網絡有用
一般,在使用DNS前檢查
getent hosts 查看/etc/hosts 內容
dns名字解析
- /etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search magedu.com
- /etc/nsswitch.conf
與/etc/hosts相比優先於DNS
- 正向解析:FQDN-->IP
dig -t A FQDN
host -t A FQDN
- 反向解析:IP-->FQDN
dig -x IP
host -t PTR IP
路由器配置文件(詳細查看官方網站文檔介紹)
- /etc/sysconfig/network-scripts/route-IFACE
注意:需service network restart生效
兩種風格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定義一條路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
例如:
格式: default via 192.168.1.1 dev interface
實例: 10.10.10.0/24 via 192.168.1.1 [dev interface]
- 注意這個配置文件只有DHCP沒有配置默認網關,以及沒有在/etc/sysconfig/network文件中全局設置網關的狀況下才會有必要配置
網卡別名(只是暫時生效,重啓服務丟失)
- 對虛擬主機有用
- 將多個IP地址綁定到一個NIC上
eth0:1 、 eth0:二、 eth0:3
- ifconfig命令:
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
- ip命令:
ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.1/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
設備別名(永久生效)
- 爲每一個設備別名生成獨立的接口配置文件
關閉NetworkManager服務
ifcfg-ethX:xxx
別名中的,必須使用靜態聯網
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes
- 注意:service network restart 生效
- 參考:/usr/share/doc/initscripts-*/sysconfig.txt
ifcfg配置文件相關1
- 配置文件地址在 /etc/sysconfig/network-scripts/ 文件夾中,其中配置文件都是以ifcfg-開頭的,開頭必須爲ifcfg-,然後面的內容寫什麼均可以,不過最好和網卡名(設備名)改成一致。修改它就能夠永久修改網卡配置,重啓網絡服務就是按照裏面所寫的內容來進行網卡設置的。
- 注意配置的時候centos6中最好把 service NetworkManager stop (就是圖形界面任務欄的網絡設置功能和那個圖標顯示),它和network有時會有衝突。
- cat /etc/resolv.conf 能夠查看DNS服務是否真正生效,DNS的配置寫入的位置仍然在ifcfg文件中。注意想要用外網的DNS服務,必須路由網關先配置好能鏈接到外網才能夠。
- 配置完成以後用 service network restart 或 systemctl restart network 重啓一下網絡服務使其生效
- 經測試得知,配置文件最好把DEVICE=eth0:2等等寫在第一行,這樣載入的時候纔會加載此配置。
- 配置文件只要有多餘的,重啓網絡服務時找不到的設備,就會報錯(centos7中),所以刪除網卡後最好用bakifcfg的方式重命名它。
- 虛擬機中的配置文件中UUID和HWADDR能夠儘可能不要寫,(物理機能夠寫上HWADDR)由於有時候會衝突報錯,上面的兩個通常狀況下都是固定的不會改變,但能夠用MACADDR= 的方式系統中虛擬修改MAC地址。
- 重要注意點:同時配置動態和靜態地址一種是分紅兩個配置文件,以別名的方式。還有一種方法就是在一個ifcfg文件中,把bootproto寫爲dhcp,可是同時指定給它一個靜態的地址,也能同時配置兩個地址。
- 注意默認的DEFROUTE就是yes狀態,若是不寫上GATEWAY這一項的話它會把網卡(或者路由)端口相連的網段的第一個IP做爲網關。
- 從DHCP服務器下載覆蓋DNS域名解析服務的網址到本機上,默認也是開啓狀態(不寫的話)。能夠用cat /etc/resolv.conf 中查看生效的配置。
10. 重要注意:通過測試發現,默認網關的首選項就是DHCP服務器給的默認網關,若是它沒有配默認網關指向它,而後纔是ifcfg文件中的gateway生效(先不考慮全局的/etc/sysconfig/network文件中寫的)。可是若是按照那個在一個ifcfg文件裏即寫入dchp獲取,又寫入靜態地址的方式的話,此時在這個文件里加上默認網關GATEWAY的地址,則會以這個文件中的手寫的gateway爲首選默認網關項(就是重啓網絡服務時候的0.0.0.0的指向)。用這種方式來避免網絡中各類DHCP服務時致使的默認網關錯誤問題。
- 通過更加詳細的測試和我的分析得知,在上面的過程當中實際上是NetworkManager服務的控制,它會首選得到的DHCP網段的默認網關(若是這個配置文件沒有其餘IP,如上,則就算寫了GATEWAY它也會從DHCP服務器獲取的GATEWAY做爲首選)而後就是上面的狀況做爲次選(我的分析它應該是爲了保持網關和IP的網段對應,因此寫了靜態IP的狀況下就會把默認網關指向手寫的GATEWAY,可是若是此時不寫GATEWAY,仍是會將DHCP的網關做爲默認網關)。
- 若是關閉這個服務,則手寫的GATEWAY將會直接生效,變爲首選項了。同時通過測試得知,關閉這個服務以後,若是有多個ifcfg都是DEFROUTE爲yes狀態(雖然此項爲yes,但沒有寫GATEWAY的ifcfg文件就會忽略了)它會根據寫了GATEWAY的最後一個ifcfg文件(ls排序的順序)來做爲最後生效的默認網關。
- 同時若是關了它以後,多個針對同一個網卡eth配置文件將會按照ls順序逐個生效(沒關閉以前若是有多個針對同一個網卡也就是DEVICE相同的配置文件,只會有一個生效,可用nmcli更換配置。詳細查看nmcli中解釋。而關了它以後在這裏都會生效,至關於直接ip addr add了不少IP和配置在一個網卡上並且沒有用別名的方式,ifconfig看不到這個IP地址的配置)
- 通過測試,/etc/sysconfig/network中的GATEWAY=行,會直接在路由表中加上一行默認網關項。詳情查看官方解釋(包括DHCP,Networkmanager等)。
DEVICE=eth0 :設備名,真正的設備名字
NAME="Wired connection 1" :鏈接名,設備在主機上顯示的鏈接名字以及nmcli中顯示的鏈接名
IPADDR=192.168.36.102 :網卡IP地址
PREFIX=24 或者 NETMASK=255.255.255.0
BOOTPROTO=dhcp |static |none :IP地址分配方式
ONBOOT=yes :開機是否啓動
GATEWAY=192.168.36.1 :默認網關 ,網關必須和IP地址在同一網段,(或者說全爲0,那就是另外的故事了,網關也能夠暫時不寫)
DNS1=114.114.114.114
DNS2=8.8.8.8
DOMAIN=baidu.com :用於icmp ping命令中ping後面的後綴補全信息,好比命令ping www,它會在www後面補上DOMAIN中所寫的內容(會自動前面加一個.,所以DOMAIN中最前面不用寫.)
------------------ :下面的能夠不寫,上面的均爲經常使用的,某些也能夠不寫
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
NM_CONTROLLED=yes :NM是NetworkManager的簡寫,此網卡是否接受NM控制;建議CentOS6爲「no」
USERCTL=no :普通用戶是否可控制此設備
PEERDNS=yes :若是BOOTPROTO的值爲「dhcp」 ,YES將容許dhcp server分配的dns服務器信息直接覆蓋至/etc/resolv.conf文件,NO不容許修改resolv.conf
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
UUID=218ac8bc-95f0-33ee-845f-27c3a473d629
HWADDR=00:0C:29:DA:3B:31 :設備mac地址,出廠固定不能改
AUTOCONNECT_PRIORITY=-999
MACADDR=66:66:66:66:66:66 :系統上虛擬修改mac地址,防止真實MAC地址泄露隱私等信息(wifi探針)
路由表相關和配置
路由管理命令route
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
例如主機目標:192.168.1.3 網關:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
例如網段目標:192.168.0.0 網關:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默認路由,網關:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1
刪除: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
路由表:
目標網絡(網段) :目標網絡IP
子網掩碼:注意子網掩碼對應的是目標網絡IP的,不要當作是網關的子網掩碼了
接口:指明瞭從本設備的哪個接口轉發出這條數據包,就能到達目標網絡(接口用IP地址表示,不過若是是一個主機則接口就是它的網卡這個設備和它得到的IP,接口直接指向這個網卡設備便可不用寫IP,除非這個網卡有多個接口則須要指明IP。若是是路由器的話則就直接指向接口的IP了)
網關:指明瞭將數據包轉發到下一個設備(或路由)哪一個接口(ip),能到達目標網絡(網關口用IP地址表示)
注意點:
- 注意路由表中只有IP(包括子網掩碼等),不含有mac地址,由於它工做在第三層網絡層。
- 路由器(或者主機)直接相連的網段無需配置,每一個直接相連網段的此路由表項:
目標網絡:就是這個網段的網絡地址
接口:就是在這個網段分配的IP(主機的話直接指向網卡設備)
網關:爲0.0.0.0(爲什麼全爲0詳細更多分析看上面ARP中)
- linux中配置路由以及網絡服務的時候注意防火牆和selinux的設置,簡單來講能夠直接關閉,複習點:
- 關閉防火牆
centos7:
systemctl disable firewalld(.service)
systemctl stop firewalld(.service)
centos6(和7相互對應):
chkconfig iptables off
service iptables stop
- 關閉selinux
vim /etc/selinux/config
SELINUX=enforcing 改成disabled
或者 sed -r -i "s/^(SELINUX=).*/\1disabled/" /etc/selinux/config
注意以後必須從新啓動reboot ,才能關掉selinux,getenforce能夠查看selinux是否真的關閉
- linux機器當作路由其使用須要開啓路由轉發功能,默認是關閉,修改/proc/sys/net/ipv4/ip_forward 爲1便可
- 使用以下兩種方法都可臨時開啓核心轉發,當即生效,可是重啓網絡配置後會失效。
方法一:echo 1 > /proc/sys/net/ipv4/ip_forward 方法二:sysctl -w net.ipv4.ip_forward=1
- 使用以下方法開啓核心轉發功能,重啓網絡服務後永久生效。
配置/etc/sysctl.conf文件(centos7中配置/usr/lib/sysctl.d/00-system.conf文件),在配置文件中將net.ipv4.ip_forward設置爲1
- "traceroute 目標IP" 命令 能夠查看路由通過的路由器信息,或者用"mtr 目標" 命令更加詳細和高速。
- 注意了局域網內的主機的路由表能夠添加默認路由(至關於它只有一個接口鏈接了一個網段,默認路由添加到這一網段的路由器網關上便可)
- 而且處於邊緣網段(一端鏈接一個局域網,另外一端鏈接外網)的路由器也能夠添加默認路由到連接外網的次路由器接口和下一個路由器的網關(與這個路由直接相連的這兩個網段的路由表信息會自動添加,至關於這個路由器已知這兩個直連的網段,除了這兩個直連網段其餘任何IP都往下一個路由器網關轉發到外網,路由表中有3條信息)
- 可是隻要是路由器(有兩個線路以上)最好不要添加默認路由。否則全部的未知目的IP地址都只能走這條默認路由線路了。
- 路由器添加路由表的時候,即便不指定下一個路由的網關的端口,它也能本身判斷是從哪一個端口轉發出去,由於下一個路由的網關必然和要轉出去的端口在一個網段裏面。
- 路由表目標網段能夠寫成包含的關係,也就是路由表中的目標網段包含了許多子網,它既能夠寫成路由表中的目標網段和實際上要尋找的目標網段寫如出一轍,也能夠路由表上寫的的目標網段(網絡ID少,主機多)
包含着真正要尋找的目標網段(網絡ID多,主機少),這樣的話這個路由器下面還能夠再接路由器,由路由器再分子網。
- Centos7中network重啓失敗常常出現,有多種緣由,其中常見LSB啓動失敗的緣由中,即便全部配置文件沒有錯誤,還有一種多是網卡沒有插上線,也就是說vmware中的線沒有插上 或者 說用命令將 ip link set 網卡 down 了。
centos7中只要有一個網卡沒有啓用,重啓網絡服務就可能會失敗(必定要檢查全部配置文件的HDADDR和UUID 以及DEVICE是否寫錯)。
注意沒插網線和ip down它倆仍是有區別的,前者是物理上直接沒有鏈接,後者是物理上鍊接了可是網卡禁用了。
但不管這兩種哪種,只要有網卡處於down狀態,則全部配置正確用network start也可能會沒法重啓網絡服務顯示錯誤。
但centos6中即便某些網卡關閉了,重啓network也不會報錯,不過要注意關閉NetworkManager
- 配置路由表的接口必定是本機或者本路由的能轉發到目標網段的出口,而網關必定是與這個接口相連網段的下一個路由器的接口(在同一個網段),而不是下下一個路由器(下下一個路由器則由下一個路由器來進行轉發判斷)。
重要注意
- 路由表中若是把直接相連的網段的這條路由信息(表現爲網關全爲0,目標網段和本機IP在同一個網段內的這條)刪掉,則這個主機在這個網段內除了本機以外的其餘IP地址也將沒法連通了,可見路由表的重要(也可見ARP廣播在路由判斷以後,先判斷網段,再判斷轉發仍是直接ARP廣播)。
- 這裏的沒法聯通指的是別的主機能發送數據給本機(好比APR廣播),本機也能收到,可是本機沒法將數據發送出去(好比沒法回覆ARP廣播請求)(由於不知道應該怎麼發,這條路由刪掉以後,雖然是直連的網段)
- 迴環網段的配置文件爲ifcfg-lo,網段默認爲127.0.0.0/8,能夠更改。注意只要在迴環網段以內的IP,都會被認爲是本機IP,均可以連通。
ifcfg配置文件相關2
Centos7:
nmcli命令(注意它是用NetworkManager服務中的命令)
此命令在7中能夠對網卡進行各類操做,其中比較經常使用的有:
nmcli connection [show]: 顯示網卡的採用的配置以及網卡的UUID
nmcli connection reload: 從新載入配置文件,可讓新寫的ifcfg配置文件在上一命令中顯示出來,用下一命令載入更換網卡的配置
nmcli connetcion up NAME:更換網卡的配置,注意這個NAME不是DEVICE名,而是ifcfg配置文件中的NAME項寫的名字
- 7和6上下對應注意點:
- 7中從新添加一項ifcfg配置文件名指定設備名以後,保存退出它並不會直接生效,須要用NetworkManager服務啓動後提供的nmcli命令載入此配置纔會生效。
Centos6:
- 7和6上下對應注意點:
- 6中從新添加一項ifcfg配置文件名指定設備名以後,保存退出它變直接生效了,由於NetworkManager服務啓動後會直接讓這個新建立的ifcfg配置文件生效。可用service NetworkManager status 查看它的運行狀態。 若是6中沒有裝這個服務,則必須用service network restart命令重啓網絡服務才能生效新寫的配置文件。通常6中會把manager服務關閉或者直接不安裝它,由於會和network服務衝突。
網絡不通錯誤簡單分析:
- 網絡不可到達:沒有路由沒法鏈接到未知的網段的網關,會顯示如此
- 名字或者服務未知(6中爲未知的主機):由於鏈接不到外網,DNS服務沒法使用,沒法解析域名IP地址,會顯示如此
- 同網段內的IP 目標主機不可到達:說明同網段內沒有這個IP地址的主機(ARP廣播沒有迴應)或者說對方收到了可是沒有回覆(或者說回覆了沒有傳回來);總之就是ping包發送出去了但沒有接收回來。
- 不一樣網段IP 目標主機不可到達:通過路由器轉發以後,若是轉發到目標網段內則變成,第3項相同的結果,若是沒有轉發到目標網段內,說明路由器中的路由表沒法找到目標網段,信息不完整。
- (此處再也不區分是否處於相同網段,參考3和4) 目標端口不可達:說明對方的防火牆拒絕了本機的ping命令請求(REJECT) {iptables -A INPUT -s IP地址 -j REJECT}
- ping了以後沒反應 : 多是對方收到了可是不迴應(防火牆DROP),也多是對方根本沒收到,這兩種狀況都是同樣的顯示這種狀況 {iptables -A INPUT -s IP地址 -j DROP}
- 可用tcpdump -i INTERFACE(端口) -nn(數字形式) icmp(只抓ping命令包) 命令查看一下包裹信息來判斷
- 附加,其中icmp處能夠寫各類協議來只查看此協議的包括信息,好比arp tcp ip udp icmp等等,可是不能查看應用服務如sshd
17:13[root@centos7 /etc/sysconfig/network-scripts]# ip link set eth1 down
17:13[root@centos7 /etc/sysconfig/network-scripts]# ping 1.1.1.1
connect: Network is unreachable
17:16[root@centos7 /etc/sysconfig/network-scripts]# ping www.baidu.com
ping: www.baidu.com: Name or service not known
17:19[root@centos7 /etc/sysconfig/network-scripts]# ping 192.168.36.200
PING 192.168.36.200 (192.168.36.200) 56(84) bytes of data.
From 192.168.36.102 icmp_seq=1 Destination Host Unreachable
From 192.168.36.102 icmp_seq=2 Destination Host Unreachable
From 192.168.36.102 icmp_seq=3 Destination Host Unreachable
From 192.168.36.102 icmp_seq=4 Destination Host Unreachable
17:19[root@centos7 /etc/sysconfig/network-scripts]# ping 192.168.36.200
PING 192.168.36.200 (192.168.36.200) 56(84) bytes of data.
From 192.168.36.102 icmp_seq=1 Destination Port Unreachable
From 192.168.36.102 icmp_seq=2 Destination Port Unreachable
From 192.168.36.102 icmp_seq=3 Destination Port Unreachable
From 192.168.36.102 icmp_seq=4 Destination Port Unreachable
ifcfg配置文件相關3(包括相關命令等):
ifconfig:比較老,沒有維護,過期的命令(默認顯示沒被禁用的網卡)
ifconfig [interface] :顯示某個特定網卡信息
ifconfig -a :顯示全部網卡,包括啓用的和禁用的
ifconfig IFACE [up|down] :禁用網卡
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up] :臨時修改IFACE網卡的IP地址,重啓網絡服務會丟失,下同
ifconfig IFACE IP netmask NETMASK
ifconfig IFACE:name IP/netmask :臨時增長別名和網路IP地址(一個網卡多地址)
注意:上面的配置操做當即生效,重啓網絡服務失效,想要永久生效,寫入文件中(配置一個網卡的多個地址,能夠直接cp 原配置文件更名而後寫入信息便可,其中DEVICE要和網卡別名同樣)
啓用混雜模式:[-]promisc :抓包用,不過抓包工具會自動啓用此功能
ifconfig:
ifconfig -a
ifconfig eth1 up|down
ifup ech1 | ifdown eth1
ifconfig eth1 172.22.66.66/16 :修改
ifconfig eth1:2 10.10.10.10/24 :增添
ifconfig eth1:3 10.10.10.10/24
ifconfig eth1:aa 20.20.20.20/16
ip link set eth0 up | down
ip addr add 2.2.2.2/24 dev eth0 :此方法增長IP,用ifconfig命令沒法查看
ip addr add 3.3.3.3/16 dev eth0 lable eth0:2 :就是以前的別名方式
ip addr del 2.2.2.2/24 dev eth0
ip addr flush dev eth0 : eth0 的IP地址所有清空
(netstat | ss) -nta -ntl -ntp -ntupa
ip 命令:新的命令
- ip - show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
- ip link - network device configuration
set dev|IFACE
可設置屬性:
up and down:激活或禁用指定接口
- 也可直接用 ifup/ifdown IFACE 的形式禁用啓用網卡
show [dev|IFACE]:指定接口
[up]:僅顯示處於激活狀態的接口
- ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址時指明網卡別名
[scope {global|link|host}]:指明做用域
global: 全局可用
link: 僅連接可用
host: 本機可用
[broadcast ADDRESS]:指明廣播地址
- ip address show - look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
- ip addr flush 使用格式同show
- 一些例子:
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
- ip route - routing table management
- 添加路由:ip route add
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主機路由:IP
網絡路由:NETWORK/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1
- 添加網關:ip route add default via GW dev IFACE
ip route add default via 172.16.0.1
- 刪除路由:ip route del TARGET
- 顯示路由:ip route show|list
- 清空路由表:ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0
路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
目標:192.168.1.3 網關:172.16.0.1 接口(可不寫,會自動判斷,標準仍是寫上) eth0
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
目標:192.168.0.0 網關:172.16.0.1 接口 eth0
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默認路由,網關:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1
刪除: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
配置動態路由 :各類算法自動獲取路由信息,大型網絡用
- 經過守護進程獲取動態路由
安裝quagga包
支持多種路由協議:RIP、 OSPF和BGP ,簡單來講就是各類路由相互學習路由表信息
命令vtysh配置
netstat命令:過期命令,用ss效率更高,不少選項通用
- 顯示網絡鏈接(默認顯示創建鏈接的鏈接,可用-a -l選項選擇其它):
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-t: tcp協議相關
-u: udp協議相關
-w: raw socket相關
-l: 處於監聽狀態
-a: 全部狀態
-n: 以數字顯示IP和端口
-e:擴展格式
-p: 顯示相關進程(應用程序)及PID
- 經常使用組合:
-tan, -uan, -tnl, -unl
- 顯示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 顯示內核路由表
-n: 數字格式
- 顯示接口統計數據:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
netstat -i
netstat –I=IFACE 或者 netstat -IIFACE (注意後面的寫法要寫在一塊兒中間沒有空格)
ifconfig -s eth0 :等價於上面命令
- 例子:
watch -n 0.5 netstat -i :每0.5秒刷新顯示統計信息來進行觀測
ss命令
- 格式:ss [OPTION]... [FILTER]
- netstat經過遍歷proc來獲取socket信息,ss使用netlink與內核tcp_diag模塊通訊獲取socket信息
- 選項:
-t: tcp協議相關
-u: udp協議相關
-w: 裸套接字相關
-x:unix sock相關
-l: listen狀態的鏈接
-a: 全部
-n: 數字格式
-p: 相關的程序及PID
-e: 擴展的信息
-m:內存用量
-o:計時器信息
- FILTER : [ state TCP-STATE ] [ EXPRESSION ]
- TCP的常見狀態:
tcp finite state machine:
LISTEN: 監聽
ESTABLISHED:已創建的鏈接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
- EXPRESSION:
dport = (目標端口)
sport = (源端口)
示例:’ ( dport = :ssh or sport = :ssh )’
- 經常使用組合:
-tan, -tanl, -tanlp, -uan
- 常見用法
ss -l 顯示本地打開的全部端口
ss -pl 顯示每一個進程具體打開的socket
ss -t -a 顯示全部tcp socket
ss -u -a 顯示全部的UDP Socekt
ss -o state established '( dport = :ssh or sport = :ssh )' 顯示全部已創建的ssh鏈接 ,其中ssh寫成22也可,選項還可再加一個-n,下同
ss -o state established '( dport = :http or sport = :http )' 顯示全部已創建的HTTP鏈接
ss -s 列出當前socket詳細信息
各命令注意點
- ifconfig的來源和信息 rpm -qi net-tools ,從這裏和man幫助中可見命令已通過時,用ip命令代替
17:35[root@centos7 ~]# rpm -qf /sbin/ifconfig
net-tools-2.0-0.24.20131004git.el7.x86_64
-
配置一個網卡的多個地址,得用別名的方式,直接配置可用ifconfig命令,永久配置能夠直接cp 原配置文件更名而後寫入信息便可, 好比 cp ifcfg-eth0 ifcfg-eth0:2 ,(能夠有多個,名字也能夠不是數字)
最關鍵的就是注意配置文件中的DEVICE中後面的名字要和文件名中後面的名字同樣,這裏面就是DEVICE=eth0:2 , 此時IP就能夠本身改了,其餘的某些配置也能夠改了。配置完以後重啓網絡服務便可。
- 注意linux中若是想要即有靜態IP又有動態IP配置在一個網卡上,那麼只有原始的主配置文件能夠配置動態DHCP服務的設置,其它的別名配置文件中不可以配置動態IP,只能靜態IP。不論動態仍是靜態,這些網址均可以同時生效。
- windows中也能夠同時配置動態和靜態,好比家中動態(家中路由器帶有DHCP服務器)和工做中靜態(注意必須是沒有DHCP服務的狀況下,否則動態地址會起做用),但這兩個只能同時生效一個,可自行查看如何配置。
- 多個交換機分別用一根網線(每個都分配一箇中等規模的網段)鏈接到一個總交換機上,而後這個總交換機用一根網線鏈接到一臺服務器上的一個網卡上(支持ftp等服務),給這一個網卡設置多個不一樣的IP地址(分別屬於多個交換機的各個網段),那麼這樣這些不一樣網段的主機都能訪問到這個ftp服務器,不一樣網段之間也能相互鏈接(前提是總交換機上沒有作限制)。這樣就構成了一個簡單的沒有外網連接的局域網
- 此時能夠在服務器上添加更多的物理網卡,好比鏈接到外網,連接到財務辦公網絡。同時也能夠作安全策略讓財務辦公網絡沒法與上面的局域網通訊,可是上面局域網能夠與外網通訊(開啓網卡之間的數據轉發功能)。
- 固然更多狀況下是在主交換機上直接再接上一個路由器鏈接外網,在這個路由器上作配置,而不是把服務器當作路由器來使用。
- 不過在最初的局域網中,能夠看到服務器網卡(能夠看作路由一個接口)用一根網線配置了多個網段的IP地址,並配置了路由表(網關爲0,多個目標網段各不相同,可是用同一接口),這樣的路由設置被稱爲單臂路由(只有一個接口)。
- 緊接着3中狀況分析,不一樣交換機之間的VLAN以前知道能夠用一個TRUNK接口和802.1Q協議來設置相互鏈接成爲一個VLAN(4096個VLAN編號),那麼兩個交換機的VLAN即可以相互通信。可是若是想要把一個交換機上的兩個不一樣的VLAN連接在一塊兒,常識中咱們知道必須經過路由:要麼是三層交換機直接配置路由,要麼是二層交換機再單買一個路由器。
- 這個路由器要麼直接鏈接這個交換機的多個口,分別屬於不一樣vlan不一樣網段,而後設置路由表讓他們之間相互通信。要麼就是能夠配置的二層交換機利用trunk接口,只連接一跟網線到這個路由器上,而後將這個路由器鏈接的接口的IP設置爲多個,屬於這多個不一樣的VLAN,而後路由表內信息設置一下(相似上面的局域網服務器的網卡,其實不用添加,由於設置完多個IP後會自動配置每一個IP,除非像下面那樣只設置一個IP,而後手動配多個路由表項),目標網段就是這些VLAN的網段,網關爲0,接口全爲路由器的這個接口。固然這些每一個VLAN的主機內的路由表也得配置一下網關的信息,指向這個路由表的這個接口(不一樣VLAN的網關就是這個接口在不一樣VLAN之間設置的IP地址)。這樣就把它做爲一個單臂路由來使用了,還能配置安全策略。
- 可是通過分析得知雖然不一樣vlan,可是它們是物理鏈接在一塊兒的,所以只須要配置不一樣VLAN內的主機上的路由表,添加對方Vlan的網段的路由信息(網段爲對方網段,網關爲0,接口是這個接口,詳細分析看ARP那部分),看起來是路由表有錯誤(由於網關爲0的時候表明直連,可是目標網段卻不是接口IP所處的網段),但這種作法只是爲了強行讓本機進行ARP廣播,而後找到目標IP的MAC進行通信。固然這個目標IP的主機也得設置路由表,否則只能收到廣播卻沒法回覆,不知道往哪裏回覆。
- 還能夠直接在主機上添加目標網段和網關均爲0,不過這樣就能和全部的VLAN通信了,不推薦,那VLAN設置的意義就沒了,同時還沒法進行外網的路由轉發了(若是有外網的網關,但這種寫法會讓它判斷爲任何目標地址直接ARP廣播)不推薦這種添加方式。
- 只有一種狀況會用到上面的方式,就是一臺交換機沒有DHCP服務,想把他下面鏈接的全部主機之間相連,每臺IP地址隨便配置(除了那些特殊的不能配置的以外好比127開頭的),但只要配置了這種路由表項(目標網段0,網關0),他們之間仍然能夠相互通信。
- ip link命令網卡中的scope {global|link|host}
- 其中global表明全局通用,其表明從這塊網卡鏈接到來的數據包,或者從其餘網卡鏈接到的數據包,都可訪問到這個網卡設置的IP地址,由於global模式將會把此網卡的IP地址存入內核中,則其餘網卡訪問IP時也能查詢到
- link 表明只有從這個網卡到的數據包才能訪問這個網卡設置的IP地址,其餘的網卡到的數據包,就算目標IP是這個網卡的IP,也不能訪問這個IP地址
- host表示迴環網卡,沒有網絡功能,就是本機給本機使用(本機即當客戶端又當服務器時使用)
- 顯式路由 route -n ; ip route ; netstat -nr
基本網絡配置3
網卡接口配置bonding(多網卡用同一IP地址):
將多塊網卡綁定同一IP地址對外提供服務,能夠實現高可用或者負載均衡。直接給兩塊網卡設置同一IP地址是不能夠的。經過bonding,虛擬一塊網卡對外提供鏈接,物理網卡的被修改成相同的MAC地址
- 注意一臺主機或服務器上多塊網卡用同一個IP地址的時候,須要交換機來配合設置。有多種鏈接方式,詳細能夠查看幫助文檔,最多見的鏈接方式就是每一塊網卡外面都各自再接一臺交換機,而後這些交換機再接到一個總的交換機上,這個總的交換機再鏈接其餘的網絡。配置的時候就是在與各個網卡直接相連的交換機上進行相關的bounding配置。
Bonding工做模式
- Mode 0 (balance-rr)
輪轉(Round-robin)策略:從頭至尾順序的在每個slave接口上面發送數據包。本模式提供負載均衡和容錯的能力
- Mode 1 (active-backup)
活動-備份(主備)策略:只有一個slave被激活,當且僅當活動的slave接口失敗時纔會激活其餘slave.爲了不交換機發生混亂此時綁定的MAC地址只有一個外部端口上可見
- Mode 3 (broadcast)
廣播策略:在全部的slave接口上傳送全部的報文,提供容錯能力
- active-backup、 balance-tlb 和 balance-alb 模式不須要交換機的任何特殊配置。其餘綁定模式須要配置交換機以便整合連接。
如:Cisco 交換機須要在模式 0、 2 和 3 中使用 EtherChannel,但在模式4中須要 LACP和EtherChannel
Bonding配置
- 建立bonding設備的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
.....等等其它設置
BONDING_OPTS= 「miimon=100 mode=1 fail_over_mac=1」
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
- 查看bond0狀態:cat /proc/net/bonding/bond0
- 查看有幾個bond設備:cat /sys/class/net/bonding_masters
- miimon 是用來進行鏈路監測的。若是miimon=100,那麼系統每100ms 監測一次鏈路鏈接狀態,若是有一條線路不通就轉入另外一條線路
- 刪除bond0
ifconfig bond0 down
rmmod bonding (可用lsmod |grep bond查看模塊是否被刪除)
- 詳細幫助:
/usr/share/doc/kernel-doc- version/Documentation/networking/bonding.txt :在kernel-doc包裏面
https://www.kernel.org/doc/Documentation/networking/bonding.txt
注意點:
- ifcfg-bond0文件就把它當作一個單獨的網卡設備來進行各類配置,和普通網卡相似,注意寫上設備名(最好和這個文件名一致,以bond加編號的方式命名,注意這個能夠隨意設置,它不表明模式,模式的設置在後面所寫的那一項中)。最重要的一點就是BONDING_OPTS="miimon=100 mode=1" 這一行,前面表明多個網卡之間探測狀態的刷新檢測頻率,後面表明模式
- 一樣的須要綁定到bond中的網卡,其配置文件也須要更改,其中要加入兩項MASTER=bond0 SLAVE=yes ,其中MASTER後面跟的就是ifcfg-bond文件中的DEVICE這一行的設備名(注意別寫成了NAME這一行對應的名字)。這樣這個網卡將不會獨立工做而屬於bond中的網卡進行聯合工做了,這裏面的其餘設置也就不會生效了(最好把這兩行寫在前面的幾行,DEVICE永遠寫在第一行)。
- 刪除bond設置,先停用bond,而後刪除ifcfg-bond配置文件並修改曾經加入bond的網卡,而後重啓網絡服務是不行的,並無徹底刪除。必須卸載模塊rmmod bonding.
- fail_over_mac For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp) :此項很重要,在bond1模式中必須設置爲1,它就是爲了讓bond設備和實際網卡的MAC地址不會衝突,不會致使一個網卡接收一個網卡發送的狀況出現
CentOS 7網絡屬性配置
CentOS 6以前,網絡接口使用連續號碼命名:eth0、eth1等,當增長或刪除網卡時,名稱可能會發生變化
CentOS 7使用基於硬件,設備拓撲和設置類型命名:
(1) 網卡命名機制
systemd對網絡設備的命名方式
(a) 若是Firmware或BIOS爲主板上集成的設備提供的索引信息可用,且可預測則根據此索引進行命名,例如eno1
(b) 若是Firmware或BIOS爲PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,例如ens1
(c) 若是硬件接口的物理位置信息可用,則根據此信息進行命名,例如enp2s0
(d) 若是用戶顯式啓動,也可根據MAC地址進行命名,enx2387a1dc56
(e) 上述均不可用時,則使用傳統命名機制
網卡名稱
- 基於BIOS支持啓用biosdevname軟件
內置網卡:em1,em2
pci卡:pYpX Y:slot ,X:port
- (2) 名稱組成格式
en: Ethernet 有線局域網
wl: wlan 無線局域網
ww: wwan無線廣域網
名稱類型:
o<index>: 集成設備的設備索引號
s<slot>: 擴展槽的索引號
x<MAC>: 基於MAC地址的命名
p<bus>s<slot>: enp2s1
採用傳統命名方式
- 使用傳統命名方式:
(1) 編輯/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
或:修改/boot/grub2/grub.cfg
(2) 爲grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg :-o 換成 \>重定向也能夠
(3) 重啓系統
18:05[root@centos7 ~]# ll /etc/grub2.cfg
lrwxrwxrwx. 1 root root 22 Mar 5 21:16 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
主機名知識點2:
CentOS7主機名
- 配置文件:/etc/hostname ,默認沒有此文件,經過DNS反向解析獲取主機名,主機名默認爲:localhost.localdomain
- 顯示主機名信息
hostname
hostnamectl status
- 設置主機名
hostnamectl set-hostname centos7.magedu.com :當即生效,重啓也會生效不會丟失,ubuntu也可用
- 刪除文件/etc/hostname,恢復主機名localhost.localdomain
CentOS 7網絡配置工具(尤爲是nmcli很實用)
- 圖形工具:nm-connection-editor
- 字符配置tui工具:nmtui (centos6裏面 setup命令的第4項也能夠,7中沒有了)
- 命令行工具:nmcli :NetworkManager client (7中自帶bash_completion包,能夠用它來補全命令)
nmcli可用來準備多套配置來進行裝載
- 一種方法就是用nmcli命來修改和建立ifcfg文件,而後用nmcli connection up |down 鏈接名 的方式裝載
- 另外一種就是本身先建立一個ifcfg文件,而後用nmcli connection reload 刷新載入配置文件,而後再裝載修改配置文件便可
更詳細的nmcli命令以及TEAM設置(比bond更好的功能,只在Centos7中有,6中沒有)使用參見另外的博客中所寫
注意點:
- 多個配置文件針對一個設備的時候,設備DEVICE的內容要寫的是同樣的,注意它和別名的配置文件的區分:別名的配置文件是讓一塊網卡同一時間有多個IP地址,DEVICE後面的名字必須是eth0:1這種格式,有主配置別名配置之分;而一塊網卡的多個配置文件則是一塊網卡有多個不一樣地址根據環境不一樣來進行切換裝載的,其中DEVICE後面的名字都是同樣的好比eth0,沒有主配置附加配置之分,全都爲主配置。
- 多個配置文件針對同一網卡的時候雖然沒有主配置附加配置的區別,但通過各類測試(修改文件名字改變ls的排序,修改NAME的順序,修改文件的a m ctime等)均發現網絡服務重啓的時候會先默認載入最開始存在的自動生成配置文件。
- 可是須要注意,若是刪除掉了最開始存在的這個自動生成配置文件(或者說給它改了個名字讓它沒法識別好比前面加一個bifcfg等等),則通過測試時,重啓網絡服務後,多個配置文件針對同一個網卡的順序將會變成ls的排序的那個順序。
網橋
橋接:把一臺機器上的若干個網絡接口「鏈接」起來。其結果是,其中一個網口收到的報文會被複制給其餘網口併發送出去。以使得網口之間的報文可以互相轉發。
網橋就是這樣一個設備,它有若干個網口,而且這些網口是橋接起來的。與網橋相連的主機就能經過交換機的報文轉發而互相通訊。
例以下圖中:
主機A發送的報文被送到交換機S1的eth0口,因爲eth0與eth一、 eth2橋接在一塊兒,故而報文被複制到eth1和eth2,而且發送出去,而後被主機B和交換機S2接收到。而S2又會將報文轉發給主機C、 D

配置實現網橋
- 建立軟件網橋
nmcli con add con-name mybr0 type bridge con-name br0 ifname br0
nmcli con modify mybr0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
nmcli con add con-name br0-port0 type bridge-slave ifname eth0 master br0
- 查看配置文件
cat /etc/sysconfig/network-scripts/ifcfg-br0
cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
工具包 yum install bridge-utils
查看網橋 brctl show
查看CAM表 brctl showmacs br0
添加和刪除網橋 brctl <addbr|delbr> br0
添加和刪除網橋中網卡 brctl <addif|delif> eth0
注意:NetworkManager只支持以太網接口接口鏈接到網橋,不支持聚合接口
注意點:
- 注意網橋本質就至關於一個兩個口的交換機,把這兩個口的網絡(網段)給連接在一塊兒,它用於隔離衝突域(假如這兩個網段內的機器各自都用HUB鏈接在一塊兒,網橋能隔離這兩個網段衝突域),不能隔離廣播域。要注意它和路由的區別。
路由器是爲了避免同的網段之間可以進行通信,用於隔離廣播域(ARP廣播只能在本網段內)
而網橋它的應用場景是:存在有兩個不一樣的網絡,可是這兩個不一樣的網絡的IP地址倒是同一個網段,想要把這兩個不一樣的網絡連接在一塊兒,就能夠用網橋。
可是要注意這樣作會讓這兩個網段內的IP地址的主機數減半,它們原本是兩個網段(雖然網段設置的是同樣的),各自佔用本身網段的全部主機IP,可是合在一塊兒以後,兩個網段變成了一個網段,必然可以使用的主機IP數變爲原來的一半。要注意不要IP地址衝突。
- 將linux配置成網橋(交換機),由於是個二層設備,它原本是不須要地址的,咱們爲了方便管理會給它配置一個IP地址用於遠程管理,添加地址的時候添加到br0邏輯網卡上,注意不要添加到eth0或eth1等網卡上。可用ifconfig eht0 0.0.0.0 的方式刪除地址。
- brctl建立的br0等等只是邏輯上的一個設備(相似於bond0,team0),建立完以後添加接口上對應的MAC(在這裏就直接添加網卡了)便可(複習:二層交換機的CAM表內只有 接口和MAC兩項)
- 直接用brctl命令的操做沒法永久保存設置,所以仍是要寫在文件裏才能夠,能夠用上面的nmcli命令便可,相似建立team組.
brctl show
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl showmacs br0
ip link set br0 up
ip link set br0 down
brctl delif br0 eth0
brctl delif br0 eth1
brctl delbr br0
測試網絡工具
- 在命令行下測試網絡的連通性
顯示主機名
hostname
測試網絡連通性
ping
顯示正確的路由表
ip route
- 跟蹤路由
traceroute
tracepath
mtr
- 肯定名稱服務器使用nslookuphostdig