要求:

要用openstack创建的的2台VM,一台作为DHCP server,为另一台VM提供IP地址。


前提:

当前openstack的租户 子网为:192.168.10.0/24,默认启用了DHCP(记住这一点很重要)。

2台虚拟机在启用后都获取到了IP,分别为192.168.10.6(作为DHCP SERVER端)和192.168.10.7(作为DHCP CLIENT端)。

linux系统为:centos6.5


说在最前:

本次配置的完成,参考了网上很多文章,对比下来,最全最细致的为这一篇:,对我的启发和帮助很大,感谢~


下面开始配置:

一、配置DHCP SERVER

1. 安装DHCP包

本文使用yum安装

yum install dhcp*



2. DHCP SERVER配置

文件路径:/etc/dhcp/dhcpd.conf
(如果是centos7,可能/etc/dhcp/路径下没有dhcpd.cfg,可以去/usr/share/doc/dhcp-4.1.1/路径下拷贝dhcpd.conf.sample到/etc/dhcp/dhcpd.conf。dhcpd.conf.sample里对参数都做了介绍,可以帮助理解下面的配置都是什么含义。

vim /etc/dhcp/dhcpd.conf

看到我当前对dhcp server的配置,具体为:

ddns-update-style none; #可能非必须
ignore client-updates;  #可能非必须

default-lease-time 600; #必须
max-lease-time 7200; #必须
log-facility local7; #必须
#对子网的约束
subnet 192.168.10.0 netmask 255.255.255.0 { 
  range 192.168.10.100 192.168.10.110;         #为区别ip地址是本dhcp server提供的,所以讲IP的起始范围做了约束
  option domain-name-servers 114.114.114.114;  #DNS设置,非必须
  option routers 192.168.10.99;                #为了跟openstack的路由做区分,随便写了一个IP
  option subnet-mask 255.255.255.0;            #非必须
  option broadcast-address 192.168.10.222;     #为了跟openstack的路由做区分,随便写了一个IP,非必须
}


注:

1). broadcast本非必须,特意加上,除了为跟openstack的子网广播地址做区分外,还因为,dhcp discover阶段,是以广播报文的方式发送给dhcp server的,很多dhcp server都会给vm回复dhcp offer消息。如果不加上,VM有可能收到192.168.10.255 (openstack子网的广播地址)的消息。

2). 这里,我还走了一个弯道,绕了我好久。原因应该就是我对dhcpd.conf.sample的用例注释没理解透吧。以下是我最初写的dhcp server的配置内容:

log-facility local7;
subnet 192.168.10.0 netmask 255.255.255.224 {
  range 192.168.10.100 192.168.10.110;
  option domain-name-servers 114.114.114.114;
  option routers 192.168.10.1;
  default-lease-time 600;
  max-lease-time 7200;
}



将default-lease-time 600;、max-lease-time 7200;等参数写在了大括号内,以为写在里面与写在外面的意思是一样的。但,如果写在里面,启动DHCP服务会一直报错~


3. 配置文件,绑定DHCP SERVER到网卡

文件目录:/etc/sysconfig/dhcpd,修改DHCPDARGS="eth0"

[root@host-192-168-10-6 sysconfig]# vim /etc/sysconfig/dhcpd

# Command line options here
DHCPDARGS="eth0"


4. 启动DHCP server

service dhcpd restart


如果,缺少第三步,启动服务时会报错,查看log:tail -40 /var/log/message,内容为:

May  5 15:44:26 host-192-168-10-6 dhcpd:    No subnet declaration for eth0 (192.168.10.6).
May  5 15:44:26 host-192-168-10-6 dhcpd: ** Ignoring requests on eth0.  If this is not what
May  5 15:44:26 host-192-168-10-6 dhcpd:    you want, please write a subnet declaration
May  5 15:44:26 host-192-168-10-6 dhcpd:    in your dhcpd.conf file for the network segment
May  5 15:44:26 host-192-168-10-6 dhcpd:    to which interface eth0 is attached. Not configured to listen on any interfaces!


至此,DHCP SERVER配置完毕!



二、配置DHCP CLIENT

1.  配置网卡文件

文件目录:/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTR=dhcp
TYPE=Ethernet
ONBOOT=yes
NAME=eth0
#BROADCAST=192.168.10.222   #本以为是必须的,但注释掉后尝试没有问题
#HWADDR=FA:16:3E:AE:D8:6E   #本以为是必须的,但注释掉后尝试没有问题


2. 重启网卡


service network restart

查看192.168.10.7的IP地址,是否变更为192.168.10.100-192.168.10.110之间的IP

使用命令:ifconfig

===》发现IP地址没变,还是192.168.10.7,广播地址仍然为:192.168.10.255


原因是什么呢? 我尝试了a.192.168.10.7的IP消失,禁用网卡; b.修改广播地址……均无效

后来,想到192.168.10.7的IP是如何来的呢?===》 在openstack启动子网的时候,有个默认选项:启动DHCP!


3. 关闭openstack子网的DHCP

在网络--子网--选择VM的子网--编辑子网 -- 子网详情中,去勾选dhcp

openstack根据IP查虚拟机 openstack虚拟机两个ip_openstack根据IP查虚拟机


再次重启网卡,查看IP地址,发现IP地址变了,在地址池范围内的IP地址出现~  恭喜恭喜啊~~

openstack根据IP查虚拟机 openstack虚拟机两个ip_openstack根据IP查虚拟机_02