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

【Day 82】虚拟化-虚拟网络

一、虚拟网卡

1、虚拟网卡驱动

驱动类型虚拟化方式核心特性性能适用场景特殊要求
rtl8139全虚拟化模拟 Realtek RTL8139 硬件,完全兼容物理网卡行为较差(模拟开销大)老旧系统(如 Windows XP、早期 Linux)、兼容性优先场景无(系统自带驱动)
e1000全虚拟化模拟 Intel 千兆网卡,功能更完善(支持千兆速率)中等(优于 rtl8139)无法使用 virtio 但需要较好性能的场景(如 Windows 桌面版)无(系统自带驱动)
virtio(virtio-net)半虚拟化基于 virtio 协议直接通信,跳过硬件模拟,依赖前后端驱动协作最优(接近物理网卡)生产环境、高带宽 / 低延迟场景(服务器、数据库、高并发服务)Linux 内核≥2.6.25 默认支持;Windows 需手动安装驱动

(1)软件虚拟化驱动:rtl8139

  • 特性:完全模拟 Realtek RTL8139 网卡硬件,属于全虚拟化驱动,无需在虚拟机内安装额外驱动(主流操作系统如 Windows、Linux 默认自带驱动)。

  • 适用场景:兼容性优先的场景(如老旧操作系统、无法安装 virtio 驱动的环境)。

  • 缺点:性能较差(模拟硬件开销大),不适合高带宽、低延迟需求。

(2)模拟 Intel 千兆网卡的全虚拟化驱动:e1000 

  • 特性:兼容性强(主流系统自带驱动,即插即用),性能中等(比 rtl8139 好,不如 virtio)。

  • 适用场景:系统不支持 virtio 但需要比 rtl8139 好的性能(如老旧 Windows、快速部署测试环境)。

  • 前提:虚拟机系统内置 e1000 驱动(几乎所有现代系统都满足),KVM 环境默认支持。

(3)半虚拟化驱动:virtio

  • 特性:基于半虚拟化技术,虚拟机与宿主机通过 virtio 协议直接通信,跳过硬件模拟层,性能接近物理网卡。

  • 适用场景:对网络性能要求高的场景(如服务器、数据库、高并发服务)。

  • 前提:需在虚拟机内安装 virtio 驱动(Linux 内核通常自带,Windows 需手动安装)。

2、添加网卡

(1)命令行

# 临时添加网卡(重启虚拟机后失效)
virsh attach-interface vm01_centos79 --type network --model virtio --source default# 永久添加网卡(写入虚拟机配置文件)
virsh attach-interface vm01_centos79 --type network --model virtio --source default --persistent# 验证添加结果
virsh domiflist vm01_centos79

(2)图形

3、查看网卡

4、删除网卡

[root@sul ~] virsh detach-interface kvm_cenos_002 --type network  --mac  52:54:00:02:b8:
# 成功分离接口[root@sul ~] virsh detach-interface kvm_cenos_002 --type network  --mac  52:54:00:85:80:
# 成功分离接口[root@sul ~]# virsh domiflist kvm_cenos_002 
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      network    default    virtio      52:54:00:d3:b3:25

二、虚拟网络

1、查看网络

