虛擬網路gretap建立例項與流程分析

2021-10-25 12:52:59 字數 2341 閱讀 7107

問: tun/tap裝置有什麼用?

tun/tap裝置的用處是將協議棧中的部分資料報**給使用者空間的應用程式,

給使用者空間的程式乙個處理資料報的機會。於是比較常用的資料壓縮,加密等功能就可以在應用程式b裡面做進去,

tun/tap裝置最常用的場景是vpn,包括tunnel以及應用層的ipsec等

問: tun和tap的區別?

使用者層程式通過tun裝置只能讀寫ip資料報,

而通過 tap裝置能讀寫鏈路層資料報,

類似於普通socket和raw socket的差別一樣,處理資料報的格式不一樣。

準備:點對點網路,需要準備兩台linux 系統裝置。

local_ip=10.12.100.222 #本端ip

remote_ip=10.12.100.153 #對端ip

tunnel_name=gretap1 #自定義gretap 隧道名

#建立gre 隧道

ip link add name $ type gretap remote $ local $

ip link set $ up mtu 1462

gre_br=br1

brctl addbr $gre_br

ip link set $gre_br up

brctl addif $ $

#3.將對應的裝置掛載到橋br1 上

brctl addbr $gre_br wl1

brctl addbr $gre_br eth0

local_ip=10.12.100.153 #對端ip

remote_ip=10.12.100.222

tunnel_name=gretap1

#1.建立gre 隧道

ip link add name $ type gretap remote $ local $

ip link set $ up mtu 1462

#2.將gretap1 掛載到橋br1 上

gre_br=br1

brctl addbr $gre_br

ip link set $gre_br up

brctl addif $ $

1.在remote br1上開啟dhcp服務,本端eth0接入的裝置獲取ip成功. → 網路模型正確

2.在remote br1 掛載乙太網 ethx裝置, 本端eth0 ping ethx_ip 成功. → 區域網訪問成功

3.在remote 新增對應的iptables nat, ip ro規則, 本端通過wl1 ssid ap上網成功. → 業務正常

使用網橋的特性 -->有待確認

網橋的**規則是,網橋從x埠接收到乙個幀:

①搜尋資料庫確定mac位址是不是在乙個埠port上面;

②如果沒有找到這個mac位址,那麼把該幀泛洪flooding到所有埠(x除外);

③如果找到了mac位址對應應該發往y埠,那麼檢查y,如果y不處於阻塞態,那麼就 從y埠傳送,如果是阻塞態,那麼不傳送。

通過ap wl1介面的資料報流向

通過乙太網口 eth0介面資料流向

gretap 報文頭=gre:4 + mac:14 + ip:20 = 38

假設閘道器裝置的wan mtu 1500

則掛載br1上的裝置eth0 的mtu合理值 1500-38 = 1462

分析:1.假設eth0的mtu = 1500, eth0 發乙個大小為1500的報文,經過gretap的封裝(即+38 bytes gretap頭),大於wan.mtu,導致在分片,影響傳送速率。

2.假設eth0的mtu = 1462, 則剛好通過。

mtu的修改方案分析:

1.通過dhcp server option 26(inte***ce-mtu)

2.可以通過修改$ mtu值,功能生效。-->此處原理未知,  對傳送速率影響未驗證

eth0.mtu = 1500

br1.mtu = 1462

gretap1 = 1462

建立虛擬Wi Fi網路AP

早在2002年,微軟研究部門便開始進行802.11無線介面卡的試驗工作,專案名稱為 virtualwifi 他們發現了一種方法,可以使乙個單一的wi fi介面卡在windows中表現出多個介面卡的效能。動訊網了解到,virtualwifi可以使使用者通過乙個無線網絡卡同時連線到多個無線網路中,他們希...

建立乙個虛擬網路

建立乙個虛擬網路,為之後的自定義安裝虛擬機器做準備 實現此案例需要按照如下步驟進行。root room9pc01 vim etc libvirt qemu networks vbr.xml vbr vbr為虛擬網路的名字 ip為192.168.1.254 ip範圍是100 200 root room...

類的建立與例項

建立類 class person person是描述人的基本類,包含人的性別 年齡等 def init self name,birthday,mobile 靜態特徵。當例項化物件的時候自動執行該函式 建構函式,用來初始化類的靜態特徵,例項化的時候自動執行。param name param birth...