橋接虛擬局域網(wǎng)和真實(shí)局域網(wǎng)到同一網(wǎng)段原理分析
發(fā)布時(shí)間:2016-11-20 21:10:16 作者:佚名
我要評論
這篇文章主要介紹了橋接虛擬局域網(wǎng)和真實(shí)局域網(wǎng)到同一網(wǎng)段原理分析,需要的朋友可以參考下
接上一篇文章《虛擬局域網(wǎng)》。
虛擬局域網(wǎng)底層”物理鏈路“,其實(shí)就是建立在真實(shí)網(wǎng)卡TCP/UDP協(xié)議上,
通過UDP來轉(zhuǎn)發(fā)虛擬網(wǎng)卡產(chǎn)生的以太網(wǎng)卡數(shù)據(jù)包,
而上層的應(yīng)用程序看到的,就跟在一個(gè)真實(shí)的網(wǎng)絡(luò)里通訊一樣。
但是虛擬局域網(wǎng)也就只局限于在本網(wǎng)絡(luò)里通訊,等于是一個(gè)封閉的網(wǎng)絡(luò)一樣。
他們要跟真實(shí)局域網(wǎng)建立聯(lián)系,該怎么做呢,上篇文章說道可以借助NAT,
也可以借助路由讓不同網(wǎng)段的虛擬網(wǎng)絡(luò)和真實(shí)網(wǎng)絡(luò)建立聯(lián)系(至于這個(gè)功能暫時(shí)還沒折騰出來),
還有就是橋接,讓虛擬局域網(wǎng)和真實(shí)物理網(wǎng)絡(luò)處于同一個(gè)網(wǎng)段,
熟悉VMWARE虛擬機(jī),就應(yīng)該明白什么是橋接功能了。
vmware網(wǎng)絡(luò)設(shè)置里首先要綁定到一塊真實(shí)的網(wǎng)卡,接著才能使用橋接功能。
這種橋接,讓vmware虛擬機(jī)里的操作系統(tǒng)就跟局域網(wǎng)里的一臺真正的機(jī)器一樣,有獨(dú)立IP地址,能被其他機(jī)器訪問到。
看那起來是很神奇的功能,其實(shí)明白了原理,相信大部分熟悉程序開發(fā)的人都能自己實(shí)現(xiàn)
(即使不懂驅(qū)動,也能利用現(xiàn)成的抓包開發(fā)包比如WinPcap來實(shí)現(xiàn)),
這個(gè)原理簡單的說,就是把這個(gè)被綁定的網(wǎng)卡,看作是一個(gè)具有多個(gè)IP地址的網(wǎng)卡,
每個(gè)IP地址分配給不同的虛擬機(jī)器。
以vmware舉個(gè)容易明白的例子,
假設(shè)一臺電腦,處于網(wǎng)段192.168.100.XX的局域網(wǎng)中,其物理網(wǎng)卡PC-CARD, 它的IP地址是192.168.100.2,
這臺電腦上裝有vmware,vmware裝有另外一個(gè)操作系統(tǒng),設(shè)置vmware為橋接模式,并且綁定到物理網(wǎng)卡PC-CARD上,
vmware里裝的操作系統(tǒng)IP地址假設(shè)是 192.168.100.3,
局域網(wǎng)中的其他機(jī)器,比如192.168.100.4是如何訪問到192.168.100.3的呢?
局域網(wǎng)絕大部分都是以太網(wǎng)標(biāo)準(zhǔn),依靠MAC地址來識別以太網(wǎng)數(shù)據(jù)包的地址, 其實(shí)所有數(shù)據(jù)包都被發(fā)送到PC-CARD網(wǎng)卡,
vmware在NDIS協(xié)議驅(qū)動層開發(fā)一個(gè)驅(qū)動程序,截獲他所感興趣的數(shù)據(jù)包,這里是ip地址192.168.100.3的數(shù)據(jù)包,
并發(fā)送到應(yīng)用層,并且修改目標(biāo)MAC地址為虛擬機(jī)里操作系統(tǒng)的網(wǎng)卡地址,發(fā)送到vmware里,
虛擬機(jī)里的操作系統(tǒng)發(fā)送回應(yīng)包給用戶程序,修改源MAC地址為PC-CARD的地址,
vmware的協(xié)議驅(qū)動再發(fā)送給網(wǎng)卡,這樣,192.168.100.4的機(jī)器就能接收到虛擬機(jī)里操作系統(tǒng)的數(shù)據(jù)包。
而192.168.100.4的機(jī)器一直以為是在跟PC-CARD的另一個(gè)IP地址192.168.100.3通訊。
現(xiàn)在要說的是,在vmware功能基礎(chǔ)上,
擴(kuò)展成來自不同地方的虛擬局域網(wǎng)和物理局域網(wǎng)合并成一個(gè)網(wǎng)段,互相無障礙的通訊。
主要的通訊結(jié)構(gòu)還是《虛擬局域網(wǎng)》里所描述的:
一個(gè)公網(wǎng)服務(wù)器負(fù)責(zé)轉(zhuǎn)發(fā)以太網(wǎng)數(shù)據(jù)包,其他的虛擬局域網(wǎng)客戶端連接到這個(gè)公網(wǎng)服務(wù)器,
某個(gè)想把自己所在的物理局域網(wǎng)的機(jī)器都給共享出來,他的橋接驅(qū)動客戶端也同樣連接到這個(gè)公網(wǎng)服務(wù)器。
同時(shí)需要把所有虛擬網(wǎng)卡的網(wǎng)段設(shè)置成這個(gè)物理局域網(wǎng)的網(wǎng)段,這樣才能正常通訊。
首先開發(fā)NDIS協(xié)議驅(qū)動程序,抓取網(wǎng)卡發(fā)送和接收的數(shù)據(jù)包,
如果不懂驅(qū)動,完全可以利用現(xiàn)成的WinPcap來截獲數(shù)據(jù)包。
在協(xié)議驅(qū)動中設(shè)置包過濾原則為所有本地包,這樣從本網(wǎng)卡發(fā)送出去的和接收到的包括廣播組播包就會截獲到,
再通過一個(gè)功能設(shè)備,發(fā)送給應(yīng)用程序。協(xié)議驅(qū)動還應(yīng)該具備從應(yīng)用層發(fā)送以太網(wǎng)數(shù)據(jù)包到網(wǎng)卡的接口。
驅(qū)動部分基本上就做這么多事情,驅(qū)動的功能完全可以利用WinPcap替代,因?yàn)閃inPcap的底層就是個(gè)NDIS協(xié)議驅(qū)動。
主要的工作在應(yīng)用層部分,
程序首先綁定到某塊網(wǎng)卡,同時(shí)獲得這塊網(wǎng)卡的MAC地址和它的所有IP地址。
在應(yīng)用層接收到驅(qū)動發(fā)來的數(shù)據(jù)包,需要進(jìn)一步過濾。過濾原則如下:
1),如果是廣播包或者組播包,接收,同時(shí)不需要修改數(shù)據(jù)包的目標(biāo)MAC地址。
2),如果數(shù)據(jù)包的目標(biāo)MAC地址不是本網(wǎng)卡的MAC地址,丟棄。
3),如果數(shù)據(jù)包目標(biāo)MAC地址等于本網(wǎng)卡的MAC地址,分析數(shù)據(jù)包類型,保留ARP,RARP和IP類型的數(shù)據(jù)包,
其他類型的數(shù)據(jù)包丟棄,
4),在3)的基礎(chǔ)上,進(jìn)一步分析數(shù)據(jù)包,取出發(fā)送的目標(biāo)IP地址,如果是發(fā)給本網(wǎng)卡的,丟棄,否則接收。
5),在4)的基礎(chǔ)上,修改數(shù)據(jù)包的目標(biāo)MAC地址為真正發(fā)送目的地MAC地址
(至于如何修改,可先事先商量好目標(biāo)IP地址和目標(biāo)MAC地址的對應(yīng)關(guān)系。
我是采用動態(tài)辦法:從公網(wǎng)服務(wù)器接收的以太網(wǎng)數(shù)據(jù)包,緩存它的源MAC地址和IP地址對應(yīng)關(guān)系。)
過濾成功的數(shù)據(jù)包,發(fā)送到公網(wǎng)服務(wù)器上去轉(zhuǎn)發(fā)。
從公網(wǎng)服務(wù)器接收數(shù)據(jù)包,接收到的數(shù)據(jù)包首先緩存他的源MAC地址和IP地址的對應(yīng)關(guān)系,作為上邊第5點(diǎn)的過濾條件。
接著修改數(shù)據(jù)包的源MAC地址為本網(wǎng)卡的MAC地址,為何要如此做,是因?yàn)樵谶@個(gè)物理局域網(wǎng)網(wǎng)絡(luò)中,是靠MAC地址
尋址的,如果不修改,物理局域網(wǎng)的其他機(jī)器就不知道該發(fā)給誰。
如上所說,整個(gè)橋接客戶端的核心功能就已經(jīng)實(shí)現(xiàn)。
虛擬局域網(wǎng)底層”物理鏈路“,其實(shí)就是建立在真實(shí)網(wǎng)卡TCP/UDP協(xié)議上,
通過UDP來轉(zhuǎn)發(fā)虛擬網(wǎng)卡產(chǎn)生的以太網(wǎng)卡數(shù)據(jù)包,
而上層的應(yīng)用程序看到的,就跟在一個(gè)真實(shí)的網(wǎng)絡(luò)里通訊一樣。
但是虛擬局域網(wǎng)也就只局限于在本網(wǎng)絡(luò)里通訊,等于是一個(gè)封閉的網(wǎng)絡(luò)一樣。
他們要跟真實(shí)局域網(wǎng)建立聯(lián)系,該怎么做呢,上篇文章說道可以借助NAT,
也可以借助路由讓不同網(wǎng)段的虛擬網(wǎng)絡(luò)和真實(shí)網(wǎng)絡(luò)建立聯(lián)系(至于這個(gè)功能暫時(shí)還沒折騰出來),
還有就是橋接,讓虛擬局域網(wǎng)和真實(shí)物理網(wǎng)絡(luò)處于同一個(gè)網(wǎng)段,
熟悉VMWARE虛擬機(jī),就應(yīng)該明白什么是橋接功能了。
vmware網(wǎng)絡(luò)設(shè)置里首先要綁定到一塊真實(shí)的網(wǎng)卡,接著才能使用橋接功能。
這種橋接,讓vmware虛擬機(jī)里的操作系統(tǒng)就跟局域網(wǎng)里的一臺真正的機(jī)器一樣,有獨(dú)立IP地址,能被其他機(jī)器訪問到。
看那起來是很神奇的功能,其實(shí)明白了原理,相信大部分熟悉程序開發(fā)的人都能自己實(shí)現(xiàn)
(即使不懂驅(qū)動,也能利用現(xiàn)成的抓包開發(fā)包比如WinPcap來實(shí)現(xiàn)),
這個(gè)原理簡單的說,就是把這個(gè)被綁定的網(wǎng)卡,看作是一個(gè)具有多個(gè)IP地址的網(wǎng)卡,
每個(gè)IP地址分配給不同的虛擬機(jī)器。
以vmware舉個(gè)容易明白的例子,
假設(shè)一臺電腦,處于網(wǎng)段192.168.100.XX的局域網(wǎng)中,其物理網(wǎng)卡PC-CARD, 它的IP地址是192.168.100.2,
這臺電腦上裝有vmware,vmware裝有另外一個(gè)操作系統(tǒng),設(shè)置vmware為橋接模式,并且綁定到物理網(wǎng)卡PC-CARD上,
vmware里裝的操作系統(tǒng)IP地址假設(shè)是 192.168.100.3,
局域網(wǎng)中的其他機(jī)器,比如192.168.100.4是如何訪問到192.168.100.3的呢?
局域網(wǎng)絕大部分都是以太網(wǎng)標(biāo)準(zhǔn),依靠MAC地址來識別以太網(wǎng)數(shù)據(jù)包的地址, 其實(shí)所有數(shù)據(jù)包都被發(fā)送到PC-CARD網(wǎng)卡,
vmware在NDIS協(xié)議驅(qū)動層開發(fā)一個(gè)驅(qū)動程序,截獲他所感興趣的數(shù)據(jù)包,這里是ip地址192.168.100.3的數(shù)據(jù)包,
并發(fā)送到應(yīng)用層,并且修改目標(biāo)MAC地址為虛擬機(jī)里操作系統(tǒng)的網(wǎng)卡地址,發(fā)送到vmware里,
虛擬機(jī)里的操作系統(tǒng)發(fā)送回應(yīng)包給用戶程序,修改源MAC地址為PC-CARD的地址,
vmware的協(xié)議驅(qū)動再發(fā)送給網(wǎng)卡,這樣,192.168.100.4的機(jī)器就能接收到虛擬機(jī)里操作系統(tǒng)的數(shù)據(jù)包。
而192.168.100.4的機(jī)器一直以為是在跟PC-CARD的另一個(gè)IP地址192.168.100.3通訊。
現(xiàn)在要說的是,在vmware功能基礎(chǔ)上,
擴(kuò)展成來自不同地方的虛擬局域網(wǎng)和物理局域網(wǎng)合并成一個(gè)網(wǎng)段,互相無障礙的通訊。
主要的通訊結(jié)構(gòu)還是《虛擬局域網(wǎng)》里所描述的:
一個(gè)公網(wǎng)服務(wù)器負(fù)責(zé)轉(zhuǎn)發(fā)以太網(wǎng)數(shù)據(jù)包,其他的虛擬局域網(wǎng)客戶端連接到這個(gè)公網(wǎng)服務(wù)器,
某個(gè)想把自己所在的物理局域網(wǎng)的機(jī)器都給共享出來,他的橋接驅(qū)動客戶端也同樣連接到這個(gè)公網(wǎng)服務(wù)器。
同時(shí)需要把所有虛擬網(wǎng)卡的網(wǎng)段設(shè)置成這個(gè)物理局域網(wǎng)的網(wǎng)段,這樣才能正常通訊。
首先開發(fā)NDIS協(xié)議驅(qū)動程序,抓取網(wǎng)卡發(fā)送和接收的數(shù)據(jù)包,
如果不懂驅(qū)動,完全可以利用現(xiàn)成的WinPcap來截獲數(shù)據(jù)包。
在協(xié)議驅(qū)動中設(shè)置包過濾原則為所有本地包,這樣從本網(wǎng)卡發(fā)送出去的和接收到的包括廣播組播包就會截獲到,
再通過一個(gè)功能設(shè)備,發(fā)送給應(yīng)用程序。協(xié)議驅(qū)動還應(yīng)該具備從應(yīng)用層發(fā)送以太網(wǎng)數(shù)據(jù)包到網(wǎng)卡的接口。
驅(qū)動部分基本上就做這么多事情,驅(qū)動的功能完全可以利用WinPcap替代,因?yàn)閃inPcap的底層就是個(gè)NDIS協(xié)議驅(qū)動。
主要的工作在應(yīng)用層部分,
程序首先綁定到某塊網(wǎng)卡,同時(shí)獲得這塊網(wǎng)卡的MAC地址和它的所有IP地址。
在應(yīng)用層接收到驅(qū)動發(fā)來的數(shù)據(jù)包,需要進(jìn)一步過濾。過濾原則如下:
1),如果是廣播包或者組播包,接收,同時(shí)不需要修改數(shù)據(jù)包的目標(biāo)MAC地址。
2),如果數(shù)據(jù)包的目標(biāo)MAC地址不是本網(wǎng)卡的MAC地址,丟棄。
3),如果數(shù)據(jù)包目標(biāo)MAC地址等于本網(wǎng)卡的MAC地址,分析數(shù)據(jù)包類型,保留ARP,RARP和IP類型的數(shù)據(jù)包,
其他類型的數(shù)據(jù)包丟棄,
4),在3)的基礎(chǔ)上,進(jìn)一步分析數(shù)據(jù)包,取出發(fā)送的目標(biāo)IP地址,如果是發(fā)給本網(wǎng)卡的,丟棄,否則接收。
5),在4)的基礎(chǔ)上,修改數(shù)據(jù)包的目標(biāo)MAC地址為真正發(fā)送目的地MAC地址
(至于如何修改,可先事先商量好目標(biāo)IP地址和目標(biāo)MAC地址的對應(yīng)關(guān)系。
我是采用動態(tài)辦法:從公網(wǎng)服務(wù)器接收的以太網(wǎng)數(shù)據(jù)包,緩存它的源MAC地址和IP地址對應(yīng)關(guān)系。)
過濾成功的數(shù)據(jù)包,發(fā)送到公網(wǎng)服務(wù)器上去轉(zhuǎn)發(fā)。
從公網(wǎng)服務(wù)器接收數(shù)據(jù)包,接收到的數(shù)據(jù)包首先緩存他的源MAC地址和IP地址的對應(yīng)關(guān)系,作為上邊第5點(diǎn)的過濾條件。
接著修改數(shù)據(jù)包的源MAC地址為本網(wǎng)卡的MAC地址,為何要如此做,是因?yàn)樵谶@個(gè)物理局域網(wǎng)網(wǎng)絡(luò)中,是靠MAC地址
尋址的,如果不修改,物理局域網(wǎng)的其他機(jī)器就不知道該發(fā)給誰。
如上所說,整個(gè)橋接客戶端的核心功能就已經(jīng)實(shí)現(xiàn)。
相關(guān)文章

