17.網絡協議和管理簡介

網絡的特徵

速度
成本
安全性
可用性
可擴展性
可靠性
拓撲

  • 其中可用性按整個系統可用時間佔全年總體時間的百分比來計算。
    比如99%可用1%不可用,則一年內有3天左右的時間不可用,這是無法接受的。
    一般大型企業要求99.999%,大約5分鐘左右不可用時間。
    raid技術就是一個解決可用性的技術,服務器和多個機房備份也是爲了可用性。
  • 而可靠性指的是硬件和系統的性能,注意它倆區別。

國際標準化組織(International Organization for Standardization,ISO)簡稱ISO。
OSI是Open System Interconnection的縮寫,意爲開放式系統互聯。國際標準化組織(ISO)制定了OSI模型,該模型定義了不同計算機互聯的標準,是設計和描述計算機網絡通信的基本框架。OSI模型把網絡通信的工作分爲7層,分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。這是一種事實上被TCP/IP 4層模型淘汰的協議。在當今世界上沒有大規模使用。

應 用 層:Application layer
表 示 層:Presentation layer
會 話 層:Session layer
傳 輸 層:Transport layer :網段 :
網 絡 層:Network layer :邏輯地址(更容易找到設備的位置):數據包 :三層交換機,路由器,家用集成路由器
數據鏈路層:Data link layer : 物理地址(世界唯一性) :幀 :二層交換機,網卡(IP地址是操作系統分配,並非網卡自帶,當然MAC地址也可用windows虛擬更改)
物 理 層:Physical layer :位 :網線,集線器

  • 注意每一層傳輸的時候都要爲上一層提供服務,因此要指明上一層的協議(因爲每一層都有很多種不同的協議)。
  • 這是因爲目標主機拆解封裝包的時候,它如果不指明上一層協議,則當這一層解報頭傳到上一層之後,目標主機不知道要用什麼協議在上一層對數據進行拆解以及各種處理。
  • 從應用層到物理層爲封裝,每次加報頭,數據鏈路層加上校驗位,反過來爲解封裝。

PDU

PDU: Protocol Data Unit,協議數據單元是指對等層次之間傳遞的數據單位
物理層的 PDU是數據位 bit
數據鏈路層的 PDU是數據幀 frame
網絡層的PDU是數據包 packet
傳輸層的 PDU是數據段 segment
其他更高層次的PDU是消息 message

數據傳輸方式

按方向分: 單工 半雙工 全雙工 ,分別爲單向,同一時間單向,同時可雙向。

按目標主機數量分:單播 多播(組播) 廣播

  • 注意單播多播廣播它只管發送,不管目標主機是否收到。不是目標主機的機器也會收到信息只不過默認情況下會將其拋棄,但也可能通過其它手段故意獲取信息內容達到竊聽的效果。
  • 注意廣播可能會影響到衝突域內的其他主機(不想接受廣播)的通信效率

局域網LAN和廣域網WAN

  • 局域網突出的特點就是基於廣播的方式通信,在一個小的範圍內,這樣它尋找主機的效率最好
  • 廣域網一般就是通過點對點,一段一段將數據傳出

雙絞線排序

國內常用T568B標準,國際上常用T568A標準.
百兆以內不排序也可,但是百兆以上不排序會影響網速。

  • 直連線:RJ45水晶頭兩頭爲同一種排序方式,生活工作中用的最多就是這種直連線。
  • 交叉線:兩頭分別爲T568A和T568B
    目前主機上大多都能自動識別交叉線還是直連線,因此不用刻意交叉,直接用直連線即可相互通訊。不過有些網卡沒有這功能,還是需要製作交叉線才行。
    以上都是5類線的標準,當網速達到千兆以上,用到超5類線以上標準,則8根線每根都既能發送又能接收數據。

T568B:
image

image

image

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

image

  • 早期主機相連就是按照上圖方式,不過現在的網卡都可以自適應,所以無需分別,除非是特別老的機器。

以太網(Ethernet):用於局域網內標準

  • 目前基本上局域網內用的都是以太網協議,早期還有令牌環網等協議
  • 以太網協議工作在數據鏈路層(和物理層)
  • wifi也是屬於以太網協議(無線),802.11開頭。

注意wifi和wlan和wapi區別:wlan是另外兩種協議的統稱,代表無線局域網協議

image

  • 以太網工作在數據鏈路層,以幀爲數據單位,其結構可以參考網絡資料。
  • MAC:media access control
  • 早期以太網協議沒有指明上一層(網絡層)協議,後來在長度位增加了type兩個字節用來指明上一層協議

