周振林 周振林
首页
  • 前端文章

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • Spring
  • SpringMVC
  • Mybatis
  • 安装教程
  • 其他教程
  • 基础
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏

周振林

IT界的小学生
首页
  • 前端文章

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • Spring
  • SpringMVC
  • Mybatis
  • 安装教程
  • 其他教程
  • 基础
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏
  • 基础

  • 虚拟化

    • 虚拟化介绍
    • KVM介绍
    • 准备KVM实验环境
    • 启动第一个KVM虚拟机
    • 使用命令⾏模式创建虚拟机
    • KVM内存和CPU虚拟化原理
    • 远程管理KVM虚拟机
    • KVM存储虚拟化原理
    • KVM LVM类型的存储池
    • KVM网络虚拟化基础
    • KVM动手实践虚拟网络
      • 动手实践虚拟网络
        • 配置Linux Bridge br0
        • Ubuntu系统配置方式
        • CentOS系统配置方式
        • 配置 VM1
        • 配置 VM2
    • KVM理解virbr0
    • Linux 如何实现 VLAN
    • 动手实践 Linux VLAN
    • 云计算与 OpenStack
    • CentOS安装KVM
    • CentOS安装KVM虚拟机
    • KVM Libvirt 存储池
    • KVM网络配置
    • ESXI主机安装与配置
    • ESXI虚拟机安装
  • Docker

  • OpenStack

  • 心情杂货

  • 更多
  • 虚拟化
周振林
2025-03-21
目录

KVM动手实践虚拟网络

# 动手实践虚拟网络

doc9ba9f6e21ca74b288f4a34dba0102edc.webp

本节将演示如何在实验环境中实现下图所示的虚拟网络

doc24a2fc828b484638934b38f0e4ebc114.webp

# 配置Linux Bridge br0

# Ubuntu系统配置方式

  1. 编辑 Netplan 配置文件(永久生效) Netplan 的配置文件通常位于 /etc/netplan/ 目录下,文件名可能是 01-network-manager-all.yaml 或类似的名称。
sudo vim /etc/netplan/01-network-manager-all.yaml
1
  1. 配置网桥 假设你想将 ens33 网卡桥接到 br0,并通过 DHCP 获取 IP 地址。修改后的配置文件内容如下:
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    # 物理网卡配置
    ens33:
      dhcp4: no #禁用DHCP
      dhcp6: no

  bridges:
    br0:
      interfaces: [ens33]  # 将 ens33 添加到 br0
      dhcp4: yes           # br0 通过 DHCP 获取 IP 地址
      # 如果你想配置静态 IP,可以这样写:
      # addresses: [192.168.1.100/24]
      # gateway4: 192.168.1.1
      # nameservers:
      #   addresses: [8.8.8.8, 1.1.1.1]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  1. 应用配置 保存并退出文件后,使用以下命令应用配置:
sudo netplan apply
1
  1. 查看网桥配置 用 brctl show 查看当前 Linux Bridge 的配置。 ens33 已经挂到 br0 上了。
# brctl show

bridge name     bridge id      STP enabled     interfaces
桥名             网桥id          STP已启用        接口

br0           8000.000c298decbe   no            ens33
virbr0        8000.000000000000   yes           virbr0
1
2
3
4
5
6
7

除了 br0,大家应该注意到还有一个 virbr0 的 Bridge,而且 virbr0 上已经配置了 IP 地址 192.168.122.1。 virbr0 的作用我们会在后面介绍。

在宿主机中已经提前创建好了虚机 VM1 和 VM2,现在都处于关机状态

# virsh list --all

Id    Name                           StateID 姓名 国家

----------------------------------------------------

-     VM1                            shut off- VM1 关闭

-     VM2                            shut off- VM2 关闭
1
2
3
4
5
6
7
8
9

# CentOS系统配置方式

CentOS创建网桥方式

# 配置 VM1

下面我们在 virt-manager 中查看一下 VM1 的网卡配置(为了使大家能够熟练使用命令行工具 virsh 和图形工具 virt-manager,CloudMan 在演示的时候会同时用到它们,两个工具都很重要)

docb768200264484942bdfc9e6f3e93ae17.webp

可以看到虚拟网卡的 source device 我们选择的是 br0。下面我们启动 VM1,看会发生什么。

# virsh start VM1# virsh启动VM1

Domain VM1 started域VM1已启动


# brctl show