如何解決 DNS 解析錯(cuò)誤(訪問網(wǎng)站出現(xiàn)DNS_PROBE_FINISHED_NXDOMAIN錯(cuò)誤
網(wǎng)站出現(xiàn)“DNS_PROBE_FINISHED_NXDOMAIN” 錯(cuò)誤是指瀏覽器顯示無法解析域名導(dǎo)致的網(wǎng)站無法訪問,下面將主要分享解決此錯(cuò)誤的五種常見方法2026-03-06
思科設(shè)備常用命令都很長,有時(shí)候會拼寫錯(cuò)誤,有沒有縮寫命令呢?當(dāng)然有,今天給大家介紹思科設(shè)備的命令縮寫2025-12-16
再也不用敲全命令了! 華為網(wǎng)絡(luò)設(shè)備600+條最常用命令縮寫速查寶典
華為設(shè)備幾乎所有常用命令都支持“唯一縮寫”,本文共收集 600+ 條最常用命令縮寫,按功能模塊分類,直接復(fù)制粘貼就能用,建議收藏+轉(zhuǎn)發(fā)給你的小伙伴2025-12-16
你家用的是WIFI幾? 從WiFi1到WiFi7這7個(gè)版本區(qū)別介紹
本文將全面解析從WiFi1到WiFi7每一代技術(shù)的核心差異、性能提升和應(yīng)用場景,幫助您理解無線網(wǎng)絡(luò)技術(shù)的演進(jìn)歷程2025-08-12
FTTC/FTTH和FTTR有什么區(qū)別? 光纖接入方式詳細(xì)介紹
國內(nèi)主流 ISP 普遍都采用了光纖連接,常見術(shù)語包括 FTTC(光纖到路邊)、FTTB(光纖到樓宇)、FTTH(光纖到戶)和 FTTR(光纖到房間),他們之間有什么區(qū)別?詳細(xì)如下2025-03-05
TP-Link PDDNS服將于務(wù)6月30日正式停運(yùn):用戶需轉(zhuǎn)向第三方DDNS服務(wù)
近期,路由器制造巨頭普聯(lián)(TP-Link)在用戶群體中引發(fā)了一系列重要變動,上個(gè)月,公司發(fā)出了一則通知,明確要求所有用戶必須通過實(shí)名認(rèn)證流程,方能繼續(xù)使用其提供的DDNS服2025-02-15
電腦怎么查看隱藏和顯示SSID? 服務(wù)集標(biāo)識符等你來揭秘
之前我們介紹過ssid的概念,那么自己的設(shè)備怎么顯示ssid和隱藏ssid呢?下面我們就來看看詳細(xì)的教程2025-01-14
SSID究竟是什么? WiFi網(wǎng)絡(luò)名稱及工作方式解析
SID可以看作是無線網(wǎng)絡(luò)的名稱,類似于有線網(wǎng)絡(luò)中的網(wǎng)絡(luò)名稱或者路由器的名稱,在無線網(wǎng)絡(luò)中,設(shè)備通過SSID來識別和連接到特定的無線網(wǎng)絡(luò)2025-01-14
向日葵Q2Pro怎么樣? 貝銳向日葵Q2Pro工業(yè)級遠(yuǎn)控設(shè)備測評
今天帶來的這款向日葵 Q2Pro ,就是一款專門用于工業(yè)設(shè)備、醫(yī)療設(shè)備等遠(yuǎn)程控制的硬件產(chǎn)品,憑借其即插即用、斷網(wǎng)可遠(yuǎn)控、無需被控主機(jī)安裝軟件等特性,為設(shè)備維護(hù)帶來了全2024-11-23
雙頻BE5100面板AP! TP-LINK TL-7AP5100HI-PoE拆機(jī)測評
TP-LINK一款為TL-7AP5100HI-PoE 易展版的 Wi-Fi 7 AP 面板怎么樣?該面板隸屬 BE5100 規(guī)格家族,詳細(xì)請看下文拆機(jī)測評2024-06-28











