环境:
os:centos7
前文 【云计算 | OpenStack】从零开始使用libvirt创建一个kvm虚机 中的虚机使用的是基于Linux网桥的虚拟网卡,如下xml文件中的定义
#添加网络配置,基于网桥
<interface type='bridge'>
<source bridge='br0'/>
<target dev='vnet1'/>
<alias name='net1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
interface>
那如何给这个虚拟网卡自动分配地址呢?今天围绕这个话题展开实践
整体思路就是使用dnsmasq作为DHCP服务端,监听来自网桥br0的DHCP请求;同时修改KVM虚机中虚拟网卡配置信息,使其开机自启并发起DHCP请求。
Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度;作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由
1、首先使用yum install -y dnsmasq安装dnsmasq
2、修改配置文件/etc/dnsmasq.conf
interface=br0
dhcp-range=192.168.1.70,192.168.1.70,12h
interface=br0:表示DHCP服务器监听的接口dhcp-range=192.168.1.70,192.168.1.70,12h :表示dhcp地址池是192.168.1.70(这里地址池仅有一个地址,方便后续观察kvm虚机获取到的地址),12h表示地址释放的时间
注:dnsmasq的配置文件过滤掉空行和注释如上图,最后一行配置项conf-dir是默认的,这里我们就不动它
3、重启dnsmasq服务

4、确保Linux网桥已分配地址,这里br0的地址是通过配置文件生成的静态ip


BOOTPROTO=dhcp:表示该虚拟网卡通过dhcp动态获取地址ONBOOT=yes:表示该虚拟网卡在os启动时自动激活1、直接kvm虚机内reboot,待系统启动后,查看虚拟网卡的ip,其地址正好是dhcp地址池内唯一的地址192.168.1.70

2、从vmware虚机中ping kvm虚机,可以正常ping通

dnsmasq作为kvm虚机的dhcp服务器,监听网桥,当kvm虚机发起dhcp请求时,可以动态获取ip地址image单独保存,此后复制该image重新拉起一个kvm虚机时,就可以不用再修改虚拟网卡的配置文件了