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

原文地址:http://blog.51cto.com/leejia/2147300

时间: 2024-08-28 11:58:37

KVM虚拟机获得宿主机指定网卡的流量的相关文章

VirtualBox 设置静态ip,实现虚拟机和宿主机互相访问,并能访问网络

虚拟机支持3种常用网络模式: NAT模式,虚拟机可以访问宿主机和网络,宿主机不能访问虚拟机. Host-Only模式,虚拟机和宿主机可以互相访问,但是虚拟机不能访问网络. Bridge模式:虚拟机作为独立的计算,和宿主机同样连接到外部网络.如果局域网中是DHCP,将虚拟机设置为静态ip,存在ip冲突的风险. 为将VirtualBox 设置为静态ip,实现虚拟机和宿主机互相访问,并能访问网络,我们可以将NAT和Host-Olny 模式混合使用,步骤如下: 1.配置2块网卡:一个选择[网络地址转换(

虚拟机和宿主机不能互ping的解决办法等

1. 虚拟机和宿主机不能互ping的解决办法:禁用无关虚拟网卡. 2. 有时有效光驱设备为cdrom1. 3. CentOS 6.3 图形界面切换用户:System->Log Out 虚拟机和宿主机不能互ping的解决办法等,码迷,mamicode.com

虚拟机安装、创建到实现虚拟机与宿主机互联

虚拟机安装.创建到实现虚拟机与宿主机互联 本次实验主要是为了介绍如何安装创建虚拟机,帮助虚拟机与宿主机配置同网段IP,实现宿主机与虚拟机互通,实现匿名every one的共享访问.具体步骤如下: 一. 首先从网上下载VMware12安装包打开等待安装进度条 单击下一步 点击安装 更改一下文件安装路径,建议不要放到系统盘(C:):,点击下一步 然后耐心等待.... 安装条到头之后取消勾选两项,点击下一步: 点击许可证,录入激活密匙: 安装完成,打开虚拟机,创建一个新的虚拟机: 然后点击自定义选项,

VMware14虚拟机与宿主机建立通讯

当我们在VMware14中运行虚拟机搭建实验环境就需要与我们的宿主机或另一台虚拟机连接通讯,下面我们就来看看如何建立通讯,实现虚拟机与宿主机.虚拟机与虚拟机互联互通. 准备环境:一台安装好VMware14的宿主机,并且在VMware14中安装好虚拟机,我这里虚拟机和宿主机用的都是win10系统[(VMware14安装使用方法连接:https://blog.51cto.com/14473285/2424605),win10 企业版下载连接:https://pan.baidu.com/s/1EuAQ

虚拟机制作宿主机可以浏览的网页

虚拟机制作宿主机可以浏览的网页 本次实验主要是为了介绍如何在虚拟机上虚拟机制作宿主机可以浏览的网页以下是详细介绍: 打开虚拟机登入win7系统然后打开控制面板选着程序. 进入控制面板的程序单击打开或关闭Windows功能 等待Windows正在更改功能-- 找到Internet信息服务单击+号 查看是否有万维网服务如图(有都打上勾)并且按确定 接下来在开始菜单栏里搜索服务找到Internet信息服务(IIS)管理器单击打开 打开后缩小在下面然后在打开我的电脑点开系统启动盘(c盘) 打开系统启动磁

Py获取本机指定网卡的ip地址

前段时间需要批量修改服务器的配置文件,里面包含本机的IP地址,由于服务器有多块网卡并且配置多个ip地址,一开始想写shell脚本批量修改,但是既然现在正在学Python,何不研究下使用Python写,在网络上搜了相关文章,根据自己实际情况,便有了下面的脚本: 利用Python获取本机指定网卡的ip地址: #!/usr/bin/env python # -.- coding: utf-8 -.- # By Sandler import socket import fcntl import stru

设置VMware Player中的虚拟机和宿主机共享文件

设置VMware Player中的虚拟机和宿主机共享文件 试验环境: 虚拟机软件:VMware Player 6.0.3 宿主机os:windows7 虚拟机os:centos6.6(32位) 完成此任务的前提是要在虚拟机操作系统中安装vmware-tools,vmware-tools中有一个模块叫host-guest-file-system,通过这个hgfs可以实现在宿主机windows和虚拟机linux之间的文件共享. 首先,安装VMware-Tools 第一步,在虚拟机开机的时候,点击[p

MacOSX 虚拟机与宿主机的网络配置

环境:MacOSX.VMware Fusion11.5.CentOS6 比较重要的两个网卡 安装虚拟机后,宿主机会多出几个网卡,其中vmnet1对应的Bridge(桥接方式),vmnet8对应NAT方式. 配置vmnet8 需要进入到VMware Fusion的配置目录中,编辑networking文件 $ cd /Library/Preferences/VMware\ Fusion/ $ ls lastLocationUsed license-fusion-110-e3-201804 netwo

关于虚拟机与宿主机同网段主机互ping的一点疑问

宿主机win10(192.168.1.0/24)虚拟机win2008r2(192.168.159.0/24)使用NAT模式,宿主机和虚拟机能够互ping通,虚拟机能够ping通与宿主机同一网段的任何计算机,但与宿主机同网段的计算机却不能ping通虚拟机,不知道是为何?我是菜鸟,请各位老师能给我解释下为什么不?