查看幀內內容可用抓包工具

windows:wareshark
linux:

命令行命令 tcpdump

-i 後面指定要抓包的網卡名
-nn 抓包的網卡,當對方訪問本機時,顯示對方的IP地址而不是主機名
-x 顯示16進制的包內數據信息

查看網卡信息 ethtool

ethtool 直接跟網卡名:顯示網卡詳細信息
-i 後面指定網卡名 比如 eth0 :查看網卡驅動模塊

查看網卡信息 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用來解決衝突,後來用了雙絞線以及各種網絡設備:

  1. HUB :集線器,也被稱爲中繼器repeter(雙絞線的最大有效傳輸100米左右,用它來放大信號延長距離),傻瓜式向所有端口以廣播的機制轉發數據,一個主機發送數據之後連接到集線器上的所有設備都會收到這個數據,其也被稱爲泛洪機制(flood)。
    • 它的缺點就是數據不安全(所有機器都能收到數據,因此便可抓取並窺竊);同時會干擾到其他不需要接收數據的機器;再有就是兩臺機器以上同時發送數據會在集線器內發生衝突,那就仍然需要回退算法(CSMA/CD)重新發送;所有機器共享HUB帶寬,工作方式半雙工。
    • 連接到hub上的主機在一個衝突域內(兩臺機器同時發送數據,數據會發生衝撞並損毀,那麼這兩臺主機就在一個衝突域)
    • 注意HUB工作在物理層
  2. 網橋:網橋兩端分別爲兩個衝突域,它就是一個兩個端口的交換機,二層設備工作在數據鏈路層。
  3. 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. 1.分隔廣播域 2.安全 3.靈活管理 :注意交換機需要支持配置功能才能配置VLAN。
    • 實現:最常用的以端口方式劃分VLAN:將交換機的幾個端口劃分成一個VLAN中,另外幾個端口劃分到另外一個VLAN中,這每一個VLAN就是一個廣播域(類似子這些端口接到了一個子交換機上),但是兩個不同的VLAN之間不能通訊(相當於物理上隔斷了,或者說多個VLAN之間接了一個路由器)
    • 如果只能劃分VLAN不能配置他們之間的通訊策略,就是二層交換機;如果我們可以配置這多個VLAN之間的相互通訊策略,實現劃分廣播域,達到安全配置功能,就是帶有路由功能的三層交換機。
    • 二層交換機VLAN間互訪需藉助路由或三層交換機來實現,三層不需要。
  2. 如果兩個(或多個)交換機之間的VLAN想要連接在一起,可以把這兩個交換機上都各自拿出一個端口並相連,同時
    將這兩個端口各自加入想要連接的VLAN內即可,但如果想要連接的VLAN和交換機太多,就會佔用過多的端口。這時候就需要一個trunk-802.1Q協議並利用一個trunk端口,也就是幹路端口來讓這一個接口可以轉發此交換機上所有VLAN的數據。
    • 但是轉發出去的數據包如果不指定上目標交換機想要與這個數據包來自的VLAN網絡合並的VLAN,則在目標交換機會全部轉發,因此會在以太網幀的報頭信息內指定上目標交換機的VLAN信息,以便相互合併。這就是trunk的工作方式。

image

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

分層的網絡結構(企業中的簡單配置):

image

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

image

TCP/IP中各種協議服務工作的層級:

image

  • http協議也是工作於應用層

image

TCP和UDP

image

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

image

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

image

  • Linux內私有端口(動態端口)範圍(某些情況下可以更改它以免端口數量不夠用):/proc/sys/net/ipv4/ip_local_port_range
  • 查看已經被使用的固定端口號:/etc/services

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層:

image

