第14章 使用DHCP动态管理主机地址
章节简述:
DHCP协议服务能够自动化的管理局域网内的主机IP地址,有效的提升IP地址使用率,提高配置效率,减少管理与维护成本。
学习dhcpd服务程序的使用方法并逐条讲解配置参数,完整演示自动化分配IP地址、绑定IP地址与mac地址等实验。
DHCP中继代理技术是多个物理网段共同一台DHCP服务器的最佳解决方案,运维人员必学的实用技术之一。
14.1 动态主机管理协议
DHCP动态主机管理协议(Dynamic Host Configuration Protocol)是一种基于UDP协议且仅限用于局域网的网络协议,主要用途是为局域网内部设备或网络供应商自动分配IP地址,通常会应用在大型的局域网环境中或局域网内存在比较多的移动办公设备,DHCP协议能够实现集中的管理、分配IP地址。
DHCP服务程序能够使局域网内的主机自动且动态的获取IP地址、子网掩码、网关地址以及DNS服务器地址等信息,且能够有效的提升地址使用率,提高配置效率,减少管理和维护成本。
DHCP协议能够保证任何IP地址在同一时刻只能由一台DHCP客户机使用,且能够为指定主机分配固定的IP地址。
DHCP服务程序的常见术语:
作用域:一个完整的IP地址段,DHCP服务根据作用域来管理网络的分布、分配IP地址及其他配置参数。
超级作用域:用于支持同一物理网络上多个逻辑IP地址子网段,包含作用域的列表,并对子作用域统一管理。
排除范围:将某些IP地址在作用域中排除,确保这些IP地址不会被提供给DHCP客户机。
地址池:在定义DHCP服务的作用域并应用排除范围后,剩余用来动态分配给DHCP客户机的IP地址范围。
租约:即DHCP客户机能够使用动态分配到的IP地址的时间。
预约:保证局域子网中特定设备总是获取到相同的IP地址。
14.2 安装dhcpd服务程序
dhcpd服务程序用于提供DHCP协议服务,确认镜像挂载且yum仓库配置完毕后即可开始安装:
[root@linuxprobe ~]# yum install dhcp Loaded plugins: langpacks, product-id, subscription-manager ………………省略部分安装过程……………… > Package dhcp.x86_64 12:4.2.5-27.el7 will be installed ………………省略部分安装过程……………… Complete!
dhcpd服务程序与配置文件:
主配置文件 | /etc/dhcp/dhcpd.conf |
执行程序 | /usr/sbin/dhcpd /usr/sbin/dhcrelay |
先来分析下dhcp程序的主配置文件吧:
[root@linuxprobe ~]# cat /etc/dhcp/dhcpd.conf # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page
是的,你没有看错!dhcpd服务程序的配置文件默认只有注释语句,需要参考下模板文件:
[root@linuxprobe ~]# cat /usr/share/doc/dhcp*/dhcpd.conf.example
一个标准的DHCP配置文件应该包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数:
全局配置参数用于定义整个配置文件的全局参数,而子网网段声明用于配置整个子网段的地址属性,具体参数有:
参数 | 作用 |
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 | 定义客户机的网关地址。 |
broadcase-address 广播地址 | 定义客户机的广播地址。 |
ntp-server IP地址 | 定义客户机的网络时间服务器(NTP)。 |
nis-servers IP地址 | 定义客户机的NIS域服务器的地址。 |
hardware 硬件类型 MAC地址 | 指定网卡接口的类型与MAC地址。 |
server-name 主机名 | 通知DHCP客户机服务器的主机名。 |
fixed-address IP地址 | 将某个固定IP地址分配给指定主机。 |
time-offset 偏移差 | 指定客户机与格林尼治时间的偏移差。 |
出现问题?大胆提问!
因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~
Linux技术交流请加A群:560843(满),B群:340829(推荐),C群:463590(推荐),点此查看全国群。
*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。
14.3 自动管理IP地址
DHCP协议的初衷是更高效的集中管理管理局域网内IP地址资源,那么符合让DHCP服务更准确的完成工作呢?
为了让实验更有挑战性,我们来模拟一个真实环境吧:
运维部: 明日约有50名外部学员自带笔记本设备来我司培训学习,请保证学员能够用DHCP获取IP地址并正常上网。
机房网段及参数如下:
参数名称 | 值 |
默认租约时间 | 21600秒 |
最大租约时间 | 43200秒 |
IP地址范围 | 192.168.10.50~192.168.10.150 |
子网掩码 | 255.255.255.0 |
网关地址 | 192.168.10.1 |
DNS服务地址 | 192.168.10.1 |
搜索域 | linuxprobe.com |
看完配置要求后,首先请准备实验环境:
主机类型 | 操作系统 | IP地址 |
DHCP服务端 | 红帽RHEL7操作系统 | 192.168.10.1 |
DHCP客户机 | 红帽RHEL7操作系统 | DHCP自动获取地址 |
请您按照下面的幻灯片逐步操作,可点击图片两侧箭头或下方小圆点“○”切换步骤。
另外因为虚拟机软件VmwareWorkstation默认开启了虚拟机DHCP服务,必需关闭后再进行DHCP实验:
当您确定两台主机的网卡和虚拟机都已经配置妥当,那么就开始配置DHCP服务程序吧:
[root@linuxprobe ~]# vim /etc/dhcp/dhcpd.conf //请注意dhcpd服务程序的配置文件中每个参数均需要以;号结尾。 //请将下面表格中的参数逐行写入到dhcpd.conf文件中。
参数 | 作用 |
ddns-update-style none; | 设置DHCP服务不自动动态更新。 |
ignore client-updates; | 忽略客户机更新DNS记录。 |
subnet 192.168.10.0 netmask 255.255.255.0 { | 作用域为192.168.10.0/24网段。 |
range 192.168.10.50 192.168.10.150; | IP地址池为192.168.10.50-150(约100个IP地址)。 |
option subnet-mask 255.255.255.0; | 定义客户机默认的子网掩码。 |
option routers 192.168.10.1; | 定义客户机的网关地址。 |
option domain-name "linuxprobe.com"; | 定义默认的搜索域。 |
option domain-name-servers 192.168.10.1; | 定义客户机的DNS地址。 |
default-lease-time 21600; | 定义默认租约时间。 |
max-lease-time 43200; | 定义最大预约时间。 |
} | 此为结束符 |
重启dhcpd服务程序:
[root@linuxprobe ~]# systemctl start dhcpd
添加到开机启动项中:
ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.target.wants/dhcpd.service'
因为在红帽RHCSA、RHCE或RHCA考试后都要重启您的实验机再执行判分脚本。
所以请读者在日常工作中也要记得将需要的服务加入到开机启动项中:”systemctl enable dhcpd“。
此时在DHCP客户机上重启网卡设备,即可自动获取到IP地址:
14.4 分配固定IP地址
DHCP协议的术语预约指的就是保证局域子网中特定设备总是获取到相同的IP地址,换句话说dhcpd服务会将某个IP地址私藏下来,只有匹配到特定主机了才会拿出来分配,而要做IP地址与主机的绑定,需要使用下面的参数格式:
host 主机名称 { | ||||
hardware | ethernet | 该主机的MAC地址; | ||
fixed-address | 欲指定的IP地址; | |||
} |
查看到要绑定IP地址的主机mac地址(00:0c:29:27:c6:12):
在DHCP配置文件中添加绑定语句:
ddns-update-style none; ignore client-updates; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.50 192.168.10.150; option subnet-mask 255.255.255.0; option routers 192.168.10.1; option domain-name "linuxprobe.com"; option domain-name-servers 192.168.10.1; default-lease-time 21600; max-lease-time 43200; host linuxprobe { hardware ethernet 00:0c:29:27:c6:12; fixed-address 192.168.10.88; } }
确定配置参数填写正确后重启dhcpd服务:
[root@linuxprobe ~]# systemctl restart dhcpd
DHCP客户机重新加载网卡设备后查看到顺利绑定到了指定的IP地址,不错哦~
出现问题?大胆提问!
因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~
Linux技术交流请加A群:560843(满),B群:340829(推荐),C群:463590(推荐),点此查看全国群。
*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。
14.5 DHCP中继代理
DHCP中继代理(即DHCP Relay Agent)用于转发来自于另一个没有DHCP服务器子网段中客户端的DHCP请求,即当一台DHCP客户端发起请求后,此时DHCP中继代理就会将已经预先定义好的DHCP服务器的信息转发给客户端。
如果客户机与DHCP服务器处在同一个子网段,则客户机自然能够顺利动态获取到IP地址,但若客户机与DHCP服务器处在不同的子网段或物理网段,则需要DHCP Relay Agent来处理和转发DHCP协议信息,换句话说,DHCP中继代理可以让每个物理子网不再必需配有一台DHCP服务器,而是将请求转发给指定的DHCP服务器。
在BOOTP模式中执行dhcrelay服务(DHCPv4):
第1步:复制服务程序
[root@linuxprobe ~]# cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/第2步:编辑服务程序
[root@linuxprobe ~]# vim /etc/systemd/system/dhcrelay.service 在ExecStart参数中添加指定DHCP服务器地址 ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.10.1 如果希望仅某个网卡专门用于监听DHCP请求,则在ExecStart选项中追加-i参数,默认全部网卡均监听。 ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.10.1 -i eno16777736第3步:启动dhcrelay中继服务程序。
[root@linuxprobe ~]# systemctl --system daemon-reload [root@linuxprobe ~]# systemctl restart dhcrelay [root@linuxprobe ~]# systemctl enable dhcrelay
坦白讲,一般DHCP中继功能在日常工作使用较少,或由路由器负责DHCP中继功能,极少用红帽Linux系统搭建。