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

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • 学习笔记

    • 《JavaScript教程》
    • 《ES6 教程》
    • 《TypeScript》
    • 《Vue》
    • 《Git》
    • 《小程序笔记》
    • 《JS设计模式总结笔记》
  • 规范
  • Spring
  • 安装教程
  • 其他教程
  • 归真医学
  • 常用药材
  • 学习笔记
  • 经方学习心得
  • 基础
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏
  • 分类
  • 标签
  • 归档

周振林

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

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • 学习笔记

    • 《JavaScript教程》
    • 《ES6 教程》
    • 《TypeScript》
    • 《Vue》
    • 《Git》
    • 《小程序笔记》
    • 《JS设计模式总结笔记》
  • 规范
  • Spring
  • 安装教程
  • 其他教程
  • 归真医学
  • 常用药材
  • 学习笔记
  • 经方学习心得
  • 基础
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏
  • 分类
  • 标签
  • 归档
  • 基础

  • 虚拟化

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

  • OpenStack

  • 心情杂货

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

KVM动手实践虚拟网络

# 动手实践虚拟网络

doc9ba9f6e21ca74b288f4a34dba0102edc.webp

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

doc24a2fc828b484638934b38f0e4ebc114.webp

# 配置Linux Bridge br0

# Ubuntu系统配置方式

编辑 /etc/network/interfaces,配置 br0。下面用 vmdiff 展示了对 /etc/network/interfaces 的修改。

doc52acfe78f2ca4301b678ba6e51726e39.png

有两点需要注意:

  1. 之前宿主机的 IP 是通过 dhcp 配置在 eth0 上的;创建 Linux Bridge 之后,IP 就必须放到 br0 上了。
  2. 在 br0 的配置信息中请注意最后一行 “bridge_ports eth0”,其作用就是将 eth0 挂到 br0 上。

重启宿主机,查看 IP 配置,可以看到 IP 已经放到 br0 上了。

# ifconfig

br0    Link encap:Ethernet  HWaddr 00:0c:29:8d:ec:be
br0 链接封装:以太网HWaddr 00:0c:29:8d:ec:be
      inet addr:192.168.111.107  Mask:255.255.255.0
inet address:192.168.111.107 Mask:255.255.255.0
      inet6 addr: fe80::20c:29ff:fe8d:ecbe/64 
inet 6地址:fe 80::20 c:29 ff:fe 8d:ecbe/64


eth0  Link encap:Ethernet  HWaddr 00:0c:29:8d:ec:be
eth0 链接封装:以太网HWaddr 00:0c:29:8d:ec:be
      inet6 addr: fe80::20c:29ff:fe8d:ecbe/64 
inet 6地址:fe 80::20 c:29 ff:fe 8d:ecbe/64

 
lo  Link encap:Local Loopbacklo 标签:Local Loopback
    inet addr:127.0.0.1  Mask:255.0.0.0
inet address:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Hostinet 6 addr:1/128作用域:主机


virbr0 Link encap:Ethernet  HWaddr 72:db:fb:f2:19:91
virbr 0 Link encap:Ethernet HWaddr 72:db:fb:f2:19:91
       inet addr:192.168.122.1  Mask:255.255.255.0
inet address:192.168.122.1 Mask:255.255.255.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

用 brctl show 查看当前 Linux Bridge 的配置。 eth0 已经挂到 br0 上了。

# brctl show

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

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

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

在宿主机中 CloudMan 已经提前创建好了虚机 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/06/18, 08:59:15
KVM网络虚拟化基础
KVM理解virbr0

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

最近更新
01
Docker安装
06-10
02
Docker运行JAR
06-10
03
Docker部署MySQL
06-10
更多文章>
Copyright © 2019-2025 鲁ICP备19032096号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式