一、DHCP服务概述
1 DHCP(Dynamic Host Configuration Protocol)动态主机配置协议。
DHCP是由Internet工作任务小组设计开发的,专门用于为TCP/IP网络中计算机自动分配TCP/IP参数的协议
使用DHCP可以减少管理员的工作量,避免IP地址冲突,当网络更改IP地址网段时不需要再来重新配置每个用户的IP地址,提高了IP地址的利用率,方便客户端的配置。
2 可分配的地址信息主要包括:
网卡的IP地址、子网掩码、对应的网络地址、广播地址、默认网关地址、DNS服务器地址等
3 DHCP的分配方式
(1)自动分配:分诶到一个IP地址后永久使用
(2)手动分配:由DHCP服务器管理员专门指定IP地址
(3)动态分配:使用完后释放该IP,使其他客户机使用
4 DHCP的租约过程
(1)客户机从DHCP服务器获取IP地址的过程称为DHCP的租约过程
(2)租约过程分为四个步骤:
①客户端在网络中搜索服务器(客户机发一个广播包)
②服务器向客户端响应服务
③客户端项目标服务器发出服务请求(单播)
④服务器向客户端提供服务
①客户机请求IP(客户机发DHCP Discover广播包)
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机需要通过DHCP获取一个合法的地址,此时DHCP客户机以广播的方式(因为DHCP服务器的IP地址对客户机来说是未知的)发送DHCP Discover发现信息来寻找DHCP服务器。广播信息中包含DHCP客户机的MAC地址和计算机名,以便DHCP服务器确定哪个客户机发送的请求。
![](https://i-blog.csdnimg.cn/blog_migrate/84f1cefaa574ab4107ecbeff4a9be0ac.png)
②服务器响应(服务器发DHCP Offer广播包)
当DHCP服务器收到来自客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器会将此IP地址做上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则包含下列信息的DHCP Offer消息;DHCP客户机的MAC地址、DHCP服务器提供的合法IP地址、子网掩码、默认网关、租约的期限、DHCP服务器的IP地址。
![](https://i-blog.csdnimg.cn/blog_migrate/7408b1f6912dfcaa30a62094f9a14f53.png)
③客户机选择IP(客户机发DHCP Request广播包)
DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不再分配给另一个DHCP客户机。当客户机从第一个DHCP服务器接收到DHCP Offer消息并提取了IP地址后,客户机将DHCP Request消息广播到所有的DHCP服务器,表明它接收提供的内容。DHCP Request服务器查看服务器标识符字段,以确定提供的IP是否被接受,如果DHCP Offer被拒绝,则DHCP服务器取消并保留其IP地址以提供给下一个IP租约的请求。
![](https://i-blog.csdnimg.cn/blog_migrate/304605422ed2be6aa34a8863d7f1b1a8.png)
④服务器确定租约(服务器大DHCP ACK广播包)
DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含含有IP地址的有效租约和其他可配置的信息,当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。
![](https://i-blog.csdnimg.cn/blog_migrate/981b24ade04dc227f4d99b559a2a09ee.png)
DHCP的端口号:67
DHCP中继
默认情况下,DHCP协议只能在VLAN内部使用,如果DHCP想跨网段分发IP地址,需要在网关上设置一个DHCP中继的功能才可以
二、Linux中DHCP的安装与配置
1 DHCP的安装
[root@zhangmingjuan ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 18G 1.3G 16G 8% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
[root@zhangmingjuan ~]# mount /dev/sr0 /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@zhangmingjuan ~]# yum -y install dhcp
2 配置DHCP服务
主配置文件:/etc/dhcp/dhcpd.conf
执行程序:/usr/sbin/dhcpd、 /usr/sbin/dhcrelay(中继命令的位置)
服务脚本:/etc/init.d/dhcpd、/etc/init.d/dhcrelay
执行参数配置:/etc/sysconfig/dhcpd
DHCP中继配置:/etc/sysconfig/dhcrelay
[root@zhangmingjuan ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample ##配置文件没内容,但是指明了模板文件的位置
# see 'man 5 dhcpd.conf'
#
[root@zhangmingjuan ~]# cd /etc/dhcp/
[root@zhangmingjuan dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf ##将模板文件复制过来
[root@zhangmingjuan dhcp]# cp /usr/share/doc/dhcp*/dhcpd.conf.sample ./dhcpd.conf
cp: overwrite `./dhcpd.conf'? y
[root@zhangmingjuan dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf
[root@zhangmingjuan ~]# vim /etc/dhcp/dhcpd.conf
[root@zhangmingjuan ~]# egrep -v "#" /etc/dhcp/dhcpd.conf > /etc/dhcp/dhcpd.conf.bak
[root@zhangmingjuan ~]# cat /etc/dhcp/dhcpd.conf.bak > /etc/dhcp/dhcpd.conf
DHCP的配置文件包含三部分:
全局配置
分发范围
指定固定电脑获取固定地址
(1)修改配置文件
option domain-name "example.org"; ##域名,“取的名字”
option domain-name-servers ns1.example.org, ns2.example.org; ##DNS的IP地址
default-lease-time 600; ##默认最小租约时间,600秒
max-lease-time 7200; ##最大租约时间,7200秒
log-facility local7; ##日志的路径
subnet 10.254.239.0 netmask 255.255.255.224 { ##声明分发的网段是多少;网段 掩码
range 10.245.239.10 10.245.239.20; ##IP地址分发的范围
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; ##网关IP
}
subnet 10.254.239.32 netmask 255.255.255.224 {
range dynamic-bootp 10.254.239.40 10.254.239.60;
option broadcast-address 10.254.239.31;
option routers rtr-239-32-1.example.org;
}
号外!!
[root@zhangmingjuan ~]# cat /etc/resolv.conf ## DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.204.2 ## nameserver关键字,如果没指定nameserver就找不到DNS服务器
关于网卡配置文件与DNS配置文件参考:https://bbs.aliyun.com/detail/504964.html
最终修改配置结果如下
![](https://i-blog.csdnimg.cn/blog_migrate/213621e22c64546ca122b5a8cc9980ff.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c585bd523d3c371cdf4206754052a22f.png)
(二)启动DHCPD服务
[root@zhangmingjuan dhcp]# /etc/init.d/dhcpd start
Starting dhcpd: [ OK ]
######测试
关闭客户端虚拟机DHCP自动获取功能;服务端关闭dhcpd服务![](https://i-blog.csdnimg.cn/blog_migrate/a6c298fc64472fb6db2fc190f5e73fcb.png)
此时,客户端ifup eth0无法获取IP,打开服务端dhcpd服务
![](https://i-blog.csdnimg.cn/blog_migrate/a6c298fc64472fb6db2fc190f5e73fcb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bd81ecd22d8d076611d05bc4dea3c02e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6c580cbb9b37755469358f346a3ede4e.png)