Linux Bridge的镜像端口实现

Linux Bridge的镜像端口实现 - 图1
dog2501人评论753人阅读2012-03-21 19:02:00
很多种交换机上都可以配置镜像端口,也就是说所有的流量都要顺便发一份到镜像端口,一般都是在镜像端口上接一个主机,上面开启抓包或者审计程序,保证时刻监控网络流量。镜像端口解决了学习型交换机无法抓包的问题。
Linux实现了一个软件版本的Bridge,也正是一个交换机,只是可能端口少些,通过brctl setageingtime

  1. ... if (skb) { if (dst) { if (!dst->dst->flags & M) { struct net_bridge_port *p; list_for_each_entry(p, &br->port_list, list) { if (p->flags & M) { struct sk_buff *skb3 = skb_clone(skb, GFP_ATOMIC); br_forward(dst->dst, skb3); } } } br_forward(dst->dst, skb); } else br_flood_forward(br, skb); } ...

以上0,1,2基本就可以实现镜像端口了,方便了网络抓包和网络调试。对于用户态的brctl也需要修改,很简单,只需要能在addif时传入一个M标志即可以。
©著作权归作者所有:来自51CTO博客作者dog250的原创作品,如需转载,请注明出处,否则将追究法律责任