混雜模式二

2021-09-22 07:48:16 字數 2053 閱讀 6673

工作中接觸到混雜模式主要是在docker跨主機通訊的環境下,結合docker跨主機通訊的環境對混雜模式在做乙個小結。

關於設定混雜模式的資料在網上也看了一些,但是都不全面,結合最近的研究,做節點總結

1.混雜模式涉及到硬體和軟體兩個方面,首先硬體要開啟混雜模式,硬體上面開啟了混雜模式後,並不意味著混雜模式就生效了,要使混雜模式生效,還要軟體層面的配置,將網口上面的混雜模式狀態開啟,將網口上的promisc狀態開啟。即要是主機的混雜模式生效,硬體的混雜模式開啟和軟體上網口的混雜模式狀態開啟這兩個條件要同時具備。

2.網絡卡上面的promisc狀態顯示為關閉,並不代表系統的混雜模式就沒開,即存在系統中的混雜模式狀態已經開啟,但是在網口上面並沒有出現promisc的狀態。

3.各種虛擬化工具對混雜模式的支援,本人在vmware和virtual box中都配置過混雜模式,在vmware中的網絡卡硬體配置中並沒有混雜模式相關的配置,vmware中的硬體全部開啟混雜模式的,不需要手動設定。virtual box中則可以在硬體中手動選擇開啟和關閉混雜模式。wmware中會出現第2點情況,網口的promisc狀態顯示為關閉,網口的混雜模式卻生效了。在混雜模式方面,vmware做的支援不夠好,virtual box在這方面要好很多。

1.混雜模式中的目的位址有兩層含義,一是目的ip位址就是當前機器,當前機器就可以接收到資料報,二是目的ip位址不是當前機器,但當前機器處於源ip位址到目的ip位址的路由路徑上。即源位址到目的地中間會經過當前節點。

這種場景典型的就是docker跨主機的直接路由模式。

實際的實驗中主機1的ip為10.0.2.5(對應途中的192.168.145.128),主機2的ip為10.0.2.6(對應圖中192.168.145.129),網絡卡為enp0s3(對應圖中的eth0),其他一致。

考慮在container1中向container2傳送ping包的場景。資料報會依次經過主機1的docker0,eth0和主機2的eth0,docker0,最終到達container2。

從主機2的eth0角度來看,這個資料報的目的位址並不是主機2的eth0,但是在eth0上抓包,可以看到資料報

上圖中可以看到,在host2沒有開啟混雜模式狀態的情況下,在host2上的enp0s3(等價與架構圖中的eth0)抓包,可以抓到container1傳送給container2的包。

如果在另外一台主機3上不開混雜模式狀態,則可以看到主機3抓取不到container1發給container2的ping包。

所以得出的小結為:當資料報的目的ip為當前主機,或者資料報的路由路徑通過當前主機時,當前主機可以抓取到資料報;若要抓取目的位址不在當前主機或者路由路徑不經過當前主機的包,則需要開啟混雜模式,前提時資料報也會廣播到當前主機。

macvlan的網路通訊模型中,是利用主機的網絡卡上建立多個子網絡卡,每個子網絡卡分配ip位址和mac位址,host 收到資料報後,則根據不同的 mac 位址把資料報從**給不同的子介面,在外界來看就相當於多台主機。

macvlan與其他模式不同的,容器中的網絡卡不是通過橋接方式連線到宿主機的網絡卡上與外界通訊,而是直接使用宿主機上的網絡卡上虛擬出來的子網絡卡與外界通訊。

在上圖中,宿主機的eth0網絡卡上建立了兩個子網絡卡eth0.0和eth0.1,分配給guet0和guest1使用,對外表現為在eth0上配置了3個iip位址和mac位址,如果不開啟混雜模式,則宿主機只能接收ip為192.168.100.2的資料,無法接收其他配置在網絡卡eth0上的ip的資料。ip 192.168.100.5和192.168.100.4不可達,即容器guest0和guest1對外不可達,開啟混雜模式後,所有使用宿主機網絡卡上子網絡卡的容器都可以接收資料,對外通訊。

參考:

混雜模式介紹

一 混雜模式基本概念 一般情況下,網絡卡往往只會接收目的位址是它的資料報而不會接收目的位址不是它的資料報。混雜模式就是接收所有經過網絡卡的資料報,包括不是發給本機的包。預設情況下,網絡卡只把發給本機的包 包括廣播包 傳遞給上層程式,其他的包一律丟棄。混雜模式就是指網絡卡能接受所有通過它的資料流,無論...

網絡卡工作模式 混雜模式

網絡卡工作模式有4種,分別是 廣播 broadcast 模式 多播 multicast 模式 單播模式 unicast 混雜模式 promiscuous 在混雜模式下的網絡卡能夠接收一切通過它的資料,而不管該資料目的位址是否是它。如果通過程式將網絡卡的工作模式設定為 混雜模式 那麼網絡卡將接受所有流...

嚴格模式和混雜模式

doctype document type 文件型別 的簡寫,來告訴瀏覽器以何種方式解析。1 過度的 transitional,也叫混雜模式 要求比較寬鬆,允許繼續使用html4.01的標識,完整宣告為 doctype html public w3c dtd xhtml 1.0 transition...