要求:
要用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
再次重启网卡,查看IP地址,发现IP地址变了,在地址池范围内的IP地址出现~ 恭喜恭喜啊~~