Linux Bridge的映象埠實現

2021-06-05 04:27:04 字數 756 閱讀 3031

很多種交換機上都可以配置映象埠,也就是說所有的流量都要順便發乙份到映象埠,一般都是在映象埠上接乙個主機,上面開啟抓包或者審計程式,保證時刻監控網路流量。映象埠解決了學習型交換機無法抓包的問題。

linux實現了乙個軟體版本的bridge,也正是乙個交換機,只是可能埠少些,通過brctl  setageingtime

將time設定成0也可以使該軟交換機退化成乙個hub。然而我沒有在brctl的man手冊中找到如何來配置映象埠的任何資訊,於是自己實現了乙個。我的實現目前只測試了支援乙個映象埠的情形,當然很容易擴充套件成支援任意多個。總的來講,對**的修改有兩處:

0.對基礎資料結構的修改

net_bridge_port結構體中增加乙個flag,設為m,表示該埠為映象埠;

1.br_add_if函式增加乙個引數

該新增引數表示是否為映象埠,若是,則設定新增net_bridge_port的m標誌

2.修改br_handle_frame_finish函式

此處修改最為關鍵,主要有下面的邏輯:

...

if (skb)

}

}br_forward(dst->dst, skb);

} else

br_flood_forward(br, skb);

}...

以上0,1,2基本就可以實現映象埠了,方便了網路抓包和網路除錯。對於使用者態的brctl也需要修改,很簡單,只需要能在addif時傳入乙個m標誌即可以。

Linux Bridge的映象埠實現

很多種交換機上都可以配置映象埠,也就是說所有的流量都要順便發乙份到映象埠,一般都是在映象埠上接乙個主機,上面開啟抓包或者審計程式,保證時刻監控網路流量。映象埠解決了學習型交換機無法抓包的問題。linux實現了乙個軟體版本的bridge,也正是乙個交換機,只是可能埠少些,通過brctl setagei...

Linux Bridge的映象埠實現

很多種交換機上都可以配置映象埠,也就是說所有的流量都要順便發乙份到映象埠,一般都是在映象埠上接乙個主機,上面開啟抓包或者審計程式,保證時刻監控網路流量。映象埠解決了學習型交換機無法抓包的問題。linux實現了乙個軟體版本的bridge,也正是乙個交換機,只是可能埠少些,通過brctl setagei...

Docker安裝mysql映象及客戶端無法連線

在官網檢視mysql映象相關資訊 安裝 mysql5.7.21 docker pull mysql 5.7.21檢視mysql是否安裝成功 執行映象 docker run name mysql.5.7.21 p 3306 3306 e mysql root password admin d mysq...