linux学习-使用DHCP动态管理主机地址
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地址。
2 安装dhcpd服务程序
dhcpd服务程序用于提供DHCP协议服务,确认镜像挂载且yum仓库配置完毕后即可开始安装:
[root@linuxprobe ~]# yum install dhcp
> Package dhcp.x86_64 12:4.2.5-27.el7 will be installed
………………省略部分安装过程………………
Complete!
dhcpd服务程序与配置文件:
主配置文件 |
/etc/dhcp/dhcpd.conf |
执行程序 |
/usr/sbin/dhcpd |
先来分析下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服务程序的配置文件默认只有注释语句。
全局配置参数用于定义整个配置文件的全局参数,而子网网段声明用于配置整个子网段的地址属性,具体参数有:
参数 |
作用 |
ddns-update-style 类型 |
定义DNS服务动态更新的类型,类型包括: |
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 偏移差 |
指定客户机与格林尼治时间的偏移差。 |
3 自动管理IP地址
DHCP协议的初衷是更高效的集中管理管理局域网内IP地址资源,那么符合让DHCP服务更准确的完成工作呢?
为了让实验更有挑战性,我们来模拟一个真实环境吧:
运维部:
明日约有50名外部学员自带笔记本设备来我司培训学习,请保证学员能够用DHCP获取IP地址并正常上网。
机房网段及参数如下:
参数名称 |
值 |
默认租约时间 |
21600秒 |
最大租约时间 |
43200秒 |
IP地址范围 |
192.168.0.50~192.168.0.150 |
子网掩码 |
255.255.255.0 |
网关地址 |
192.168.0.1 |
DNS服务地址 |
192.168.0.1 |
搜索域 |
linuxprobe.com |
看完配置要求后,首先请准备实验环境:
主机类型 |
操作系统 |
IP地址 |
DHCP服务端 |
红帽RHEL7操作系统 |
192.168.0.1 |
DHCP客户机 |
红帽RHEL7操作系统 |
DHCP自动获取地址 |
配置虚拟机网络类型(两台主机都要配置成一样的)
配置DHCP服务端的IP地址。
配置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.0.0 netmask 255.255.255.0 { |
作用域为192.168.0.0/24网段。 |
range 192.168.0.50 192.168.0.150; |
IP地址池为192.168.0.50-150(约100个IP地址)。 |
option subnet-mask 255.255.255.0; |
定义客户机默认的子网掩码。 |
option routers 192.168.0.1; |
定义客户机的网关地址。 |
option domain-name "linuxprobe.com"; |
定义默认的搜索域。 |
option domain-name-servers 192.168.0.1; |
定义客户机的DNS地址。 |
default-lease-time 21600; |
定义默认租约时间。 |
max-lease-time 43200; |
定义最大预约时间。 |
} |
此为结束符 |
重启dhcpd服务程序:
[root@linuxprobe ~]# systemctl start dhcpd
添加到开机启动项中:
[root@linuxprobe ~]# systemctl enable dhcpd
ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.target.wants/dhcpd.service'
此时在DHCP客户机上重启网卡设备,即可自动获取到IP地址:
13.4 分配固定IP地址
DHCP协议的术语预约指的就是保证局域子网中特定设备总是获取到相同的IP地址,换句话说dhcpd服务会将某个IP地址私藏下来,只有匹配到特定主机了才会拿出来分配,而要做IP地址与主机的绑定,需要使用下面的参数格式:
host 主机名称 { |
|
|
|
|
hardware |
ethernet |
该主机的MAC地址; |
|
fixed-address |
欲指定的IP地址; |
|
} |
|
|
查看到要绑定IP地址的主机mac地址(00:0c:29:5a:75:ac):
在DHCP配置文件中添加绑定语句:
ddns-update-style none;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.150;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option domain-name "linuxprobe.com";
option domain-name-servers 192.168.0.1;
default-lease-time 21600;
max-lease-time 43200;
host linuxprobe {
hardware ethernet 00:0c:29:5a:75:ac;
fixed-address 192.168.0.88;
}
}
确定配置参数填写正确后重启dhcpd服务:
[root@linuxprobe ~]# systemctl start dhcpd
DHCP客户机重新加载网卡设备后查看到顺利绑定到了指定的IP地址