《云计算》lunix中DHCP搭建案例

1.构建DHCP服务器
问题
本案例要求搭建一台DHCP服务器,为网段192.168.4.0/24内的客户机提供自动地址分配服务,相关要求如下:
地址租约的默认租期为2小时、最大租期为4小时
为客户机指定DNS服务器地址:192.168.4.5
用来分配的IP地址范围:192.168.4.28-54、192.168.4.128-200
为客户机指定默认网关地址:192.168.4.1
方案
使用2台RHEL6虚拟机,其中一台作为dhcp服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(网卡IP地址以DHCP方式自动获取),如图-1所示。
《云计算》lunix中DHCP搭建案例
DHCP协议的服务端口为UDP 67,在RHEL6中的服务器软件为dhcp,对应的系统服务为dhcpd,服务配置文件位于:/etc/dhcp/dhcpd.conf。
DHCP协议的客户端口为UDP 68,一般来说操作系统会默认集成支持DHCP协议的网络管理工具,比如Linux系统中的dhclient命令。
步骤
实现此案例需要按照如下步骤进行。
步骤一:构建DHCP服务器
1)使用yum安装dhcp软件包
[[email protected] ~]# yum -y install dhcp
… …
[[email protected] ~]# rpm -q dhcp
dhcp-4.1.1-38.P1.el6.x86_64
2)修改DHCP服务配置
直接编辑/etc/dhcp/dhcpd.conf配置文件,设置内容参考下列操作:
[[email protected] ~]# vim /etc/dhcp/dhcpd.conf
default-lease-time 7200; //默认租期时间
max-lease-time 14400; //最大租期时间
subnet 192.168.4.0 netmask 255.255.255.0 { //定义分配地址段
option routers 192.168.4.1; //为客户机指定网关地址
option domain-name-servers 192.168.4.5; //为客户机设置DNS地址
range 192.168.4.28 192.168.4.54; //分配地址列表
range 192.168.4.128 192.168.4.200; //分配地址列表
}
注意:关于dhcpd.conf文件中的配置语法,可参考放在/usr/share/doc/dhcp-/目录下的阳历文件dhcpd.conf.sample,或者执行man dhcpd.conf查看帮助手册。
3)启动dhcpd服务,并且设置为开机自动运行
[[email protected] ~]# service dhcpd restart
正在启动 dhcpd: [确定]
[[email protected] ~]# chkconfig dhcpd on
确认已监听UDP 67端口:
[[email protected] ~]# netstat -anptu|grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:
34788/dhcpd
2.DHCP客户端配置及测试
问题
沿用练习一的实验结果,在同一网络内另找一台Linux客户机,尝试以DHCP方式自动获取地址并确认结果:
1)调整DHCP客户机的网卡配置,测试、验证地址获取结果
2)检查DHCP客户机获取的租约信息
3)检查DHCP服务端的IP地址分配情况
方案
在Linux客户机上测试DHCP服务时,可以临时使用dhclient命令,也可以修改网卡的配置文件。
临时测试:执行“dhclient -d 接口名称”,观察地址获取过程,按Ctrl+c退出。
固定配置:修改网卡配置文件,比如ifcfg-eth0,设置BOOTPROTO=dhcp,然后重启network服务即可生效。
步骤
实现此案例需要按照如下步骤进行。
步骤一:使用dhclient工具测试DHCP服务
1)针对eth0网卡执行dhclient调试
如果DHCP服务可用且客户机之间的网络正常,则执行dhclient -d eth0操作后可以观察到DHCP通信获取地址的四个过程:DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK。
[[email protected] ~]# dhclient -d eth0
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:0c:29:65:21:3c
Sending on LPF/eth0/00:0c:29:65:21:3c
Sending on Socket/fallback
DHCPOFFER from 192.168.4.5
DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x73b1002c)
DHCPACK from 192.168.4.5 (xid=0x73b1002c)
bound to 192.168.4.28 – renewal in 2728 seconds.
2)退出调试模式
若要退出dhclient调试模式,可以按Ctrl+c中断任务:
[[email protected] ~]# dhclient -d eth0
… …
bound to 192.168.4.28 – renewal in 2728 seconds.
^C //按Ctrl+c快捷键
[[email protected] ~]#
步骤二:调整网卡配置的方式来验证DHCP服务
1)修改网卡配置文件,启用BOOTPROTO=dhcp
BOOTPROTO表示启动网络接口的协议或方式,如果设为none、auto,通常需要在配置中手动指定IP地址等参数;而改成dhcp的话,表示查找DHCP服务器并申请分配可用的IP地址等参数。
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
… …
BOOTPROTO=dhcp //采用DHCP地址获取方式
2)重启network服务,并确认地址获取结果
重启network服务:
[[email protected] ~]# service network restart
正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0:
正在决定 eth0 的 IP 信息…完成。 [确定]
确认已获得DHCP服务器分配的IP地址:
[[email protected] ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:2D:B8:1D
inet addr:192.168.4.28 Bcast:192.168.4.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe2d:b81d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2270 errors:0 dropped:0 overruns:0 frame:0
TX packets:1525 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:212124 (207.1 KiB) TX bytes:185843 (181.4 KiB)
确认已获得DHCP服务器分配的默认网关地址:
[[email protected] ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.4.1 0.0.0.0 UG 0 0 0 eth0
确认已获得DHCP服务器分配的DNS服务器地址:
[[email protected] ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search tedu.cn
nameserver 192.168.4.5
3)查看IP租约信息
DHCP服务器端查看地址分配情况:
[[email protected] ~]# cat /var/lib/dhcpd/dhcpd.leases

The format of this file is documented in the dhcpd.leases(5) manual page.

This lease file was written by isc-dhcp-4.1.1-P1

server-duid “\000\001\000\001\034\234\325\020\000\014)-n\232”;

lease 192.168.4.28 { //已分配的IP地址
starts 4 2015/03/19 00:34:01;
ends 4 2015/03/19 02:34:01;
cltt 4 2015/03/19 00:34:01;
binding state active;
next binding state free;
hardware ethernet 00:0c:29:2d:b8:1d; //客户机MAC地址
}
客户端查看已获取的IP地址租约:
[[email protected] dhclient]# cat dhclient-eth0.leases
lease {
interface “eth0”;
fixed-address 192.168.4.28; //分配的IP地址
option subnet-mask 255.255.255.0;
option routers 192.168.4.1; //分配的默认网关地址
option dhcp-lease-time 7200;
option dhcp-message-type 5;
option domain-name-servers 192.168.4.5; //分配的DNS地址
option dhcp-server-identifier 192.168.4.5; //DHCP服务器的IP地址
option domain-name “tedu.cn”; //分配的默认搜索域
renew 4 2015/03/19 01:01:26;
rebind 4 2015/03/19 01:47:31;
expire 4 2015/03/19 02:02:31;
}
3.PXE装机条件准备
问题
准备一台RHEL6虚拟机,关闭SELinux、关闭防火墙,并部署好用来实现PXE装机的相关组件:
修改主机名为pxesvr.tedu.cn、配置IP地址为192.168.4.5
提供RHEL6安装源(基于FTP的YUM库)
提供DNS域名解析,以方便客户机查询、配置主机名
提供DHCP地址分配服务,要能够支持PXE引导
方案
公司新采购了一批服务器,需要集中安装RHEL6操作系统。传统的通过U盘或者光盘安装的方式只能一台一台的进行,效率太低且容易出错;因此需要集中搭建一个PXE服务器用来批量部署操作系统,如图-2所示。
《云计算》lunix中DHCP搭建案例.
而要实现这个目标,首先应部署好PXE装机的基础环境,主要包括以下几个方面:
为客户机提供集中的YUM安装源
提供DNS域名解析,可以使客户机在装系统的过程中识别并自动配置主机名
配置好支持PXE的DHCP服务,为客户机连接到PXE服务器提供条件
步骤
实现此案例需要按照如下步骤进行。
步骤一:部署RHEL6的网络YUM源
1)为客户机提供基于FTP方式的YUM源服务器
[[email protected] ~]# yum -y install vsftpd //装包
[[email protected] ~]# mkdir /var/ftp/rhel6 //建挂载点
[[email protected] ~]# cp -rf /misc/cd/* /var/ftp/rhel6/
… … //拷贝光盘数据
[[email protected] ~]# service vsftpd restart //启动服务
… …
[[email protected] ~]# chkconfig vsftpd on //设置开机自动运行
2)从客户机访问FTP源,确保可用
使用ftp客户端命令测试:
[[email protected] ~]# yum -y install ftp //安装ftp命令工具
… …
[[email protected] ~]# ftp 192.168.4.5
Connected to 192.168.4.5 (192.168.4.5).
220 (vsFTPd 2.2.2)
Name (192.168.4.5:root): ftp //以匿名用户ftp登录
331 Please specify the password.
Password: //密码任意
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls rhel6 //查看rhel6目录列表
227 Entering Passive Mode (192,168,4,5,243,116).
150 Here comes the directory listing.
… …
-r–r--r-- 3 0 0 18092 Jun 30 2010 GPL
dr-xr-xr-x 3 0 0 2048 Nov 11 2013 HighAvailability
dr-xr-xr-x 3 0 0 2048 Nov 11 2013 LoadBalancer
dr-xr-xr-x 2 0 0 679936 Nov 11 2013 Packages
-r–r--r-- 2 0 0 16435 Sep 02 2010 README
… …
ftp> quit
221 Goodbye.
[[email protected] ~]#
或者通过网页浏览器访问测试,以文本模式下的elinks浏览器为例,可执行elinks ftp://192.168.4.5/rhel6尝试去访问,显示结果如图-3所示。
《云计算》lunix中DHCP搭建案例
步骤二:提供DNS域名解析服务
1)使用yum安装DNS所需软件包
[[email protected] ~]# yum -y install bind bind-chroot
… …
[[email protected] ~]# rpm -q bind
bind-9.8.2-0.17.rc1.el6_4.6.x86_64
[[email protected] ~]# rpm -q bind-chroot
bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64
2)修改named.conf主配置文件
[[email protected] ~]# vim /etc/named.conf
options {
directory “/var/named”;
};
zone “tedu.cn” IN { //定义正向区域
type master;
file “tedu.cn.zone”;
};
zone “4.168.192.in-addr.arpa” IN { //定义反向区域
type master;
file “192.168.4.arpa”;
};
3)建立正、反向区域数据文件
[[email protected] ~]# vim /var/named/tedu.cn.zone //正向解析记录文件
$TTL 1D
@ SOA tedu.cn. root.tedu.cn. (
2015052301
8H
2H
4H
1D
)
@ IN NS ns.tedu.cn.
ns IN A 192.168.4.5
pxesvr IN A 192.168.4.5
ftp IN A 192.168.4.5
GENERATE10200pcGENERATE 10-200 pc IN A 192.168.4.$

