KVM虚拟机获得宿主机指定网卡的流量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVM虚拟机获得宿主机指定网卡的流量相关的知识,希望对你有一定的参考价值。
背景
目前手上只有虚拟机资源,想通过虚拟机来分析交换机镜像过来的流量。交换机镜像过来的流量可能是主干网络的流量也可能是某台服务器的流量。
KVM环境准备
kvm环境准备省略,直接走官方文档或者其它安装文档即可
目前网络架构描述
宿主机:
1,目前有两块物理网卡em1和em2,其中em1是内网网口。em2网卡处于up状态,没有配置ip地址,且已经通过交换机配置接入了交换机镜像过来的流量
2,宿主机创建了br0,并且绑定了em1,并且测试虚拟机的虚拟机网卡为vnet0
虚拟机:
1,虚拟机只有一个eth0网卡对应宿主机的vnet0虚拟网卡
操作
在宿主机创建一个网桥br1,并且绑定到em2网卡
# brctl addbr br1
# brctl addif br1 em2
# ifconfig br1 up
查看网桥信息:
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.a4badb1b4640 no em1
vnet0
br1 8000.a4badb1b4642 no em2
virbr0 8000.5254007ccfb2 yes virbr0-nic
在宿主机区上给虚拟机临时新加一个网卡并且使用br1
# virsh attach-interface oeltest01 --type bridge --source br1
查看虚拟机网卡信息:
# virsh domiflist oeltest01
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 bridge br0 virtio 52:54:00:d3:02:0e
vnet1 bridge br1 - 52:54:00:c4:36:02
关闭br1的mac地址学习功能和降低转发延迟
# brctl setageing br1 0
# brctl setfd br1 0
Bridge(桥)是 Linux 上用来做 TCP/IP 二层协议交换的设备,与现实世界中的交换机功能相似。Bridge 设备实例可以和 Linux 上其他网络设备实例连接,既 attach 一个从设备,类似于在现实世界中的交换机和一个用户终端之间连接一根网线。当有数据到达时,Bridge 会根据报文中的 MAC 信息进行广播、转发、丢弃处理。而我们关闭br1的mac地址学习功能,把br1作为一个hub来使用,使其直接把流量转发到连接到br1的虚拟网卡vnet1。如果不关闭mac地址学习功能,由于br1收到的镜像流量mac地址都不是本机,收到流量后会直接把收到的流量丢弃,不再进行转发。
结果
查看虚拟机的网卡信息:
# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:d3:02:0e brd ff:ff:ff:ff:ff:ff
inet 172.18.1.150/24 brd 172.18.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::e593:4a16:3009:c9dc/64 scope link
valid_lft forever preferred_lft forever
3: ens7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:c4:36:02 brd ff:ff:ff:ff:ff:ff
inet6 fe80::3c4:d4ec:8176:bcba/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::2518:6c5e:3f1c:84fe/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::bfac:83e6:8224:7ed3/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
在新加的ens7网卡抓包:
# tcpdump -i ens7
现在em2网卡的流量都已经镜像到虚拟机的网卡了,可以再虚拟机中进行流量分析了
扩展
1,bridge和OpenvSwitch这两种虚拟机网络解决方案都支持mirror功能,可以实现虚拟机网口之间的流量镜像。参考文章:
http://www.just4coding.com/blog/2017/12/02/ovs-mirror/
2,像vmware产品也提供相关镜像流量的解决方案:https://docs.vmware.com/cn/VMware-NSX-T/1.1/com.vmware.nsxt.admin.doc/GUID-3D403B24-51F6-4A16-8266-0827BFE9FAA9.html
以上是关于KVM虚拟机获得宿主机指定网卡的流量的主要内容,如果未能解决你的问题,请参考以下文章