当前位置: 首页 > news >正文

Qemu虚拟机读取物理机的物理网卡的流量信息方法

项目背景:
比如我有三个项目 A,B,C;其中A项目部署在物理机上,B,C项目部署在 虚拟机V1,V2中,三个项目接口需要相互调用。
需要解决的问题点:
1,因为A,B,C项目接口相互调用,所以调用的地址需要静态不变的
2,B,C项目需要读取物理机的物理网卡的镜像流量信息

解决思路:
1,B,C使用主机模式创建虚拟机部署,这样虚拟机和物理机都是在同一个网段,且物理机和虚拟机的ip都是固定的
2,因为B,C需要读取物理网卡的流量信息,之前采用网桥模式,把虚拟机和物理机的物理网卡绑定在同一个网桥上,经过测试,如果pcap包在物理机上向网桥回放流量包信息是虚拟机可以收到流量,但是向物理网卡回放镜像流量包,虚拟机无法读取向物理网卡回放的流量信息。所以这种方法就废弃了,采用passthrough的方法,将物理机的物理网卡绑定到虚拟机上,这样,无论是通过交换机或者其他硬件设备向物理机的物理网卡发送流量信息,虚拟机的虚拟网卡都可以收到流量信息。

使用前需要安装软件 见博客虚拟机软件安装

步骤
1 开启物理机的虚拟机化(passthrough支持)

1.1 /etc/default/grub 配置
vi /etc/default/grub
文件添加 intel_iommu=on iommu=pt
位置如下
在这里插入图片描述

1.2 激活配置

  1. 查看服务器 启动是UEFI启动还是BIOS启动,命令如下
    [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

  2. 查看系统系统启动方式
    如果是UEFI启动 执行命令 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
    如果是BIOS 启动 执行命令 grub2-mkconfig -o /etc/grub2.cfg

  3. 重启服务器
    reboot

  4. 是否生效
    cat /proc/cmdline
    在这里插入图片描述

2 操作系统配置
2.1 开启操作系统ip forward转发
1)配置
vi /etc/sysctl.conf
增加一行 net.ipv4.ip_forward=1
2)激活配置
sysctl -p /etc/sysctl.conf

3 Nat网络配置
3.1 删除系统默认安装的default网桥
virsh net-destroy default
virsh net-undefine default

3.2 default.xml (文件已提供)拷贝到 /etc/libvirt/qemu/networks/目录下
cp default.xml /etc/libvirt/qemu/networks/

default.xml内容如下

<network><name>default</name><uuid>37268901-d790-4304-b5b8-2a236c16d756</uuid><forward mode='nat'><nat><port start='1024' end='65535'/></nat></forward><bridge name='virbr0' stp='on' delay='0'/><mac address='52:54:00:b3:3d:df'/><ip address='96.66.23.2' netmask='255.255.255.0'><dhcp><range start='96.66.23.3' end='96.66.23.254'/></dhcp></ip>
</network>

3.3 定义并启动default网络
virsh net-define /etc/libvirt/qemu/networks/default.xml
virsh net-start default
virsh net-autostart default

3.4 查看配置状态
virsh net-list
在这里插入图片描述

4 虚拟机安装

见我的博客虚拟机安装

注意:创建虚拟机使用下面的命令,不要指定网桥了(去掉–network bridge:br0)

virt-install --virt-type kvm  --name Ai --ram 8024 --vcpus 8  --cdrom=/home/iso/CentOS-7-x86_64-DVD-1810.iso  --disk path=/home/data/Ai.qcow2  --console pty,target_type=serial   --graphics vnc,listen=0.0.0.0 --os-type=Linux --noautoconsole

5 虚物理网卡绑定
将物理机的某一个空余物理网卡分给虚拟机独享(重点)

a) 查看虚拟机可用的物理网卡
virsh nodedev-list
在这里插入图片描述
b) 使用物理网卡enp7s0 取出 parent标签 pci_0000_07_00_0

在这里插入图片描述

c) 编辑创建的虚拟机 Ai.xml文件
vi /etc/libvirt/qemu/Ai.xml
子标签里面 添加内容为





解释:
取b步骤中的pci_0000_07_00_0
进行修改,domain中的都是16进制,其中b步骤也是16进制的,所以不需要转换,直接将相应的数据放入指定的位置即可
在这里插入图片描述

6 修改虚拟机的网卡ip
修改虚拟机的ip 在其中的网段
96.66.23.3-96.66.23.254

7 测试
方法1 通过网线直连,将一台机器的物理网卡直连这台机器配置物理网卡的网口,然后向物理网卡回放流量包

#enp3s0  与虚拟机绑定物理网卡enp7s0 直连tcpreplay -i enp3s0 -l 10000  -M50 http_192.168.36.163_10W.pcap

方法2 直接把回放包放到虚拟机中,直接发送流量信息

 tcpreplay -i eth1 -l 10000  -M50 http_192.168.36.163_10W.pcap
http://www.lryc.cn/news/59274.html

相关文章:

  • 面试题之vue的响应式
  • 聚焦弹性问题,杭州铭师堂的 Serverless 之路
  • NDK RTMP直播客户端二
  • Python3--垃圾回收机制
  • C/C++开发,认识opencv各模块
  • 【WLSM、FDM状态估计】电力系统状态估计研究(Matlab代码实现)
  • 准备2023(2024)蓝桥杯
  • 剑指 Offer 60. n个骰子的点数
  • 阿里巴巴-淘宝搜索排序算法学习
  • 〖Python网络爬虫实战⑮〗- pyquery的使用
  • SQL综合查询下
  • 全连接层FC
  • 图的遍历及连通性
  • DJ3-4 实时调度
  • Oracle之PL/SQL游标练习题(三)
  • docker运行服务端性能监控系统Prometheus和数据分析系统Grafana
  • 【Linux】【应用层】多线程编程
  • GameFramework 框架详解之 如何接入热更框架HybridCLR
  • 全国青少年软件编程(Scratch)等级考试二级考试真题2023年3月——持续更新.....
  • HTML2.1列表标签
  • 在 Flutter 多人视频通话中实现虚拟背景、美颜与空间音效
  • Ambari-web 架构
  • 对接百思买Best Buy EDI 的注意事项
  • 2023年郑州重点建设项目名单公布,中创“算力数据中心”项目入选!
  • Pytorch 容器 - 1. Module类介绍
  • 百度墨卡托坐标转化笔记
  • 每日学术速递4.12
  • HarmonyOS/OpenHarmony公司级技术开发团队硬件基本配置清单
  • 新一代信息技术赋能,安科瑞搭建智慧水务体系的新思路
  • 37岁测试工程师被裁,120天没找到工作,无奈...