由于大搞BGP线路,所以在Cisco路由器上Mirror了入口的流量到另外一个端口,供suricata
分析用。
在Mirror直通kvm虚机过程中遇到以下问题:
Mirror的口是Te口,10G的流量,在宿主机上tcpdump可以看到所有流量,但是在kvm上则断断续续,流量丢失一部分,原因很简单:
流量的聚合和转发未配置好,两条命令解决
1brctl setageing br2 0
2brctl setfd br2 0
但是,如何在宿主机启动的时候自动执行这两句呢?简单,如果系统是CentOS
1cat <<EOF>>/sbin/ifup-local
2#!/bin/bash
3brctl setageing br2 0
4brctl setfd br2 0
5EOF
6chmod 755 /sbin/ifup-local
如果系统是Ubuntu
1cd /etc/network/if-up.d
2cat <<EOF>>br3-mirror
3#!/bin/bash
4if [ "$IFACE" = br2 ]; then
5brctl setageing br2 0
6brctl setfd br2 0
7fi
8EOF
9chmod +x br2-mirror
在宿主机上问题解决了,在kvm虚机上又遇到问题,Ubuntu,如果让一个网口启动但没有地址呢?
1vi /etc/network/interfaces
2auto ens7
3iface ens7 inet manual
4 mtu 1464
5up ifconfig ens7 up
注意上面的,ens7就是mirror过来的网口,mtu是因为在cisco做mirror的时候指定了固定的mtu 1464.
brctl命令的用法可以参见以下链接:
https://www.thegeekstuff.com/2017/06/brctl-bridge/
over.