一、动态主机配置协议
1、什么是动态主机配置协议?有什么用?
动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种基于 UDP 协议且仅限于在局域网内部使用的网络协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是为局域网内部的设备或网络供应商自动分配 IP 地址等参数。
该协议用于自动管理局域网内主机的 IP 地址、子网掩码、网关地址及 DNS 地址等参数,可以有效地提升 IP 地址的利用率,提高配置效率,并降低管理与维护成本。
简单来说,DHCP 协议就是让局域网中的主机自动获得网络参数的服务。不仅可以为主机自动分配网络参数,还可以确保主机使用的 IP 地址是唯一的,更重要的是,还能为特定主机分配固定的 IP 地址。
2、与DHCP相关的常用术语
作用域:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。
超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表。
排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。
地址池:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给DHCP客户端的IP地址范围。
租约:DHCP客户端能够使用动态分配的IP地址的时间。
预约:保证网络中的特定设备总是获取到相同的IP地址。
二、部署 dhcpd 服务
1、关闭防火墙和selinux
[root@DHCP ~]# systemctl stop firewalld #关闭防火墙
[root@DHCP ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@DHCP ~]# setenforce 0 #临时关闭selinux
2、安装 dhcp 服务程序
dhcpd 是 Linux 系统中用于提供 DHCP 协议的服务程序。尽管 DHCP 协议的功能十分强大,但是 dhcpd 服务程序的配置步骤却十分简单。
[root@DHCP ~]# yum install dhcp
...
Install 1 Package
Total download size: 506 k
Installed size: 1.4 M
Is this ok [y/d/N]: y #这里回复y确认安装
...
3、关于 dhcpd 服务的配置文件
[root@DHCP ~]# cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example #有关dhcpd配置的示例文件
# see dhcpd.conf(5) man page
dhcp的服务程序的配置文件中只有3行注释语句,这意味着我们需要自行编写这个文件,如果不知道怎么编写,可以看一下配置文件中第2行的有关dhcpd配置的示例文件
一个标准的配置文件应该包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数。其中,全局配置参数用于定义dhcpd服务程序的整体运行参数;子网网段声明用于配置整个子网段的地址属性。其常用参数及其含义如下图示:
三、使用动态 IP 地址
DHCP 协议的设计初衷是为了更高效地集中管理局域网内的 IP 地址资源。DHCP 服务器会自动把 IP 地址、子网掩码、网关、DNS 地址等网络信息分配给有需要的客户端,而且当客户端的租约时间到期后还可以自动回收所分配的 IP 地址,以便交给新加入的客户端。
1、需求描述
明天会有100名学员自带笔记本电脑来千锋参加云计算培训,请保证这些学员能够使用机房的DHCP服务器自动获取IP地址并正常上网。千锋机房所用的网络地址及其参数信息如下图示:
- 机房所用的网络地址以及参数信息
参数名称 | 值 |
---|---|
默认租约时间 | 21600秒 |
最大租约时间 | 43200秒 |
IP地址范围 | 10.3.134.50~10.3.134.150 |
子网掩码 | 255.255.255.0 |
网关地址 | 10.3.134.1 |
DNS服务器地址 | 10.3.134.1 |
搜索域 | qfedu.com |
在了解了真实需求以及机房网络中的配置参数之后,我们按照如上参数来配置DHCP服务器以及客户端
- DHCP服务器以及客户端的配置信息
主机类型 | 操作系统 | IP地址 |
---|---|---|
DHCP服务器 | RHEL 7 | 192.168.10.1 |
DHCP客户机 | RHEL 7 | DHCP自动获取地址 |
2、准备工作
前面讲到,作用域一般是个完整的IP地址段,而地址池中的IP地址才是真正供客户端使用的,因此地址池应该小于或等于作用域的IP地址范围。另外,由于VMware Workstation虚拟机软件自带DHCP服务,为了避免与自己配置的dhcpd服务程序产生冲突,应该先将虚拟机软件自带的DHCP功能关闭。
- 另需注意:DHCP 客户端与DHCP服务器需要处于同一种网络模式----仅主机模式(Hostonly),否则就会产生物理隔离,从而无法获取 IP地址。
3、开始配置 dhcpd 服务
在确认 DHCP 服务器的 IP 地址等网络信息配置妥当后就可以配置 dhcpd 服务程序了。请注意,在配置dhcpd服务程序时,配置文件中的每行参数后面都需要以分号;
结尾,这是规定。
[root@DHCP ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 10.3.134.0 netmask 255.255.255.0 {
range 10.3.134.50 10.3.134.150;
option domain-name-servers 10.3.134.1;
option domain-name "qfedu.com";
option routers 10.3.134.1;
default-lease-time 21600;
max-lease-time 43200;
}
- dhcpd服务程序配置文件中使用的参数以及作用
参数 | 作用 |
---|---|
ddns-update-style none; | 设置DNS服务不自动进行动态更新 |
ignore client-updates; | 忽略客户端更新DNS记录 |
subnet 10.3.134.0 netmask 255.255.255.0 { | 作用域为192.168.10.0/24网段 |
range 10.3.134.50 10.3.134.150; | IP地址池为10.3.134.50-150(约100个IP地址) |
option subnet-mask 255.255.255.0; | 定义客户端默认的子网掩码 |
option routers 10.3.134.1; | 定义客户端的网关地址 |
option domain-name "qfedu.com"; | 定义默认的搜索域 |
option domain-name-servers 10.3.134.1; | 定义客户端的DNS地址 |
default-lease-time 21600; | 定义默认租约时间(单位:秒) |
max-lease-time 43200; | 定义最大预约时间(单位:秒) |
} | 结束符 |
对 dhcpd服务配置完成后,重启 dhcpd服务,并将其添加到开机启动项中去。
[root@DHCP ~]# systemctl start dhcpd
[root@DHCP ~]# systemctl enable dhcpd
4、在客户端测试 dhcpd 服务
把dhcpd服务程序配置妥当之后就可以开启客户端来检验IP分配效果了。重启客户端的网卡服务后即可看到自动分配到的IP地址
[root@Client ~]# systemctl restart network
[root@Client ~]# ifconfig
四、使用固定 IP 地址
在DHCP协议中有个术语是“预约”,它用来确保局域网中特定的设备总是获取到固定的IP地址。换句话说,就是dhcpd服务程序会把某个IP地址私藏下来,只将其用于相匹配的特定设备。
要想把某个IP地址与某台主机进行绑定,就需要用到这台主机的MAC地址。
1、准备工作
MAC地址是网卡上面的一串独立的标识符,具备唯一性,因此不会存在冲突的情况。
在dhcpd服务程序的配置文件中,按照如下格式将IP地址与MAC地址进行绑定。
如果不方便查看主机的MAC地址,该怎么办呢?比如,要给老板使用的主机绑定IP地址,总不能随便就去查看老板的主机信息吧。我们首先启动dhcpd服务程序,为老板的主机分配一个IP地址,这样就会在DHCP服务器本地的日志文件中
/var/log/messages
保存这次的IP地址分配记录。然后查看日志文件,就可以获悉主机的MAC地址了
2、配置 dhcpd 服务
[root@DHCP ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 10.3.134.0 netmask 255.255.255.0 {
range 10.3.134.50 10.3.134.150;
option domain-name-servers 10.3.134.1;
option domain-name "qdedu.com";
option routers 10.3.134.1;
default-lease-time 21600;
max-lease-time 43200;
host localhost {
hardware ethernet 00:0c:29:9d:78:d8; #指定的 IP地址与客户机的MAC 地址进行绑定
fiexed-address 10.3.134.50;
}
}
需要说明的是,如果您刚刚为这台主机分配了IP地址,则它的IP地址租约时间还没有到期,因此不会立即换成新绑定的IP地址。要想立即查看绑定效果,则需要重启一下客户端的网络服务
[root@DHCP ~]# systemctl restart network
[root@DHCP ~]# ifconfig
五、课后习题
1.简述DHCP协议的主要用途。
答:为局域网内部的设备或网络供应商自动分配IP地址等参数。
2.DHCP协议能够为客户端分配什么网卡资源?
答:可为客户端分配IP地址、子网掩码、网关地址以及DNS地址等信息。
3.真正供用户使用的IP地址范围是作用域还是地址池?
答:地址池,因为作用域内还会包含要排除掉的IP地址。
4.简述DHCP协议中“租约”的作用。
答:租约分为默认租约时间和最大租约时间,用于在租约时间到期后自动回收主机的IP地址,以免造成IP地址的浪费。
5.把IP地址与主机的什么信息绑定,就可以保证该主机一直获取到固定的IP地址?
答:主机网卡的MAC地址。