要求:
要用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
說在最前:
本次配置的完成,參考了網上很多文章,對比下來,最全最細緻的爲這一篇:http://www.cnblogs.com/linux-wangkun/p/5910709.html,對我的啓發和幫助很大,感謝~
下面開始配置:
一、配置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 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 #本以爲是必須的,但註釋掉後嘗試沒有問題
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地址出現~ 恭喜恭喜啊~~