DHCP

  DHCP(Dynamic Host Configuration Protocol)是一种集中对用户IP地址动态管理和配置的技术。

  DHCP采用客户端/服务器通信模式,由DHCP Client向DHCP Server提出申请,Server返回为Client分配的配置信息(包括IP地址、缺省网关、DNS Server、WINS Server等参数),可实现IP地址动态分配,以及其他网络参数的集中配置管理。

DHCP原理

DHCP报文

  目前DHCP定义了八种类型报文,DHCP Client和DHCP Server通过这八种类型报文进行通信。

  • DHCP REQUEST
  1. 客户端初始化后,发送广播的DHCP REQUEST报文来回应服务器的DHCP OFFER报文。

  2. 客户端重启后,发送广播的DHCP REQUEST报文来确认先前被分配的IP地址等配置信息。

  3. 当客户端已经和某个IP地址绑定后,发送DHCP REQUEST单播或广播报文来更新IP地址的租约。

  • DHCP RELEASE

  客户端可通过发送此报文主动释放服务器分配给它的IP地址,当服务器收到此报文后,可将这个IP地址分配给其它的客户端。

  • DHCP OFFER

  DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。

  • DHCP NAK

  服务器对客户端的DHCP REQUEST报文的拒绝响应报文,例如DHCP服务器收到DHCP REQUEST报文后,没有找到相应的租约记录,则发送DHCP NAK报文作为应答,告知DHCP客户端无法分配合适IP地址。

  • DHCP INFORM

  DHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关地址、DNS服务器地址),则向DHCP服务器发送DHCP INFORM请求报文。

  • DHCP DISCOVER

  DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器。

  • DHCP DECLINE

  当客户端发现服务器分配给它的IP地址发生冲突时会通过发送此报文来通知服务器,并且会重新向服务器申请地址。

  • DHCP ACK

  服务器对客户端的DHCP REQUEST报文的确认响应报文,客户端收到此报文后,才真正获得了IP地址和相关的配置信息。

DHCP获取地址

  DHCP客户端首次接入网络时,经过四个阶段与DHCP服务器交互DHCP报文,从而获取到IP地址等网络参数。


DHCP Client申请IP地址过程

  1. 发现阶段

  DHCP Client(0.0.0.0:68) → DHCP Server(255.255.255.255:67)

  DHCP Client启动时,由于没有IP地址,会自动发送以discover的广播报文,网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。

  1. 提供阶段

  DHCP Server(server_ip:67) → DHCP Client(255.255.255.255:68)

  所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。

  DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。

  1. 选择阶段

  DHCP Client(0.0.0.0:68) → DHCP Server(255.255.255.255:67)

  DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。DHCP Client会发出一个广播的DHCP Request报文,在选项(option)字段中会加入选中的DHCP Server的IP地址和需要的IP地址。

  1. 确认阶段

  DHCP Server(server_ip:67) → DHCP Client(255.255.255.255:68)

  DHCP Server收到DHCP Request报文后,判断选项(option)字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。

  DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址。如果收到了回应,说明有其他终端使用了此地址,客户端会向服务器发送DECLINE报文,并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。当服务器没有空闲地址可分配时,再选择冲突地址进行分配,尽量减少分配出去的地址冲突。

注意:
  目的IP地址都是广播地址255.255.255.255,这在发现阶段中是因为不知晓DHCP服务器地址,在提供阶段中是因为客户机还没有IP地址,在选择阶段中是因为客户机要通知子网中的所有DHCP服务器自己选中了某个特定的DHCP提供,在确认中是因为客户机还没确定IP地址。

DHCP租期更新

  DHCP服务器分配给客户端的IP地址有一定的租借期限,当租借期满后服务器会收回该IP地址。为了延长DHCP客户端使用该地址的期限,需要更新IP地址租约。


DHCP续租过程

  1. 当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

  2. 当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

  3. 如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。

  客户端在租期时间到之前,如果用户不想使用分配的IP地址(例如客户端网络位置需要变更),会触发DHCP客户端向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租期。DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。

  客户端可以通过发送DHCP INFORM报文向服务器请求更新配置信息。

DHCP释放地址

  DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配

DHCP配置

DHCP主要文件

/etc/dhcp/dhcpd.conf  #主配置文件
/usr/lib/systemd/system/dhcpd.service  #服务
/usr/sbin/dhcpd  #应用
/usr/share/doc/dhcp-server/dhcpd.conf.example  #模板文件
/var/lib/dhcpd/dhcpd.lease  #租约文件

DHCP配置详解

定义网络
subnet [网络号] netmask [子网掩码] { 
	range [起始IP地址] [结束IP地址]  #地址范围
	option routers [IP地址]  #网关
	option domain-name [域名]  #域名服务器
	option domain-name-servers [IP地址]  #域名服务器IP地址
	default-lease-time [数字]  #默认租约时间
	max-lease-time [数字]  #最大祖约时间
}
地址绑定
host [主机名]{
	hardware [硬件类型]   #客户机硬件地址
	fixed-address [IP地址]  #客户机绑定IP地址
}
网络引导
host[主机名]{
	hardware [硬件类型]  #硬件地址
	filename [启动文件]  #引导文件
	next-server [IP地址]  #服务器地址
}
日志定义
log-facility local7  #默认local7

DHCP配置实例

  搭建DHCP服务器,网络10.10.10.0/24;网关10.10.10.254;DNS为8.8.8.8, 114.114.114.114;并绑定10.10.10.100地址。

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
option domain-name-servers 8.8.8.8, 114.114.114.114;
default-lease-time 600;
max-lease-time 7200;
subnet 10.10.10.0 netmask 255.255.255.0 {
	range 10.10.10.11 10.10.10.100;
	option routers 10.10.10.254;
	option broadcast-address 10.10.10.255;
	default-lease-time 600;
	max-lease-time 7200;
}

host dhcpserver {
	hardware ethernet 00:0c:29:ab:ba:18;
	fixed-address 10.10.10.100;
}

[root@localhost ~]# systemctl start dhcpd

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值