DHCP地址分配服务
导读 | DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP服务器和DHCP客户端的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。 |
DHCP功能概述
DHCP通常被应用在局域网络环境中(有限和无线),主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:
1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
2. DHCP应当可以给用户分配永久固定的IP地址。
3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
4. DHCP服务器应当向现有的BOOTP客户端提供服务。
DHCP的分配机制
1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
DHCP的工作模式
全部数据报都是以广播的方式发送的
1. 首先,客户端发送DHCP Discover报文到DHCP服务器。
2. 然后,服务器接收到响应后就发送DHCP Offer报文回应DHCP客户端。所有的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地址的纪录。
3. 其次,DHCP客户端接收到DHCP Offer之后就会发送DHCP request到DHCP服务器。DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。
4. 最后,DHCP服务器响应客户端发送DHCP ack报文到客户端。DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
5. DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址。
在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程。
DHCP中继代理
DHCPRelay叫做DHCP中继代理。DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,重新生成一个DHCP消息,然后转发出去。
在DHCP客户端看来,DHCP中继代理就像DHCP服务器;在DHCP服务器看来,DHCP中继代理就像DHCP客户端。此外,如果想让一台DHCP服务器建立多个IP域为不同的VLAN或网络都提供DHCP服务,那么就必须要使用DHCP中继的功能。DHCP中继可以使用主机搭建,也可以通过三层交换机来设置,如下图:
DHCP安装配置
安装DHCP
$ yum install dhcp
复制dhcp提供的模板文件到/etc下名字为dhcpd.conf是dhcp的配置文件
$ cp -p /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
主配置文件/etc/dhcpd.conf的配置
ddns-update-style none; //动态更新DNS的
subnet 192.168.10.0 netmask 255.255.255.0 { //声明一个IP地址段和对应的子网掩码
option routers 192.168.10.1; //客户端获取的网关
option subnet-mask 255.255.255.0; //网关子网掩码
option domain-name-servers 192.168.10.1; //客户端获取的域名服务器IP
range 192.168.10.11 192.168.10.100; //客户端获取的IP地址池(dynamic-bootp此协议不用了)
default-lease-time 21600;
max-lease-time 43200;
host Server01 { //为客户机固定分配IP地址
hardware ethernet b0:c0:c3:22:46:81;
fixed-address 192.168.10.88;
next-server //用于PXE当中指定文件服务器的获取引导文件的
}
host Server02 { //为客户机固定分配IP地址
hardware ethernet b0:c0:c3:22:46:81;
fixed-address 192.168.10.88;
}
}
在DHCP服务器上可以查看租约信息
$ cat /var/lib/dhcpd/dhcpd.leases
或者
$ cat /var/log/messages
DHCP客户端命令
# 动态获取地址
$ dhclient
# 释放eth0网卡的ip地址
$ dhclient -r eth0
本文地址: