开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
DHCP即动态主机配置协议,是Dynamic Host Configuration Protocol的缩写。
DHCP服务分为服务器和客户端两部分,其中服务器的功能为集中管理与IP相关的网络设置数据,处理客户端的DHCP请求,客户端的功能为使用服务器分配的IP配置网络。
DHCP服务的主要功能是为动态分配IP地址,它可以缓解IP地址不足这一问题。
DHCP常用术语
1、DHCP服务器
DHCP服务器是用于提供网络设置参数给DHCP客户机的Internet主机,用于配置DHCP服务器的主机必须使用静态IP地址,配置子网掩码与默认网关。
2、DHCP客户机
DHCP客户机是通过DHCP服务获取网络配置参数的Internet主机。若网络中存在DHCP服务器,开启DHCP服务的客户机在接入网络后可获得由DHCP服务器动态分配的IP地址。
3、DHCP中继代理
DHCP中继代理是在DHCP客户机和服务器之间转发DHCP消息的主机或路由器。
4、作用域
作用域指使用DHCP服务的网络中可用物理IP地址的集合,通常情况下,作用域被设置为网络上的一个子网。DHCP服务器只能为DHCP客户端分配存在于作用域中的空闲IP地址。
5、超级作用域
超级作用域是DHCP服务的一种管理功能,可用于物理子网上多个逻辑IP子网作用域的管理性分组,即将多个作用域组合为单个管理实体进行统一管理。
6、排除范围
排除范围用于限定从DHCP服务作用域内排除的有限IP地址集合。排除范围中的IP地址为预留地址,这些地址通常预留给一些需要固定IP的设备(如服务器、可网管交换机等)使用。当DHCP服务动态为计算机分配IP时,普通设备不会获取到排除范围中的IP地址。
8、租约
DHCP的前身是BOOTP(Bootstrap Protocol,引导程序协议),与BOOTP相比,DHCP新增了“租约”的概念。租约是指DHCP服务器分配IP地址时,为DHCP客户机指定的客户机使用IP地址的时间长度。
9、保留
保留是DHCP服务器的一种功能,使用该功能可使子网中的某个硬件设备始终使用相同的IP地址。
DHCP的工作流程
- 客户机通过广播发送dhcpdiscover信息寻找DHCP服务器
- 服务器为客户机提供IP租约地址
- 客户端接收IP租约信息
- 租约确认
安装配置DHCP
下载安装DHCP服务
apt-get install isc-dhcp-server # Debian安装DHCP服务
yum -y install dhcp # CentOS安装DHCP服务
DHCP服务配置文件
/etc/dhcp/dhcpd.conf # DHCP服务的默认主配置文件路径
DHCP服务默认配置文件没有内容,但DHCP服务为我们提供了模板文件:
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example # 模板文件路径
我们也可以直接在配置文件添加内容:
root@daxueba:~# vim /etc/dhcp/dhcpd.conf
ddns-update-style none; #动态DNS更新模式
authoritative;
default-lease-time 600; #DHCP租约时间
max-lease-time 7200; #DHCP最大租约时间
subnet 192.168.0.0 netmask 255.255.255.0 { #DHCP服务用于分配地址的网段
range 192.168.0.10 192.168.0.20; #地址池
option subnet-mask 255.255.255.0; #子网掩码
option routers 192.168.0.1; #默认网关
option broadcast-address 192.168.0.255; #广播地址
option domain-name-servers 192.168.0.1; #DNS服务器地址
}
DHCP服务配置内容包括3个部分:
- DHCP服务参数
- DHCP服务声明
- DHCP服务选项
DHCP服务参数
用于设置DHCP服务器执行的任务、执行任务的方式以及将会发送给DHCP客户端的网络配置选项。
| 参数 | 说明 |
|---|---|
| ddns-update-style | 配置全局启用/禁用动态DNS更新 |
| authoritative | 拒绝未经验证的IP地址的请求 |
| default-lease-time | 指定租约时间的最大值,单位s |
| max-lease-time | 指定租约时间的最小值,单位s |
| hardware | 指定网卡接口类型和MAC地址 |
| fixed-address | 为客户端主机指定固定IP |
DHCP服务声明
用于描述网络布局、客户端IP地址等信息
| 声明 | 说明 |
|---|---|
| subnet | 指定子网作用域 |
| range | 指定子网作用域 |
| allows bootp/deny bootp | 响应激活查询/拒绝响应激活查询 |
| allow booting/deny booting | 响应使用者查询/拒绝使用者查询 |
| host | 指定保留主机 |
| filename | 指定启动文件,应用于无盘工作站 |
| netx-server | 设置文件共享服务器地址,应用于无盘工作站 |
| shared-network | 指定共享网络 |
DHCP服务选项
DHCP服务的选项总是放在关键字options之后,是可选参数。
| 选项 | 说明 | 选项 | 说明 |
|---|---|---|---|
| domain-name | 设置客户端的DNS域名 | subnet-mask | 设置客户端的子网掩码 |
| domain-name-servers | 设置DNS服务器的IP地址 | routers | 设置客户端的网关IP地址 |
| host-name | 设置客户端的主机名 | broadcast-address | 设置客户端的广播地址 |
DHCP服务配置文件示例:
allow booting; #允许引导时获取IP地址
#分配子网,网段为192.168.255.0,子网掩码为255.255.255.224
subnet 192.168.255.0 netmask 255.255.255.0 {
range 192.168.255.100 192.168.255.199; #设置子网的IP地址取值范围
#设置为客户端分配的DNS服务器地址
option domain-name-servers 192.168.255.2;
#设置客户端的DNS域名
option domain-name "internal.example.org";
#设置网关地址
option routers 192.168.255.2:
#设置最短租约时长
default-lease-time 600;
#设置最大租约时长
max-lease-time 7200;
#设置文件共享服务器地址
next-server 192.168.255.133;
#设置文件服务器上共享的启动文件名称
filename "pxelinux.0";
}
注意:在格式上,配置文件应与模板中提供的格式相同;内容上,地址池的IP地址范围应在子网范围内,本机网卡应在地址池范围之内。若不满足上述条件,在DHCP服务启动时,系统会提示错误信息。本次修改的配置将会在下次启动服务生效,也可通过systemctl命令使配置立即生效。
DHCP配置文件还有服务器租约文件dhcpd.leases。该文件路径:
/var/lib/dhcpd/dhcpd.leases
该文件用于保存已经分发出去的IP地址,文件内容默认为空。文件格式如下:
leases IP地址{
• .......
}
以上格式中的IP地址为服务器分配给客户端的IP地址,大括号中的内容定义IP地址的相关信息,如租约时间、绑定状态、客户机MAC地址等,典型文件内容如下:
leases 192.168.255.127{ # 记录客户端IP地址
start 1 2017/01/01 00:00:00; # 设置租约开始时间
ends 2027/01/01 00:00: 00; # 设置租约结束时间
binding state active; # 设置租约的绑定状态为active
next binding state free; # 设置下一个租约的绑定状态为free
hardware ethernet 00:01:a5:b9:32:21; # 记录客户机网卡的MAC地址
#用于验证客户机的UID标识
uid "%content%32%content%21%content%02\420\31%\89";
client-hostname "itheima"; #客户机名称
}
DHCP分为服务器端和客户端,服务器端配置完成后,需把客户端网络获取IP方式设为动态获取IP地址,再重启网络即可。