博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KVM虚拟机获得宿主机指定网卡的流量
阅读量:5823 次
发布时间:2019-06-18

本文共 2747 字,大约阅读时间需要 9 分钟。

背景

目前手上只有虚拟机资源,想通过虚拟机来分析交换机镜像过来的流量。交换机镜像过来的流量可能是主干网络的流量也可能是某台服务器的流量。

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 showbridge name bridge id       STP enabled interfacesbr0     8000.a4badb1b4640   no      em1                            vnet0br1     8000.a4badb1b4642   no      em2virbr0      8000.5254007ccfb2   yes     virbr0-nic

在宿主机区上给虚拟机临时新加一个网卡并且使用br1

# virsh attach-interface oeltest01 --type bridge --source br1

查看虚拟机网卡信息:

# virsh domiflist oeltest01Interface  Type       Source     Model       MAC-------------------------------------------------------vnet0      bridge     br0        virtio      52:54:00:d3:02:0evnet1      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 上,当 bridge 接收到此数据时,bridge进行一个和现实世界中的交换机类似的处理过程:判断包的类别(广播/单点),查找内部 MAC 端口映射表,定位目标端口号,将数据转发到目标端口或丢弃,自动更新内部 MAC 端口映射表以自我学习。而我们关闭br1的mac地址学习功能,把br1作为一个hub来使用,使其直接把流量转发到连接到br1的虚拟网卡vnet1。如果不关闭mac地址学习功能,由于br1收到的镜像流量中数据包的目的mac地址不是虚拟机的mac地址,故会直接把收到的流量丢弃,不再进行转发。

结果

查看虚拟机的网卡信息:

# ip addr1: lo: 
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 forever2: eth0:
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 forever3: ens7:
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功能,可以实现虚拟机网口之间的流量镜像。参考文章:

2,像vmware产品也提供相关镜像流量的解决方案:
3,linux bridge参考:

转载于:https://blog.51cto.com/leejia/2147300

你可能感兴趣的文章
参加婚礼
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
TEST
查看>>
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
Valid Parentheses
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
论模式在领域驱动设计中的重要性
查看>>
有关GitHub仓库分支的几个问题
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
Linux 目录结构及内容详解
查看>>