KVM网络桥接模式解说

在上一篇博客中,我画了一张图来解说桥接模式下kvm的网络是什么样子的。那今天我就仔细来解释一下这方面的内容,让大家学会配置桥接网络。

还是这样的一张图,我们知道bridge就是桥接网卡的名称。让虚拟机在桥接模式下联网,没有它是实现不了的,更实现不了虚拟机与物理机的网络环境并相结合。

桥接模式的物理网卡也只能有一个,我自己在做实验搭环境的时候把他命名为br0,实际上桥接模式下的虚拟机与物理机保持通信的时候,也就依靠这一张网卡来实现。早期的网桥其实也就是二层交换机(这种交换机没有路由功能),仅仅负责把虚拟机的网络信号转发到同一个网段的其他的主机。

我画了下面的这样的一张图来表示桥接实现的过程。可以看出来,不管多少个虚拟机,他们使用的都是同一个网卡br0。他们都在同一个局域网内,不管是物理机还是虚拟机都各自拥有独立的IP。说到这里大家可能对虚拟机的桥接有了稍微的认识,那我们再来看看具体是怎么实现的:

在我安装了3台虚拟机之后,结果如下图所示:

 

你会发现原来的物理网卡eth0(centos7上是ens33)的IP不显示了,改换成了br0,这是因为在桥接下,br0桥接网卡绑定了物理网卡eth0,这说白了就是在桥接模式下,br0就是物理网卡eth0,此时我们看到的br0网卡上的172.16.0.50这个IP地址,就是物理网卡eth0的地址。感觉很神奇。可能你还会有疑问,那么下面的virbr0和vnet0等等又是什么呢?

 在上面的网卡信息中,以“vir”开头的网卡是NAT模式下的网卡信息,nat模式下自己又路由出来了一个网段的ip。nat是负责做转发的。与物理机不在同一个网络环境中。我们这里不对nat模式的网卡做过多说明,大家可以自己百度看看。而接下来的虚拟网卡vnet0、vnet1是很重要的设备。这些设备代表着一个个的虚拟机的网卡。大家可能有疑问,他怎么看不到IP呢?

通过这张图,你可以看出,vnet0是与第一台虚拟机的的网卡eth0绑定在一起的,vnet2是与第二台虚拟机的网卡eth0绑定在一起的。实际上在桥接网络中,网桥br0并不是直接与虚拟机的网卡eth0进行通信,中间需要一个虚拟网卡vnet#(此处的#表示数字序号)来进行通信。但是我们在物理机上又是看不到vnet#的ip地址信息的,这是因为虚拟机的ip地址信息是要在虚拟机里面来查看的,在物理上机上是看不到的。但是vnet#这中虚拟网卡是必不可少的,比如br0离开了ens33照样不能存活,同样的道理,虚拟机里面的eth0网卡离开了vnet#也照样不能通信。所以说在虚拟机里面配置网卡有时候也要考虑vnet#。如何配置呢?有几点大家要明白。

1、虚拟网卡vnet#是创建虚拟机的时候自动创建的。我们要做的就是将br0关联到虚拟网卡vnet#上。

2、虚拟网卡vnet#,#代表数字序号,比如0,1,2,3.....这个顺序是你先后创建虚拟机的次序排出来的,从0开始计数。

3、一般上,我们创建虚拟机好之后,无需关心vnet#虚拟网卡。你只要在虚拟机里面配置网卡eth0即可,这样就可以上网了。、

但是有些情况下,比如物理机网络故障了,这时候你再重启物理网卡,会对虚拟机的网络造成影响。这是因为br0没有与vnet#绑定的缘故,此时你需要重启虚拟机来解决,但是我们不可能总是重启虚拟机,很麻烦。所以你需要设置vnet#来达到上网的目的。

在安装好虚拟机的时候,输入以下命令:你会看到网络是这样子的:

在interfaces上,你会看到一个物理网卡eth0和三个虚拟网卡vnet0、vnet1、vnet2,我这里是按照了三台虚拟机。这就是正常的网络情况。但是如果网络出现故障不正常的话,比如我重启一下物理网卡,那么此时虚拟机也上不去网了,而且你也看不到后面的vnet#这些虚拟网卡,此时你应该这样做,就是重新将br0绑定到vnet#(interfaces)上。

网桥配置命令brctl:

1)查看网桥连接状况

[root@centos6-chaofeng ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.00e04a682faf    no            eth0
                                        vnet0
                                        vnet1
                                        vnet2
virbr0        8000.525400dd5574    yes        virbr0-nic

2)添加接口

#brctl addif br0 vnet0

这个命令就是将br0绑定到vnet0。这时我们就可以好好的上网了。

关于这个命令的使用还有许多需要我们了解的,所以我们往后还要继续研究。 

转载于:https://www.cnblogs.com/FengGeBlog/p/10452700.html

Ubuntu KVM 虚拟机可以通过桥接模式实现网络连接。桥接模式允许虚拟机直接与物理网络中的其他设备进行通信,就像虚拟机是物理网络中的一台独立计算机一样。 要配置桥接模式,首先需要确保主机上安装了 bridge-utils 软件包。可以使用以下命令安装: ```bash sudo apt-get install bridge-utils ``` 安装完成后,可以按照以下步骤进行配置: 1. 打开 `/etc/network/interfaces` 文件,并添加以下内容: ``` auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 ``` 这里的 `eth0` 应该替换为你主机上的物理网卡接口名。 2. 保存并关闭 `/etc/network/interfaces` 文件。 3. 编辑虚拟机的 XML 配置文件(通常位于 `/etc/libvirt/qemu/虚拟机名称.xml`),并将 `<interface type='network'>` 部分修改为以下内容: ```xml <interface type='bridge'> <mac address='xx:xx:xx:xx:xx:xx'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> ``` 这里的 `br0` 应该与上一步中配置的桥接接口名称匹配。 4. 保存并关闭虚拟机 XML 配置文件。 5. 重启 libvirtd 服务: ```bash sudo systemctl restart libvirtd ``` 完成以上步骤后,虚拟机就能够通过桥接模式与物理网络进行通信了。请确保在配置桥接模式之前备份相关文件,以防止配置错误造成网络连接问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值