Linux中的DHCP服务

870 阅读6分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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地址,再重启网络即可。