bridge name     bridge id      STP enabled     interfaces
桥名              网桥id         STP已启用         接口
br0            8000.000c298decbe    no          eth0 vnet0
virbr0         8000.000000000000    yes          virbr0
1
2
3
4
5
6
7
8
9
10
11

brctl show 告诉我们 br0 下面添加了一个 vnet0 设备,通过 virsh 确认这就是VM1的虚拟网卡。

# virsh domiflist VM1

Interface  Type       Source     Model       MAC
 接口      类型         源       模型         Mac
-------------------------------------------------------
vnet0      bridge     br0        rtl8139     52:54:00:75:dd:1a
1
2
3
4
5
6

VM1 的 IP 是 DHCP 获得的(设置静态 IP 当然也可以),通过 virt-manager 控制台登录 VM1,查看 IP。

# ifconfig

eth0   Link encap:Ethernet  HWaddr 52:54:00:75:dd:1a
eth0 链路封装:以太网HWaddr 52:54:00:75:dd:1a
      inet addr:192.168.111.106  Mask:255.255.255.0
inet address:192.168.111.106 Mask:255.255.255.0
      inet6 addr: fe80::5054:ff:fe75:dd1a/64
inet 6地址:fe 80::5054:ff:fe 75:dd 1a/64

1
2
3
4
5
6
7
8
9

VM1 通过 DHCP 拿到的 IP 是 192.168.111.106,与宿主机(IP为192.168.111.107)是同一个网段。Ping 一下外网。

root@VM1:~# ping www.baidu.comroot@VM1:~# ping www.baidu.com

from 180.97.33.108: icmp_seq=1 ttl=53 time=34.9 ms
来自180.97.33.108:icmp_seq=1 ttl=53时间=34.9 ms

1
2
3
4
5

没问题,可以访问。

另外,在 VM1 中虚拟网卡是 eth0,并不是 vnet0。 vent0 是该虚拟网卡在宿主机中对应的设备名称,其类型是 TAP 设备,这里需要注意一下。

# 配置 VM2

跟 VM1 一样,VM2 的虚拟网卡也挂在 br0上,启动 VM2,查看网卡信息。

# virsh start VM2 # virsh启动VM2

Domain VM2 started 域VM2已启动


# brctl show

bridge name     bridge id        STP enabled     interfaces
桥名             网桥id            STP已启用         接口

br0           8000.000c298decbe     no              eth0 vnet0 vnet1

virbr0        8000.000000000000     yes             virbr0
1
2
3
4
5
6
7
8
9
10
11
12
13

br0 下面多了 vnet1,通过 virsh 确认这就是 VM2 的虚拟网卡。

# virsh domiflist VM2

Interface  Type       Source     Model       MAC
接口       类型         源        模型       Mac
-------------------------------------------------------
vnet1      bridge     br0        rtl8139     52:54:00:cf:33:a1
1
2
3
4
5
6

VM2 通过 DHCP 拿到的 IP 是 192.168.111.108,登录 VM2,验证网络的连通性,Ping VM1。

root@VM2:~# ping VM1root@VM2:~# ping VM1

from 192.168.111.106: icmp_seq=1 ttl=64 time=4.54 ms
来自192.168.111.106:icmp_seq=1 ttl=64时间=4.54 ms

1
2
3
4
5

Ping 宿主机。

root@VM2:~# ping 192.168.111.107root@VM2:~# ping 192.168.111.107

from 192.168.111.107: icmp_seq=1 ttl=64 time=1.02 ms
来自192.168.111.107:icmp_seq=1 ttl=64时间=1.02 ms

1
2
3
4
5

Ping 外网。

root@VM2:~# ping www.baidu.comroot@VM2:~# ping www.baidu.com

from 180.97.33.107: icmp_seq=1 ttl=53 time=53.9 ms
来自180.97.33.107:icmp_seq=1 ttl=53时间=53.9 ms

1
2
3
4
5

可见,通过 br0 这个 Linux Bridge,我们实现了 VM1、VM2、宿主机和外网这四者之间的数据通信。

下节我们讨论 virbr0。

Last Updated: 2025/12/02, 11:22:00
KVM网络虚拟化基础
KVM理解virbr0

← KVM网络虚拟化基础 KVM理解virbr0→

最近更新
01
查询优化N+1
12-02
02
项目代码组织方式
12-02
03
Mybatis分页插件
12-02
更多文章>
Copyright © 2019-2025 鲁ICP备19032096号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×