动态主机配置协议(DHCP,Dynamic Host Configuration Protocol),该协议用于自动管理局域网内主机的 IP 地址、子网掩码、网关地址及 DNS 地址等参数,可以有效地提升 IP 地址的利用率,提高配置效率,并降低管理与维护成本。
动态主机配置协议
动态主机配置协议(DHCP)是一种基于 UDP 协议且仅限于在局域网内部使用的网络协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,用途是为局域网内部的设备或网络供应商自动分配 IP 地址等参数,提供网络配置的“全家桶”服务。简单来说,DHCP 就是让局域网中的主机自动获得网络参数的服务。
- 作用域:一个完整的 IP 地址段,DHCP 根据作用域来管理网络的分布、IP 地址的分配及其他配置参数。
- 超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段,它包含了可以统一管理的作用域列表。
- 排除范围:把作用域中的某些 IP 地址排除,确保这些 IP 地址不会分配给 DHCP 客户端。
- 地址池:在定义了 DHCP 的作用域并应用了排除范围后,剩余的用来动态分配给客户端的 IP 地址范围。
- 租约:DHCP 客户端能够使用动态分配的 IP 地址的时间。
- 预约:保证网络中的特定设备总是获取到相同的 IP 地址。
部署DHCP服务程序
dhcpd 是 Linux 系统中用于提供 DHCP 的服务程序。尽管 DHCP 的功能十分强大,但是dhcpd 服务程序的配置步骤却十分简单。
安装 dhcpd 服务程序,其软件包名称为 dhcp-server
[root@SRA ~]# dnf install dhcp-server //安装 dhcpd 服务程序
查看 dhcpd 服务程序的配置文件( /etc/dhcp/dhcpd.conf )
[root@SRA ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
dhcp 的服务程序的配置文件中只有 3 行注释语句,需要自行编写这个文件。可以参考配置文件中第 2 行的参考示例文件,其组成架构如图所示。
一个标准的配置文件应该包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数。其中,全局配置参数用于定义 dhcpd 服务程序的整体运行参数;子网网段声明用于配置整个子网段的地址属性。
dhcpd服务程序配置文件中使用的参数以及作用
参数 | 作用 |
---|---|
ddns-update-style 类型 | 定义DNS服务动态更新的类型,类型包括: none(不支持动态更新)、interim(互动更新模式)与ad-hoc(特殊更新模式) |
allow/ignore client-updates | 允许/忽略客户端更新DNS记录 |
default-lease-time 21600 | 默认超时时间 |
max-lease-time 43200 | 最大超时时间 |
option domain-name-servers 8.8.8.8 | 定义DNS服务器地址 |
option domain-name "domain.org" | 定义DNS域名 |
range | 定义用于分配的IP地址池 |
option subnet-mask | 定义客户端的子网掩码 |
option routers | 定义客户端的网关地址 |
broadcast-address 广播地址 | 定义客户端的广播地址 |
ntp-server IP地址 | 定义客户端的网络时间服务器(NTP) |
nis-servers IP地址 | 定义客户端的NIS域服务器的地址 |
hardware 硬件类型 MAC地址 | 指定网卡接口的类型与MAC地址 |
server-name 主机名 | 向DHCP客户端通知DHCP服务器的主机名 |
fixed-address IP地址 | 将某个固定的IP地址分配给指定主机 |
time-offset 偏移差 | 指定客户端与格林尼治时间的偏移差 |
配置DHCP服务
DHCP 的设计初衷是为了更高效地集中管理局域网内的 IP 地址资源。DHCP 服务器会自动把 IP 地址、子网掩码、网关、DNS 地址等网络信息分配给有需要的客户端,而且当客户端的租约时间到期后还可以自动回收所分配的 IP 地址,以便交给新加入的客户端。
模拟一个真实生产环境的需求:
“机房运营部门:明天会有 100 名学员自带笔记本电脑来我司培训学习,请保证他们能够使用机房的本地 DHCP 服务器自动获取 IP 地址并正常上网”。
机房所用的网络地址以及参数信息
参数名称 | 值 |
---|---|
默认租约时间 | 21600秒 |
最大租约时间 | 43200秒 |
IP地址范围 | 192.168.8.50~192.168.8.150 |
子网掩码 | 255.255.255.0 |
网关地址 | 192.168.8.1 |
DNS服务器地址 | 192.168.8.100 |
搜索域 | zxbke.cn |
虚拟机软件自带 DHCP 服务,为了避免与自己配置的 dhcpd 服务程序产生冲突,应先将虚拟机软件自带的 DHCP 功能关闭。
[root@SRA ~]# vim /etc/dhcp/dhcpd.conf //编辑配置文件,填写以下内容
ddns-update-style none; //设置DNS服务不自动进行动态更新
ignore client-updates; //忽略客户端更新DNS记录
subnet 192.168.8.0 netmask 255.255.255.0 { //作用域为192.168.8.0/24网段
range 192.168.8.50 192.168.8.150; //定义IP地址池为192.168.8.50~150
option subnet-mask 255.255.255.0; //定义客户端默认的子网掩码
option routers 192.168.8.1; //定义客户端的网关地址
option domain-name "zxbke.cn"; //定义默认的搜索域
option domain-name-servers 192.168.8.100; //定义客户端的DNS地址
default-lease-time 21600; //定义默认租约时间
max-lease-time 43200; //定义最大租约时间
}
参数 | 作用 |
---|---|
ddns-update-style none; | 设置DNS服务不自动进行动态更新 |
ignore client-updates; | 忽略客户端更新DNS记录 |
subnet 192.168.8.0 netmask 255.255.255.0 { | 作用域为192.168.8.0/24网段 |
range 192.168.8.50 192.168.8.150; | IP地址池为192.168.8.50-150(约100个IP地址) |
option subnet-mask 255.255.255.0; | 定义客户端默认的子网掩码 |
option routers 192.168.8.1; | 定义客户端的网关地址 |
option domain-name "zxbke.cn"; | 定义默认的搜索域 |
option domain-name-servers 192.168.8.100; | 定义客户端的DNS地址 |
default-lease-time 21600; | 定义默认租约时间(单位:秒) |
max-lease-time 43200; | 定义最大预约时间(单位:秒) |
} | 结束符 |
把 dhcpd 服务重新启动并加入到开机启动项中,以确保当服务器下次开机后 dhcpd 服务依然能自动启动,并顺利地为客户端分配 IP 地址等信息。配置防火墙放行 dhcpd 服务。
[root@SRA ~]# systemctl restart dhcpd //重启dhcp服务
[root@SRA ~]# systemctl enable dhcpd //加入开机启动项
[root@SRA ~]# firewall-cmd --permanent --zone=public --add-service=dhcp //防火墙放
[root@SRA ~]# firewall-cmd --reload //重新加载防火墙
分配固定 IP 地址
要想把某个 IP 地址与某台主机进行绑定,就需要用到这台主机的 MAC 地址。这个 MAC地址即网卡上一串独立的标识符,具备唯一性,因此不会存在冲突的情况。
在 dhcpd 服务程序的配置文件中,按照如下格式将 IP 地址与 MAC 地址进行绑定。
不方便查看主机的 MAC 地址,该怎么办呢? 这种情况首先启动 dhcpd 服务程序,为老板的主机分配一个 IP 地址,这样就会在 DHCP 服务器本地的日志文件中保存这次的 IP 地址分配记录。然后查看日志文件,就可以获悉主机的 MAC 地址了(即下面加色的内容)。
配置固定IP地址,需要注意的的是在 Linux 系统中,MAC 地址的间隔符是冒号(:)
[root@SRA ~]# vim /etc/dhcp/dhcpd.conf
----------作用域内追加以下内容----------
max-lease-time 43200;
host gdip {
hardware ethernet 00:0c:29:7b:49:9a; //需要分配的主机MAC
fixed-address 192.168.8.66; //需要分配的固定IP
}
}
在客户端重启网卡即可看到配置效果。