icmp協議:網絡控制信息協議

  • ping命令就是ICMP協議中的服務,每次默認ping 一個數據包,裏面包含64字節的數據。等數據包返回或者超時再ping下一個數據包. 注意 ping發送的數據包必須有去有回纔算ping通,光去不回或者去都去不了都算沒有ping通。
    -c ping的次數
    -w 等待時長,單位爲妙
    -f 泛洪ping,根據CPU頻率能力盡最大可能去ping
    -s 指定一個包的數據大小,centos裏面最大65507字節

  • 比如用 ping -f -s 65507 IP地址 用於簡單的效果,佔用對方IP帶寬,造成對方網絡卡頓甚至影響系統速度。(當然安裝防火牆之後可以防止這種簡單的
  • ttl:time to live ping命令中顯示的數據包在網絡中最大生存時長,它表示的數量是默認值減去數據包經過的路由器的數量剩下的值。linux中ttl默認值爲64.
    /proc/sys/net/ipv4/ip_default_ttl,可以重定向直接更改(注意這個TTL是IP協議報頭中的生存時間項

APR協議:地址解析服務協議

它的作用就是找到邏輯上的IP地址對應的網絡中真正主機的位置,也就是其對應的MAC地址。
如果目標地址IP與本機就在同一網段,則當數據傳出到這一個IP地址時,比如說ping IP地址,它就會對IP其進行解析,找出物理上的MAC地址,然後將數據包向其轉發
如果目標IP和本機不在一個網段之內,則會向路由器的端口轉發,因爲在ARP表中,這個IP地址對應的MAC就是路由器連接到此網段的端口,至於後面路由器怎麼找到這個IP對應的真正的主機的地址,就是路由器和路由表中的工作了。它會一級一級經過路由器轉發,直到最終找到目標IP地址的網段和其真正的MAC地址主機,將數據轉發給目標

實現過程(ARP表的建立):

  1. 當知道目標的IP地址之後,第一次發送數據便以廣播方式在當前網段內發送消息,詢問目標IP地址的以太網協議(MAC)地址(注意在以太網協議中,這個廣播信息幀的目標MAC地址也就是12個F,源地址就是本機的MAC地址)
  2. 當目標IP地址主機收到這個廣播消息之後,他就會知道這條消息的源IP地址以及源MAC地址(因爲在廣播信息中寫的有源MAC地址和IP地址,但需要注意MAC地址是二層以太網協議的報頭中的,IP地址是第三層ARP協議中報頭中的,其中IP地址包括本機的IP還包括目標主機的IP。這樣目標IP主機收到廣播纔會處理這條信息,其他IP的發現不是發給本機的就會忽略掉這個廣播。
    • 注意這些信息存在數據中不同報頭中,並存在兩個相互通訊的主機內存中的。而之前說的MAC端口地址是存在交換機中的,不要搞混淆了,它們不是同一個機器
  3. 當目標IP主機收到發給自己的詢問的廣播信息後,它會處理並以單播方式回覆發送廣播的這個IP和MAC地址的主機一條信息,(其中在以太網協議中的報頭中就會包含本機的MAC地址)這樣雙方就都知道了對方的IP和MAC對應關係,就會把它各自存入自己內存的ARP表中,下次再進行相互訪問時就不用再發送廣播而是直接單播方式進行傳輸數據了。

image

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

image

跨網段(路由器隔離)的APR實現(APR表的建立)過程:

注意:ARP分段廣播,路由表優先級高於ARP協議,(每次先判斷路由表,再決定是ARP廣播尋找網關mac還是尋找目標主機mac)

  1. 假如發送方和目標方主機之間隔着1個或者多個路由,則發送數據時(已知本機IP和目標IP),首先在本機網段的路由這一側,發送數據時會先通過ARP廣播找到本機網段的網關對應的MAC,也就是路由器接到這個網段接口IP對應的MAC(這裏隱含了一個提前判斷,就是主機已經判斷過目標IP和本機IP不在一個網段內,因此它就會用廣播尋找本機所在網段的路由網關IP接口的MAC地址。從這裏也可以看出路由尋址是要高於APR協議的,先判斷路由再判斷ARP),然後本機就會將數據包轉給網關到路由
  2. 轉給第一級路由之後,路由器就會根據這個路由的路由表內的信息判斷要將這個數據包從此路由的哪一個端口往外轉發,並轉到下一個路由的哪一個網關。在這第二個網段轉發的過程中也是通過APR協議找到下一個網關對應的MAC,然後將數據包轉發給下一個網關。
    注意路由表一行內包含 1.目標網段(2.包括子網掩碼),3.能發送到目標網段的出口端口 4.能轉發給目標網段的下一個路由器的網關入口
    當然路由這是在網絡層說的,源IP和目標IP都仍然爲最初的IP保持不變(因爲這些IP地址並不在以太網幀報頭內而是在網絡層IP協議的報頭數據內,路由器去掉以太網幀報頭之後就會根據網絡層報頭內的目標IP地址進行路由表匹配,並再次以太網封裝轉發出去,不改變IP協議中的內容,除非是有NAT功能的路由)但在數據鏈路層來說,以太網幀報頭內就是指從這個路由器轉出的端口MAC到下個路由器接入的網關MAC,因此每經過一個路由器都會進行封裝拆封的過程會不斷改變。
  3. 第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欺騙

  1. 在交換機同一個網段內,僞裝自己爲某個接收方的IP的MAC地址,分別***發送方和接收方,讓發送方誤認爲自己是接收方,而讓接收方誤認爲自己是發送方。進而這兩個主機之間的通訊便會中間途徑ARP欺騙的機器,在經過這個機器轉發到真正的接收和發送方。因此數據信息就被竊聽甚至能被修改。
  2. 在一個網段內僞裝自己爲路由器網關的IP以及MAC,這樣這個網段內所有的聯通外網的數據都會經過自己,然後再進行轉發(或者不轉發造成斷網),這樣就能夠盜取密碼等敏感信息。
  3. 因爲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借位。
  • 合併超網:剛好與上一過程相反。

一些計算方法公式

  1. 網絡中主機數=2^主機ID位-2=2^(32-網絡ID位)-2
  2. 網絡數=2^可變網絡ID位
  3. 網絡ID=IP與netmask
  4. 無類地址CIDR表示法:IP/網絡ID位數, CIDR表示法,無類域間路由
  5. 劃分子網數=2^網絡ID向主機ID借位的位數(1分爲兩個子網,2分爲4子網,以此類推,但別忘了修改子網掩碼)
  6. 劃分超網:合併多個小網成爲一個大網,主機ID向網絡ID借位

路由詳細介紹

跨網絡通信:路由
路由分類(這裏指的是路由表內的每一條信息,不是路由器):
主機路由 :子網掩碼全爲1,會造成路由表很龐大,不常用
網絡路由 :網段路由,最常用的路由表方式,到達網段內之後進行ARP廣播查找某個IP對應主機
默認路由 :找不到目標網絡時便會向默認路由記錄的網關轉發,通常用來指定局域網上的主機的網關(主機上也有路由表),注意不能配置在有多條線路上的路由器上面。
優先級:精度越高,優先級越高(主機->網段->默認)

  • 注意:不僅僅是路由器有路由表,每個主機都有路由表,路由表非常重要,它決定了數據包經過網絡要發出去時所走的路徑,如果缺失路由表,則與它相關的數據包將直接無法發送出去。

基本網絡配置1:

將Linux主機接入到網絡,需要配置網絡相關設置,一般包括如下內容:

  1. 主機名
  2. IP/netmask
  3. 路由:默認網關
  4. DNS服務器:
    主DNS服務器
    次DNS服務器
    第三DNS服務器
  • 注意:linux中的主機名只是給用戶一個提示信息,並不具備網絡訪問的功能(除非定義DNS服務進行解析)。而windows中的計算機名就可以當做一個標識地址來進行訪問,注意它倆的區分。

  • Centos6中主機名修改(永久)可以在 /etc/sysconfig/network 中,重啓生效,想要立即生效則直接hostname後面加新名字改一下即可。不過修改之後需要更改一下/etc/hosts裏面的迴環域名解析行,把新修改的這個hostname加到後面去(hosts文件內格式參考原先的,也可以自己增加更多的地址和名字對應關係,此名字解析服務的hosts文件中如果被篡改有訪問到假網站的風險)。
  • Centos7中用命令 hostnamectl set-hostname NEW_NAME 的方式,立即生效並且重啓生效,或者也可以修改/etc/hostname中的名字,也是重啓之後生效。同樣修改完名字之後的需要在 /etc/hosts中新增加回環網址的新名字.

接口命名方式: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

網卡別名(只是暫時生效,重啓服務丟失)

  • 對虛擬主機有用
  • 將多個IP地址綁定到一個NIC上
    eth0:1 、 eth0:2、 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

  1. 配置文件地址在 /etc/sysconfig/network-scripts/ 文件夾中,其中配置文件都是以ifcfg-開頭的,開頭必須爲ifcfg-,而後面的內容寫什麼都可以,不過最好和網卡名(設備名)改爲一致。修改它就可以永久修改網卡配置,重啓網絡服務就是按照裏面所寫的內容來進行網卡設置的。
  2. 注意配置的時候centos6中最好把 service NetworkManager stop (就是圖形界面任務欄的網絡設置功能和那個圖標顯示),它和network有時會有衝突。
  3. cat /etc/resolv.conf 可以查看DNS服務是否真正生效,DNS的配置寫入的位置仍然在ifcfg文件中。注意想要用外網的DNS服務,必須路由網關先配置好能連接到外網纔可以。
  4. 配置完成之後用 service network restart 或 systemctl restart network 重啓一下網絡服務使其生效
  5. 經測試得知,配置文件最好把DEVICE=eth0:2等等寫在第一行,這樣載入的時候纔會加載此配置。
  6. 配置文件只要有多餘的,重啓網絡服務時找不到的設備,就會報錯(centos7中),因此刪除網卡後最好用bakifcfg的方式重命名它。
  7. 虛擬機中的配置文件中UUID和HWADDR可以儘量不要寫,(物理機可以寫上HWADDR)因爲有時候會衝突報錯,上面的兩個一般情況下都是固定的不會改變,但可以用MACADDR= 的方式系統中虛擬修改MAC地址。
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地址表示)

注意點:

  1. 注意路由表中只有IP(包括子網掩碼等),不含有mac地址,因爲它工作在第三層網絡層。
  2. 路由器(或者主機)直接相連的網段無需配置,每個直接相連網段的此路由表項:
    目標網絡:就是這個網段的網絡地址
    接口:就是在這個網段分配的IP(主機的話直接指向網卡設備)
    網關:爲0.0.0.0(爲何全爲0詳細更多分析看上面ARP中)
  3. 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是否真的關閉
  4. 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
  5. "traceroute 目標IP" 命令 可以查看路由經過的路由器信息,或者用"mtr 目標" 命令更加詳細和高速。
  6. 注意了局域網內的主機的路由表可以添加默認路由(相當於它只有一個接口連接了一個網段,默認路由添加到這一網段的路由器網關上即可)
    • 並且處於邊緣網段(一端連接一個局域網,另一端連接外網)的路由器也可以添加默認路由到鏈接外網的次路由器接口和下一個路由器的網關(與這個路由直接相連的這兩個網段的路由表信息會自動添加,相當於這個路由器已知這兩個直連的網段,除了這兩個直連網段其他任何IP都往下一個路由器網關轉發到外網,路由表中有3條信息)
    • 但是只要是路由器(有兩個線路以上)最好不要添加默認路由。不然所有的未知目的IP地址都只能走這條默認路由線路了。
  7. 路由器添加路由表的時候,即使不指定下一個路由的網關的端口,它也能自己判斷是從哪個端口轉發出去,因爲下一個路由的網關必然和要轉出去的端口在一個網段裏面。
  8. 路由表目標網段可以寫成包含的關係,也就是路由表中的目標網段包含了許多子網,它既可以寫成路由表中的目標網段和實際上要尋找的目標網段寫一模一樣,也可以路由表上寫的的目標網段(網絡ID少,主機多)
    包含着真正要尋找的目標網段(網絡ID多,主機少),這樣的話這個路由器下面還可以再接路由器,由路由器再分子網。
  9. Centos7中network重啓失敗經常出現,有多種原因,其中常見LSB啓動失敗的原因中,即使所有配置文件沒有錯誤,還有一種可能是網卡沒有插上線,也就是說vmware中的線沒有插上 或者 說用命令將 ip link set 網卡 down 了。
    centos7中只要有一個網卡沒有啓用,重啓網絡服務就可能會失敗(一定要檢查所有配置文件的HDADDR和UUID 以及DEVICE是否寫錯)。
    注意沒插網線和ip down它倆還是有區別的,前者是物理上直接沒有連接,後者是物理上連接了但是網卡禁用了。
    但無論這兩種哪一種,只要有網卡處於down狀態,則所有配置正確用network start也可能會無法重啓網絡服務顯示錯誤。
    但centos6中即使某些網卡關閉了,重啓network也不會報錯,不過要注意關閉NetworkManager
  10. 配置路由表的接口一定是本機或者本路由的能轉發到目標網段的出口,而網關一定是與這個接口相連網段的下一個路由器的接口(在同一個網段),而不是下下一個路由器(下下一個路由器則由下一個路由器來進行轉發判斷)。

重要注意

  1. 路由表中如果把直接相連的網段的這條路由信息(表現爲網關全爲0,目標網段和本機IP在同一個網段內的這條)刪掉,則這個主機在這個網段內除了本機之外的其他IP地址也將無法連通了,可見路由表的重要(也可見ARP廣播在路由判斷之後,先判斷網段,再判斷轉發還是直接ARP廣播)。
    • 這裏的無法聯通指的是別的主機能發送數據給本機(比如APR廣播),本機也能收到,但是本機無法將數據發送出去(比如無法回覆ARP廣播請求)(因爲不知道應該怎麼發,這條路由刪掉之後,雖然是直連的網段)
  2. 迴環網段的配置文件爲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上下對應注意點:
    1. 7中重新添加一項ifcfg配置文件名指定設備名之後,保存退出它並不會直接生效,需要用NetworkManager服務啓動後提供的nmcli命令載入此配置纔會生效。

Centos6:

  • 7和6上下對應注意點:
    1. 6中重新添加一項ifcfg配置文件名指定設備名之後,保存退出它變直接生效了,因爲NetworkManager服務啓動後會直接讓這個新創建的ifcfg配置文件生效。可用service NetworkManager status 查看它的運行狀態。 如果6中沒有裝這個服務,則必須用service network restart命令重啓網絡服務才能生效新寫的配置文件。一般6中會把manager服務關閉或者直接不安裝它,因爲會和network服務衝突。

網絡不通錯誤簡單分析:

  1. 網絡不可到達:沒有路由無法連接到未知的網段的網關,會顯示如此
  2. 名字或者服務未知(6中爲未知的主機):因爲連接不到外網,DNS服務無法使用,無法解析域名IP地址,會顯示如此
  3. 同網段內的IP 目標主機不可到達:說明同網段內沒有這個IP地址的主機(ARP廣播沒有迴應)或者說對方收到了但是沒有回覆(或者說回覆了沒有傳回來);總之就是ping包發送出去了但沒有接收回來。
  4. 不同網段IP 目標主機不可到達:經過路由器轉發之後,如果轉發到目標網段內則變成,第3項相同的結果,如果沒有轉發到目標網段內,說明路由器中的路由表無法找到目標網段,信息不完整。
  5. (此處不再區分是否處於相同網段,參考3和4) 目標端口不可達:說明對方的防火牆拒絕了本機的ping命令請求(REJECT) {iptables -A INPUT -s IP地址 -j REJECT}
  6. 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 命令:新的命令

  1. ip - show / manipulate routing, devices, policy routing and tunnels
    ip [ OPTIONS ] OBJECT { COMMAND | help }
    OBJECT := { link | addr | route }
  2. ip link - network device configuration
    set dev|IFACE
    可設置屬性:
    up and down:激活或禁用指定接口
    • 也可直接用 ifup/ifdown IFACE 的形式禁用啓用網卡
      show [dev|IFACE]:指定接口
      [up]:僅顯示處於激活狀態的接口
  3. ip addr { add | del } IFADDR dev STRING
    [label LABEL]:添加地址時指明網卡別名
    [scope {global|link|host}]:指明作用域
    global: 全局可用
    link: 僅鏈接可用
    host: 本機可用
    [broadcast ADDRESS]:指明廣播地址
  4. ip address show - look at protocol addresses
    [dev DEVICE]
    [label PATTERN]
    [primary and secondary]
  5. 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
  6. 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詳細信息

各命令注意點

  1. 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
  1. 配置一個網卡的多個地址,得用別名的方式,直接配置可用ifconfig命令,永久配置可以直接cp 原配置文件改名然後寫入信息即可, 比如 cp ifcfg-eth0 ifcfg-eth0:2 ,(可以有多個,名字也可以不是數字)
    最關鍵的就是注意配置文件中的DEVICE中後面的名字要和文件名中後面的名字一樣,這裏面就是DEVICE=eth0:2 , 此時IP就可以自己改了,其他的某些配置也可以改了。配置完之後重啓網絡服務即可。

    • 注意linux中如果想要即有靜態IP又有動態IP配置在一個網卡上,那麼只有原始的主配置文件可以配置動態DHCP服務的設置,其它的別名配置文件中不能夠配置動態IP,只能靜態IP。不論動態還是靜態,這些網址都可以同時生效。
    • windows中也可以同時配置動態和靜態,比如家中動態(家中路由器帶有DHCP服務器)和工作中靜態(注意必須是沒有DHCP服務的情況下,不然動態地址會起作用),但這兩個只能同時生效一個,可自行查看如何配置。
  2. 多個交換機分別用一根網線(每一個都分配一箇中等規模的網段)連接到一個總交換機上,然後這個總交換機用一根網線連接到一臺服務器上的一個網卡上(支持ftp等服務),給這一個網卡設置多個不同的IP地址(分別屬於多個交換機的各個網段),那麼這樣這些不同網段的主機都能訪問到這個ftp服務器,不同網段之間也能相互連接(前提是總交換機上沒有做限制)。這樣就構成了一個簡單的沒有外網鏈接的局域網
    • 此時可以在服務器上添加更多的物理網卡,比如連接到外網,鏈接到財務辦公網絡。同時也可以做安全策略讓財務辦公網絡無法與上面的局域網通信,但是上面局域網可以與外網通信(開啓網卡之間的數據轉發功能)。
    • 當然更多情況下是在主交換機上直接再接上一個路由器連接外網,在這個路由器上做配置,而不是把服務器當做路由器來使用。
    • 不過在最初的局域網中,可以看到服務器網卡(可以看做路由一個接口)用一根網線配置了多個網段的IP地址,並配置了路由表(網關爲0,多個目標網段各不相同,但是用同一接口),這樣的路由設置被稱爲單臂路由(只有一個接口)。
  3. 緊接着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),他們之間仍然可以相互通訊。
  4. ip link命令網卡中的scope {global|link|host}
    • 其中global代表全局通用,其代表從這塊網卡連接到來的數據包,或者從其他網卡連接到的數據包,均可訪問到這個網卡設置的IP地址,因爲global模式將會把此網卡的IP地址存入內核中,則其他網卡訪問IP時也能查詢到
    • link 代表只有從這個網卡到的數據包才能訪問這個網卡設置的IP地址,其他的網卡到的數據包,就算目標IP是這個網卡的IP,也不能訪問這個IP地址
    • host表示迴環網卡,沒有網絡功能,就是本機給本機使用(本機即當客戶端又當服務器時使用)
  5. 顯式路由 route -n ; ip route ; netstat -nr

基本網絡配置3

網卡接口配置bonding(多網卡用同一IP地址):

將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。直接給兩塊網卡設置同一IP地址是不可以的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改爲相同的MAC地址

  • 注意一臺主機或服務器上多塊網卡用同一個IP地址的時候,需要交換機來配合設置。有多種連接方式,詳細可以查看幫助文檔,最常見的連接方式就是每一塊網卡外面都各自再接一臺交換機,然後這些交換機再接到一個總的交換機上,這個總的交換機再連接其他的網絡。配置的時候就是在與各個網卡直接相連的交換機上進行相關的bounding配置。

Bonding工作模式

  1. Mode 0 (balance-rr)
    輪轉(Round-robin)策略:從頭到尾順序的在每一個slave接口上面發送數據包。本模式提供負載均衡和容錯的能力
  2. Mode 1 (active-backup)
    活動-備份(主備)策略:只有一個slave被激活,當且僅當活動的slave接口失敗時纔會激活其他slave.爲了避免交換機發生混亂此時綁定的MAC地址只有一個外部端口上可見
  3. Mode 3 (broadcast)
    廣播策略:在所有的slave接口上傳送所有的報文,提供容錯能力
  4. 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

注意點:

  1. ifcfg-bond0文件就把它當做一個單獨的網卡設備來進行各種配置,和普通網卡類似,注意寫上設備名(最好和這個文件名一致,以bond加編號的方式命名,注意這個可以隨意設置,它不代表模式,模式的設置在後面所寫的那一項中)。最重要的一點就是BONDING_OPTS="miimon=100 mode=1" 這一行,前面代表多個網卡之間探測狀態的刷新檢測頻率,後面代表模式
  2. 同樣的需要綁定到bond中的網卡,其配置文件也需要更改,其中要加入兩項MASTER=bond0 SLAVE=yes ,其中MASTER後面跟的就是ifcfg-bond文件中的DEVICE這一行的設備名(注意別寫成了NAME這一行對應的名字)。這樣這個網卡將不會獨立工作而屬於bond中的網卡進行聯合工作了,這裏面的其他設置也就不會生效了(最好把這兩行寫在前面的幾行,DEVICE永遠寫在第一行)。
  3. 刪除bond設置,先停用bond,然後刪除ifcfg-bond配置文件並修改曾經加入bond的網卡,然後重啓網絡服務是不行的,並沒有完全刪除。必須卸載模塊rmmod bonding.
  4. 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

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

CentOS7主機名

  • 配置文件:/etc/hostname ,默認沒有此文件,通過DNS反向解析獲取主機名,主機名默認爲:localhost.localdomain
  • 顯示主機名信息
    hostname
    hostnamectl status
  • 設置主機名
    hostnamectl set-hostname centos7.magedu.com :立即生效,重啓也會生效不會丟失,ubuntu也可用
  • 刪除文件/etc/hostname,恢復主機名localhost.localdomain

CentOS 7網絡配置工具(尤其是nmcli很實用)

  1. 圖形工具:nm-connection-editor
  2. 字符配置tui工具:nmtui (centos6裏面 setup命令的第4項也可以,7中沒有了)
  3. 命令行工具:nmcli :NetworkManager client (7中自帶bash_completion包,可以用它來補全命令)

nmcli可用來準備多套配置來進行裝載

  1. 一種方法就是用nmcli命來修改和創建ifcfg文件,然後用nmcli connection up |down 連接名 的方式裝載
  2. 另一種就是自己先創建一個ifcfg文件,然後用nmcli connection reload 刷新載入配置文件,然後再裝載修改配置文件即可

更詳細的nmcli命令以及TEAM設置(比bond更好的功能,只在Centos7中有,6中沒有)使用參見另外的博客中所寫

注意點:

  1. 多個配置文件針對一個設備的時候,設備DEVICE的內容要寫的是一樣的,注意它和別名的配置文件的區分:別名的配置文件是讓一塊網卡同一時間有多個IP地址,DEVICE後面的名字必須是eth0:1這種格式,有主配置別名配置之分;而一塊網卡的多個配置文件則是一塊網卡有多個不同地址根據環境不同來進行切換裝載的,其中DEVICE後面的名字都是一樣的比如eth0,沒有主配置附加配置之分,全都爲主配置。
  2. 多個配置文件針對同一網卡的時候雖然沒有主配置附加配置的區別,但經過各種測試(修改文件名字改變ls的排序,修改NAME的順序,修改文件的a m ctime等)均發現網絡服務重啓的時候會先默認載入最開始存在的自動生成配置文件。
  3. 但是需要注意,如果刪除掉了最開始存在的這個自動生成配置文件(或者說給它改了個名字讓它無法識別比如前面加一個bifcfg等等),則經過測試時,重啓網絡服務後,多個配置文件針對同一個網卡的順序將會變成ls的排序的那個順序。

網橋

橋接:把一臺機器上的若干個網絡接口“連接”起來。其結果是,其中一個網口收到的報文會被複制給其他網口併發送出去。以使得網口之間的報文能夠互相轉發。
網橋就是這樣一個設備,它有若干個網口,並且這些網口是橋接起來的。與網橋相連的主機就能通過交換機的報文轉發而互相通信。
例如下圖中:
主機A發送的報文被送到交換機S1的eth0口,由於eth0與eth1、 eth2橋接在一起,故而報文被複制到eth1和eth2,並且發送出去,然後被主機B和交換機S2接收到。而S2又會將報文轉發給主機C、 D

image

配置實現網橋

  • 創建軟件網橋
    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只支持以太網接口接口連接到網橋,不支持聚合接口

注意點:

  1. 注意網橋本質就相當於一個兩個口的交換機,把這兩個口的網絡(網段)給鏈接在一起,它用於隔離衝突域(假如這兩個網段內的機器各自都用HUB連接在一起,網橋能隔離這兩個網段衝突域),不能隔離廣播域。要注意它和路由的區別。
    路由器是爲了不同的網段之間能夠進行通訊,用於隔離廣播域(ARP廣播只能在本網段內)
    而網橋它的應用場景是:存在有兩個不同的網絡,但是這兩個不同的網絡的IP地址卻是同一個網段,想要把這兩個不同的網絡鏈接在一起,就可以用網橋。
    但是要注意這樣做會讓這兩個網段內的IP地址的主機數減半,它們本來是兩個網段(雖然網段設置的是一樣的),各自佔用自己網段的所有主機IP,但是合在一起之後,兩個網段變成了一個網段,必然能夠使用的主機IP數變爲原來的一半。要注意不要IP地址衝突。
  2. 將linux配置成網橋(交換機),因爲是個二層設備,它本來是不需要地址的,我們爲了方便管理會給它配置一個IP地址用於遠程管理,添加地址的時候添加到br0邏輯網卡上,注意不要添加到eth0或eth1等網卡上。可用ifconfig eht0 0.0.0.0 的方式刪除地址。
  3. brctl創建的br0等等只是邏輯上的一個設備(類似於bond0,team0),創建完之後添加接口上對應的MAC(在這裏就直接添加網卡了)即可(複習:二層交換機的CAM表內只有 接口和MAC兩項)
  4. 直接用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
  • 確定名稱服務器使用
    nslookup
    host
    dig
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章