DHCP 服务

DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。主要有两个用途:给内部网络或网络服务供应商自动分配IP地址。

DHCP有3个端口,其中 UDP 67 和 UDP 68 为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546 端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。

功能

  • 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。

  • DHCP应当可以给用户分配永久固定的IP地址。

  • DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。

  • DHCP服务器应当向现有的BOOTP客户端提供服务。

工作原理

① DHCP Client以广播方式发出DHCP Discover报文。

② 所有的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地址的纪录。

③ DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。

DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。

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

⑤ DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。

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

分配机制

注意:只有动态分配可以重复使用客户端不再需要的地址。

自动分配方式(Automatic Allocation)

DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性使用该地址。

动态分配方式(Dynamic Allocation)

DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

手工分配方式(Manual Allocation)

客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

安装配置

1
2
3
4
5
# 安装rpm包
yum -y install dhcp
# 生成配置文件模板
cp /etc/dhcp/dhcpd.conf{,.bak}
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

文件 /etc/dhcp/dhcpd.conf 配置说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ddns-update-style interim; 
#表示dhcp服务器和dns服务器的动态信息更新模式
ignore client-updates;
#忽略客户端更新

subnet 192.168.247.0 netmask 255.255.255.0 {
#dhcp服务器所分配的ip地址所在的网段为192.168.247.0 子网掩码为255.255.255.0
option routers 192.168.247.1;
#路由器地址,即给客户端提供的网关地址
option subnet-mask 255.255.255.0;
#子网掩码
# option domain-name "example.org";
# 搜索域,具体为/etc/resov.conf中search行对应的域
option domain-name-servers 114.114.114.114;
# DNS服务器地址,最多三个,以逗号隔开

range 192.168.247.100 192.168.247.200;
# 租用IP地址的范围,linux环境下从后往前分配

default-lease-time 600;
#默认租约时间
max-lease-time 7200;
#最大租约时间

host myhost {
#固定分配,myhost为标识符,无实际意义
hardware ethernet MAC_ADDRESS;
#指定dhcp客户的mac地址
fixed-address 192.168.247.155;
#给指定的mac地址分配ip
}
}
有钱任性,请我吃包辣条
0%