# 查看网络
virsh net-list --all
# 查看网络配置文件
[root@sul ~] virsh net-dumpxml default 
<network connections='5'> # 表示当前名为 default 的虚拟网络,有 5 台虚拟机 正在连接使用。<name>default</name>  # 虚拟网络的名称为 default(KVM 默认虚拟网络的固定名称)。<uuid>7e0702eb-64eb-46f9-a0de-2ff1ce1609f9</uuid> # 虚拟网络的唯一标识(UUID),用于在 KVM 内部区分不同虚拟网络。<forward mode='nat'><nat>  # 定义虚拟网络的转发模式为 nat(网络地址转换<port start='1024' end='65535'/>  # 宿主机将使用 1024-65535 端口为虚拟机提供端口转换服务</nat></forward><bridge name='virbr0' stp='on' delay='0'/> # 虚拟网络对应的 虚拟网桥 名称为 virbr0
# (宿主机上会生成一个名为 virbr0 的虚拟网卡,作为虚拟网络的 “交换机”)。
# stp='on':启用生成树协议(防止虚拟网络内出现环路)。
# delay='0':网桥启动时的延迟时间为 0(立即生效)。<mac address='52:54:00:5f:33:09'/>  # 虚拟网桥 virbr0 的 MAC 地址(虚拟网卡的硬件地址)。<ip address='192.168.122.1' netmask='255.255.255.0'># 虚拟网络的网关 IP 地址为 192.168.122.1(即宿主机上 virbr0 网卡的 IP),子网掩码为 255.255.255.0,对应子网为 192.168.122.0/24。<dhcp><range start='192.168.122.2' end='192.168.122.254'/></dhcp>
# 虚拟网络内置了 DHCP 服务,自动为连接的虚拟机分配 IP 地址,分配范围是 192.168.122.2 到 192.168.122.254。
# 这也是为什么连接 default 网络的虚拟机,默认会自动获取到该网段的 IP。</ip>
</network>

2、NAT 模式

(1)SNAT 配置(实现虚拟机访问外网)

