【云计算 | Openstack】KVM虚机通过Linux网桥连接外网

1. 背景

上文 中的虚机使用了基于Linux网桥的虚拟网卡,xml文件中关于interface的定义如下

#添加网络配置,基于网桥
   <interface type=bridge>
    <source bridge=br0/>
    <target dev=vnet1/>
    <alias name=net1/>
    <address type=pci domain=0x0000 bus=0x00 slot=0x03 function=0x0/>
   </interface>

其网络架构如下图所示

对应到vmware虚机(kvm虚机的宿主机)里,如下图

    ens33:vmware虚机的网卡,类似物理机的物理网卡,用于连接外网。其ip地址是向无线路由器发起dhcp请求动态获取 vnet1:kvm虚机在Linux网桥上对应的端口 vnet2:kvm虚机在Linux网桥上对应的端口

现在需求是让kvm虚机能够访问外网,本文围绕这点展开试验

2. 实践

整体思路就是让物理网卡ens33也挂载到Linux网桥br0上,使kvm虚机能通过dhcp获取到无线路由器分配的ip地址,其网络架构图如下

1、首先通过命令brctl addif br0 ens33给网桥添加物理网卡ens33 2、通过dhclient br0让网桥br0获取外部地址 3、通过ip a del 172.16.27.77/20 dev ens33删除网卡ens33的地址(这个地址如果不删除,可能存在一些网络问题。网上有说如果物理网卡加入了网桥,就相当于网桥上的一个端口,类似vnet1和vnet2,仅用来连接对端,所以可以不用配地址。至于原理尚不明晰,欢迎留言指出)

4、获取kvm虚机的vnc端口,通过vncviewer :port进入kvm虚机

5、通过dhclient ens3获取地址(此处网卡ens3已设置为开机自启并通过dhcp获取地址,所以如果重启虚机也可以直接获取地址)

6、测试kvm虚机能否上外网

3. 总结

    kvm虚机采用基于Linux网桥的虚拟网卡时,可以将宿主机的物理网卡添加到Linux网桥,从而打通kvm虚机的外部网络
经验分享 程序员 微信小程序 职场和发展