在使用qemu创建虚拟机的过程中是无法指定IP地址的,可是在实际应用中,我们是需要虚拟机拥有IP地址的,并且不是人为去虚拟机操作系统上配置。在qemu虚拟机技术文档(http://qemu.weilnetz.de/qemu-doc.html#pcsys_005fmonitor)里捣鼓了好久,发现在给虚拟机创建虚拟网卡时可以指定MAC地址,顿时眼前大亮:如果可以给一个虚拟机网卡唯一指定一个MAC地址,那么我就可以通过配置DHCP来实现MAC地址与IP地址之间的唯一映射,这样指定MAC地址,也就相当于指定了IP地址。现在的问题就是如何配置DHCP服务器的问题了。

DHCP的配置

本人所使用的服务器是Red Hat Enterprise Linux 6.2,DHCP的安装这里就不介绍了,网上大把大把的,这里只说明下检测服务器上是否安装了DHCP的命令:

rpm -qa | grep dhcp

上述命令如果有输出,就说明服务器上已经安装了DHCP。

DHCP服务的配置文件默认为:在/etc/dhcp/dhcpd.conf(好像linux早期的版本DHCP配置文件是在/etc/dhcpd.conf,所以这里要注意)。DHCP是通过其配置文件启动的,如果配置文件中的所有配置正确,就能正常启动DHCP服务。如果是新手,建议直接使用DHCP安装文件里包含的配置文件,并在其基础上进行修改,这样可以避免很多不必要的错误,我当时就是自己按照网上的一些例子来写配置文件,结果让我吃了不少苦头。使用如下命令拷贝配置文件的模版:

cd /etc/dhcp/

cp /usr/share/doc/dhcp-3.0pl1/dhcpd.conf.sample dhcpd.conf //复制配置文件模板

vim /etc/dhcp/dhcpd.conf //使用vi修改/etc/dhcpd.conf

配置的目的就是要将MAC地址与某些特定的IP绑定起来,为了更加理解DHCP,如下列出了DHCP的工作原理:

假设多部计算机在同一个网域当中,也就是说,DHCP Server与它的Clients都在同一个网段之内,可以透过软件广播的方式来达到相互沟通的状态。那么Client藉由DHCP Server得到的IP的程序为:

1、若Client端计算机设定使用DHCP协议以取得网络参数时,则Client端计算机在开机的时候,或者是重新启动网卡的时候,会自动地发出DHCP Client的需求给网域中的每部计算机;这个时候,由于发出的讯息希望每部计算机都可以接受,所以该讯息除了网卡的硬件地址(MAC)无法改变外,需要将该讯息的来源软件设定为0.0.0.0,而目的地址则为255.255.255.255(linux会自动设置)。网域中的其它没有提供DHCP服务的计算机,收到这个封包之后会自动地将该封包丢弃而不回应。

2、DHCP主机响应讯息:如果是DHCP主机收到这个Client的DHCP需求时,那么DHCP主机首先会针对该次需求的讯息所携带的MAC和DHCP主机本身的设定值去比对,如果DHCP主机的设定有针对该MAC做静态IP(每次都给予一个固定的IP)的提供时,则提供Client端相关的固定IP于相关的网络参数;而如果该讯息的MAC并不在DHCP主机的设定之内时,则DHCP主机会选取目前网域内没有使用的IP(这个IP与设定值有关)来发放给client端使用。

3、Client端接受来自DHCP主机的网络参数,并设定Client自己的网络环境:当Client端接受响应的讯息之后,首先会以ARP封包在网域内发出讯息,以确定来自DHCP主机发放的IP并没有被占用。如果该IP已经被占用了,那么Client对于这次的DHCP信息将不接受,而将再次向网域内发出DHCP的需求广播封包;若该IP没有被占用,则client可以接受DHCP主机所给的网络的参数,那么这些参数将会被使用于client端的网络设定当中,同时,Client端也会对DHCP主机发出确认封包,告诉server这次的需求已经被确认,而server也会将该信息记录下来。

4、Client端结束该IP的使用权:当Client开始使用这个DHCP发放的IP之后,有几个情况可能会失去这个IP的使用权:Client端离线(不论是关闭网络接口、重新开机、关机等行为,皆算是离线状态,这个时候server端就会将该IP回收,并放到server自己的备用区中,等待未来使用);Client端租约到期(DHCP server端发放的IP有其使用的期限,Client使用这个IP到达期限规定的期限,Client使用这个IP到达期限规定的时间,就需要将IP还回去,这个时候就会造成断线,而client也可以再向DHCP主机要求再次分配IP地址)。

如下是我根据DHCP的配置文件模版写的一个配置文件,其中实现了将MAC地址:66:66:66:66:66:0b与IP地址:192.168.0.88之间的绑定。可根据自己的需要实现更多MAC地址与IP之间的绑定。

# dhcpd.conf

#

# Sample configuration file for ISC dhcpd

#

# Use this to enble / disable dynamic dns updates globally.

ddns-update-style none;

ignore client-updates;

# If this DHCP server is the official DHCP server for the local

# network, the authoritative directive should be uncommented.

#authoritative;

# Use this to send dhcp log messages to a different log file (you also

# have to hack syslog.conf to complete the redirection).

#log-facility local7;

# No service will be given on this subnet, but declaring it helps the

# DHCP server to understand the network topology.

# This is a very basic subnet declaration.

# A slightly different configuration for an internal subnet.

subnet 192.168.0.0 netmask 255.255.255.0 {

range 192.168.0.30 192.168.0.39;

option domain-name-servers 192.168.0.31;

option domain-name "wan.hust.china";

option routers 192.168.0.1;

option broadcast-address 192.168.0.255;

default-lease-time 21600;

max-lease-time 43200;

host pc001 {

hardware ethernet 66:66:66:66:66:0b;

fixed-address 192.168.0.88;

}

}

启动DHCP服务的命令如下所示:

service dhcpd start #启动DHCP服务

service dhcpd status #查看DHCP状态

如果想要开始自启动DHCP服务,可以使用如下命令:

chkconfig --level 345 dhcpd on

至此DHCP配置完成。

QEMU-KVM虚拟机创建设置

现在就可以通过在创建虚拟机时指定MAC地址来间接指定IP地址了:

/usr/local/qemu-kemari-v0.2.14/bin/qemu-system-x86_64 -m 1024 /images/test2.img -net nic,mac=66:66:66:66:66:0b -net tap,ifname=tap1,script=/etc/qemu-ifup,downscript=no -vnc :6 -enable-kvm

打开虚拟机查看虚拟机的网卡信息,就可以看到虚拟机的IP地址已配置好了。

linux kvm dhcp配置,《转》QEMU-KVM创建虚拟机自动指定IP的配置相关推荐

  1. pppoe服务器虚拟机,Hyper-V 批量建立虚拟机自动改IP并配置PPPOE拨号

    PowerShell 批量建立虚拟机:centos #---------------------------批量建立虚拟机脚本20190314--------------------- #虚拟机存放路 ...

  2. Docker创建容器时指定IP

    Docker创建容器时指定IP --net extnetwork --ip 172.10.0.2

  3. 秒级快速批量创建kvm虚拟机并指定IP地址和主机名

    1. 说明 kvm比起vmware来说最没有的功能就是用模板部署虚拟机的时候可以自定义ip地址,这对于大量创建vm的场景来说你需要一台台vnc的登录改动ip,显然是很累的,最近我就遇到这种场景(大型的 ...

  4. 【渗透测试】Lin.Security靶机渗透练习_虚拟机无法获取ip的配置方法+靶机多种提权方式练习

    靶机描述:在in.security,我们希望开发一个Linux虚拟机,该虚拟机在编写本文时基于最新的Ubuntu发行版(18.04 LTS),但存在许多漏洞,这些漏洞使用户无法升级扎根在盒子上.旨在帮 ...

  5. 虚拟机nat固定IP上网配置

    今天看了这个博文,按照配置,达到了想要的结果.非常棒!!! http://suifu.blog.51cto.com/9167728/1742603 转载于:https://blog.51cto.com ...

  6. 不同网段通过静态路由实现互通,华为S5700交换机开启SSH远程指定IP登陆配置(强烈推荐)

    首先,不同网段通过静态路由实现互通配置方法,参考不同网段通过静态路由实现互通 在以上基础上,还需要配置 一.配置S5700交换机. 1.交换机开启stelnet服务 <Huawei>sys ...

  7. 不同网段通过静态路由实现互通,华为S5700交换机开启telnet远程指定IP登陆配置(强烈推荐)

    首先,不同网段通过静态路由实现互通配置方法,参考不同网段通过静态路由实现互通 在以上基础上,还需要配置 一.配置S5700交换机. 1.交换机开启Telnet服务 <Huawei>syst ...

  8. nginx配置本地地址映射域名以及域名转发指定ip

    首先安装nginx,参加博客:https://www.cnblogs.com/qfb620/p/5508468.html 按照博客写的访问127.0.0.1查看是否访问成功,成功即安装成功. 下一步就 ...

  9. Android Studio创建虚拟机选定指定位置

    1.新建系统变量:ANDROID_SDK_HOME // 指定位置 2.重启计算机即可

最新文章

  1. 加快tensorflow模型预测速度
  2. LiveVideoStack线上分享第三季(十):Flutter浪潮下的音视频研发探索
  3. mysql多实例主从_window 下 mysql 单机多实例以及主从同步
  4. WWW软件全球使用排名
  5. 接口的抽象与实现(概述)
  6. github和pypi_如何将GitHub用作PyPi服务器
  7. java生成动态验证码_java动态生成验证码
  8. ddd领域驱动设计_领域驱动设计(DDD)理论启示
  9. 冷知识 —— 计算机科学及编程
  10. mysql游标嵌套游标_mysql游标嵌套循环
  11. 【机器学习 基本概念】马尔可夫链
  12. 朱淑真 潸然看断梨花落
  13. “一晚上” 拿到阿里offer的详细准备经历
  14. STM32F03学习笔记之ADC配置(含DMA配置)
  15. 【 第一章:初识 ts】
  16. 压力换算公斤单位换算_压力单位转换器_压力换算器 百分百好站
  17. 郑州龙发装饰公司告诉您:装修为什么要选择装
  18. 格式化GridView 数字0和1转换为男女 及更复杂的处理
  19. MFC制作Windows画图程序(二)
  20. VRChat_SDK3_Avatar

热门文章

  1. [转]该学Java或.NET?
  2. linux的驱动开发——内核模块的编译
  3. 计算机网络(二十五)-IP数据报格式
  4. Leetcode--1371. 每个元音包含偶数次的最长子字符串(Java)
  5. Leetcode--231. 2的幂
  6. 模板引擎工作原理_广州seo了解下搜索引擎的工作原理是什么
  7. java去掉mongodb日志_MongoDB日志文件过大的解决方法 清理
  8. 服务器系统gho系统怎么安装系统,GHOST怎么重装系统?GHO文件安装系统教程
  9. MATLAB摄像头可以运行但是打不开视频
  10. 吴恩达作业9:卷积神经网络实现手势数字的识别(基于tensorflow)