工作流程:当虚拟机访问外网(如ping 8.8.8.8)时:

  1. 虚拟机将请求发送到网关192.168.122.1(宿主机的virbr0网桥)。
  2. 宿主机通过 IP 转发功能,将请求从virbr0转发到物理网卡(如ens33)。
  3. 宿主机的 SNAT 规则自动将虚拟机的私有 IP(如192.168.122.122)转换为物理网卡的公网 / 物理网段 IP(如192.168.140.111)。
  4. 外网响应通过宿主机物理网卡接收,再经 NAT 反向转换后,转发回虚拟机。

    总结

    ① 虚拟机上要有网关 

    ② 物理机上要有路由的转发

    ③ 物理机上要有NAT的转换

    iptables -t nat -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE# 确认 IP 转发开启
    echo 1 > /proc/sys/net/ipv4/ip_forward
    # 永久开启(重启生效)
    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p
    # 查看KVM默认NAT网络配置
    virsh net-dumpxml default# 手动配置SNAT规则(若默认规则丢失)
    # 物理机公网网卡假设为ens33,虚拟网络子网为192.168.122.0/24
    iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -o ens33 -j MASQUERADE# 保存iptables规则(CentOS 7)
    service iptables save
    

    (2)DNAT 端口映射(实现外网访问虚拟机)

    # 将物理机80端口映射到虚拟机192.168.122.101的80端口
    iptables -t nat -I PREROUTING -d 192.168.140.111 -p tcp --dport 80 -j DNAT --to-destination 192.168.122.253:80# 将物理机55555端口映射到虚拟机192.168.122.101的22端口(SSH)
    iptables -t nat -I PREROUTING -d 192.168.140.111 -p tcp --dport 55555 -j DNAT --to-destination 192.168.122.253:22# 允许端口通过防火墙
    firewall-cmd --add-port=80/tcp --permanent
    firewall-cmd --add-port=55555/tcp --permanent
    firewall-cmd --reload# 查看已配置的NAT规则
    iptables -t nat -L PREROUTING --line-numbers
    

    3、桥接模式(bridge)

    ① 物理机地址必须是静态地址

    ② 物理机关闭networkmanager服务

    (1)前提准备

    # 1. 关闭NetworkManager服务(避免冲突)
    systemctl stop NetworkManager
    systemctl disable NetworkManager# 2. 确保物理机网卡(如ens33)配置为静态IP(后续会迁移到网桥)
    

    (2)创建网桥

    # 自动创建网桥br1并绑定物理网卡ens33(会自动修改网络配置)
    virsh iface-bridge ens33 br1# 查看网桥状态
    ip addr show br1
    ip link show br1  # 确认状态为UP# 查看物理网卡状态(确认已绑定到网桥)
    ip addr show ens33
    

    (3)手动配置网桥(若自动配置失败)

    # 创建网桥配置文件
    cat > /etc/sysconfig/network-scripts/ifcfg-br1 << EOF
    DEVICE="br1"
    ONBOOT="yes"
    TYPE="Bridge"
    BOOTPROTO="none"
    IPADDR="192.168.140.200"
    NETMASK="255.255.255.0"
    GATEWAY="192.168.140.2"
    STP="on"  # 启用生成树协议,防止环路
    DELAY="0"  # 网桥启动延迟
    EOF# 配置物理网卡绑定到网桥
    cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF
    DEVICE="ens33"
    ONBOOT="yes"
    BRIDGE="br1"  # 绑定到网桥br1
    TYPE="Ethernet"
    BOOTPROTO="none"  # 由网桥分配IP,物理网卡无需IP
    EOF# 重启网络服务
    systemctl restart network
    

    (4)虚拟机绑定网桥

    # 为虚拟机添加桥接模式网卡(永久生效)
    virsh attach-interface vm01_centos79 --type bridge --model virtio --source br1 --persistent# 验证网卡配置
    virsh domiflist vm01_centos79
    

    4、隔离模式(私有网络)

    # 创建隔离模式虚拟网络(仅虚拟机内部通信,不连接物理网络)
    virsh net-define << EOF
    <network><name>isolated</name><bridge name='virbr1' stp='on' delay='0'/><ip address='192.168.100.1' netmask='255.255.255.0'/>
    </network>
    EOF# 启动隔离网络并设置开机自启
    virsh net-start isolated
    virsh net-autostart isolated# 为虚拟机添加隔离网卡
    virsh attach-interface vm01_centos79 --type network --model virtio --source isolated -
    http://www.dtcms.com/a/519968.html

    相关文章:

  1. 哈尔滨口碑好的建站公司佛山招收网站设计
  2. 【Linux基础知识系列:第一百五十一篇】启动加载器GRUB配置
  3. 2025 前端框架决战:Vue 与 React 分析优缺点及使用场景!
  4. 频繁读写文件,page cache不及时释放的后果
  5. 网站不同网站建设归工商局管还是工信局管
  6. Java 虚拟线程(Virtual Threads)正式落地!Spring Boot 如何拥抱 Project Loom?
  7. 石家庄网站开发工程师招聘网优秀包装设计案例
  8. iOS 混淆工具链实战 多工具组合完成 IPA 混淆与加固 无源码混淆
  9. win10桌面windows bing图标如何删除
  10. Gin笔记一之项目建立与运行
  11. JSON 核心知识点
  12. precompilation-headers 以及在cmake中的实现
  13. php做的网站用什么后台ui设计是怎么实现的
  14. 怎么建设宣传网站网页制作公司兼职
  15. llama.cpp批处理选择不同模型启动
  16. 《从零构建企业级 Java+DeepSeek 智能应用:SpringBoot/Vert.x 双引擎实战,打造热榜级 AI 开发指南》
  17. 【存储概念】存储系统中块设备、分区、文件系统的概念及关系
  18. (第二篇)Spring AI 基础入门:从环境搭建到模型接入全攻略(覆盖国内外模型 + 本地部署)
  19. 容器适配器:Stack与Queue的底层奥秘
  20. 2025年10月23日Github流行趋势
  21. 上海外贸网站建设公司价格做兼职设计去哪个网站
  22. 免费效果图网站wordpress分类目录导航
  23. 【完整源码+数据集+部署教程】【运动的&足球】足球比赛分析系统源码&数据集全套:改进yolo11-RFAConv
  24. YARN简介
  25. PSO-Transformer-BiLSTM分类预测/故障诊断,优化参数为注意力机制头数、学习率、正则化系数、隐藏层单元,图很多,包括分类效果图,混淆矩阵图
  26. AJAX 知识
  27. 做淘宝推广开网站合适全球最大的设计网站
  28. Java-157 MongoDB 存储引擎 WiredTiger vs InMemory:何时用、怎么配、如何验证 mongod.conf
  29. 详细-vue3项目初始化配置流程
  30. 电子科技网站太原seo排名