[[email protected] ~]# vim /var/named/192.168.4.arpa //反向解析记录文件
$TTL 1D
@ SOA tedu.cn. root.tedu.cn. (
2015052301
8H
2H
4H
1D
)
@ IN NS ns.tedu.cn.
5 IN PTR pxesvr.tedu.cn.
$GENERATE 10-200 $ IN PTR pc$.tedu.cn.
4)启动named服务,并设为开机自动运行
[[email protected] ~]# service named restart
[[email protected] ~]# chkconfig named on
5)确保泛域名DNS解析可用
[[email protected] ~]# vim /etc/resolv.conf
nameserver 192.168.4.5

[[email protected] ~]# nslookup pc20.tedu.cn //查询正向记录
Server: 192.168.4.5
Address: 192.168.4.5#53

Name: pc20.tedu.cn
Address: 192.168.4.20

[[email protected] ~]# nslookup 192.168.4.20 //查询反向记录
Server: 192.168.4.5
Address: 192.168.4.5#53

20.4.168.192.in-addr.arpa name = pc20.tedu.cn.
步骤三:提供支持PXE引导的DHCP服务
1)使用yum安装DHCP服务所需软件包
[[email protected] ~]# yum -y install dhcp
… …
2)建立DHCP服务配置
[[email protected] ~]# vim /etc/dhcp/dhcpd.conf
option domain-name “tedu.cn”;
option domain-name-servers 192.168.4.5;
default-lease-time 7200;
max-lease-time 14400;
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.10 192.168.4.200;
option routers 192.168.4.254;
next-server 192.168.4.5; //指定PXE服务器的IP地址
filename “pxelinux.0”; //指定PXE默认文件
}
3)启动dhcpd服务,并设置开机自动运行
[[email protected] ~]# service dhcpd restart
关闭 dhcpd: [确定]
正在启动 dhcpd: [确定]
4)从客户端测试,确保该DHCP服务可用
[[email protected] ~]# dhclient -d eth0
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:0c:29:65:21:3c
Sending on LPF/eth0/00:0c:29:65:21:3c
Sending on Socket/fallback
DHCPOFFER from 192.168.4.5
DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x73b1002c)
DHCPACK from 192.168.4.5 (xid=0x73b1002c)
bound to 192.168.4.1 – renewal in 2728 seconds.
^C //按Ctrl+c快捷键
[[email protected] ~]#
4.PXE引导配置
问题
沿用练习三,安装并启用TFTP服务器,提供以下引导文件:
网卡启动程序:pxelinux.0
内核及初始文件:vmlinuz、initrd.img
然后,为PXE网络引导建立PXE启动配置:
创建 pxelinux.cfg/ 配置目录
建立默认配置文件 default
方案
pxelinux.0启动文件用来为客户机在获取IP地址后提供进一步的引导功能,比如显示装机菜单。此文件由syslinux-nonlinux 软件包提供,当然也可以从RHEL6 或 CentOS 6 的安装光盘中提取。
而对于内核文件vmlinuz和初始镜像文件initrd.img来说,取决于将要为客户机安装什么操作系统。如果要安装的是RHEL6系统,则应该找RHEL6的系统光盘去提取;同理,如果要安装的是CentOS6系统,则需要找CentOS6的系统光盘去提取。
步骤
实现此案例需要按照如下步骤进行。
步骤一:安装TFTP服务
1)安装tftp-server服务软件
[[email protected] ~]# yum -y install tftp-server
… …
[[email protected] ~]# rpm -q tftp-server
tftp-server-0.49-7.el6.x86_64
2)配置并启用tftp服务
[[email protected] ~]# chkconfig tftp on //打开tftp配置开关
[[email protected] ~]# service xinetd start //启动xinetd超级服务程序
正在启动 xinetd: [确定]

[[email protected] ~]# netstat -anptu | grep xinetd //查看监听状态
udp 0 0 0.0.0.0:69 0.0.0.0:* 27122/xinetd
[[email protected] ~]# chkconfig xinetd on //将xinetd设为开机自动运行
步骤二:部署PXE启动相关文件
1)安装syslinux-nonlinux软件包,拷贝pxelinux.0文件到tftp默认根目录下
[[email protected] ~]# yum -y install syslinux-nonlinux
[[email protected] ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
2)拷贝安装内核和初始化镜像到tftp默认根目录下
[[email protected] ~]# cd /var/ftp/rhel6/isolinux/
[[email protected] isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/
[[email protected] isolinux]# ls /var/lib/tftpboot/
initrd.img vmlinuz pxelinux.0 //确认部署结果
步骤三:测试tftp服务是否正常
1)安装tftp客户端程序
[[email protected] ~]# yum -y install tftp
… …
[[email protected] ~]# rpm -q tftp
tftp-0.49-7.el6.x86_64
2)测试tftp服务器下载是否正常
[[email protected] ~]# cd /root/ //切至可写目录
[[email protected] ~]# tftp 192.168.4.5 -c get pxelinux.0 //下载网卡启动程序
[[email protected] ~]# ls -lh pxelinux.0 //确认结果
-rw-r–r--. 1 root root 27K 10月 16 2012 pxelinux.0
步骤四:为PXE安装配置启动菜单
1)建立配置目录、默认菜单文件
[[email protected] ~]# mkdir /var/lib/tftpboot/pxelinux.cfg //创建配置目录
[[email protected] ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default linux //默认从哪个标签引导系统
prompt 1 //是否等用户选择
timeout 600 //进默认系统的等待超时(单位为1/10秒)
label linux //定义名为linux的标签
kernel vmlinuz //下载指定内核并运行
append initrd=initrd.img //下载指定初始文件并运行
5.验证PXE网络装机
问题
沿用练习四,新建一台虚拟机裸机(内存1G、硬盘20G),注意网络类型要与PXE服务器相同。使用此虚拟机作为客户机,启动后测试PXE网络装机过程,相关要点如下所述:
观察PXE网络引导过程
选择采用URL源,自动获取IP地址
指定路径ftp://192.168.4.5/rhel6
后续安装过程与光盘安装相同
方案
步骤
实现此案例需要按照如下步骤进行。
步骤一:建立新的虚拟机裸机
新建一台虚拟机裸机,注意以下事项:将内存设为1G、硬盘设为20G;网络类型要与pxesvr服务器的相同,比如桥接到br0。
注意:如果是生产环境中已经有系统的客户机,则需要调整BIOS设置,将网络引导作为第一启动设备。
步骤二:启动虚拟机裸机,验证PXE网络安装过程
1)初始化引导
因客户机尚未安装操作系统,默认会自动从网卡启动(否则请调整虚拟机属性,优先从网卡启动),然后通过DHCP获取地址,下载pxelinux.0引导文件,读取pxelinux.cfg/目录下的default的配置,成功后会看到boot:提示信息,如图-4所示。此时可以直接回车确认,或者等待60秒后进入默认的Linux启动项(加载vmlinuz内核)。
《云计算》lunix中DHCP搭建案例
)环境设置
选择语言,一般建议选择中文Chinese(Simplified),如图-5所示
《云计算》lunix中DHCP搭建案例
回车确认后会提示此界面下中文语言不可用,如图-6所示,直接确认忽略即可

《云计算》lunix中DHCP搭建案例
选择键盘类型,接受默认的美国键盘(US),如图-7所示,确认即可
《云计算》lunix中DHCP搭建案例
)指定安装系统的软件来源
提示选择安装方式时,如图-8所示,从上到下分别表示:本地光盘、本地硬盘、NFS共享目录、URL网址。本例中选择URL方式,确认后继续。
《云计算》lunix中DHCP搭建案例
选择URL方式需要有网络连接,因此引导程序会要求配置TCP/IP连接。本例中可只需要启用IPv4、DHCP自动获取即可,如图-9所示。确认后继续,将会再次以DHCP方式来自动配置网卡的IP地址。
《云计算》lunix中DHCP搭建案例
获得地址以后,进一步指定YUM软件源的正确URL访问地址,如图-10所示。
《云计算》lunix中DHCP搭建案例
4)下载并运行安装向导
只要网络连接、YUM源都没问题,引导程序会自动下载install.img安装文件,并加载到本地运行,然后就能看到图形的RHEL6安装向导程序了,如图-11所示。后续配置、安装过程与通过光盘安装的效果相同,这里就不赘述了。
《云计算》lunix中DHCP搭建案例