动态主机地址管理协议
动态主机配置协议(DHCP)是一种基于UDP协议且仅限于在局域网内部使用的网络协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是为局域网内部的设备或网络供应商自动分配IP地址等参数。
简单来说,DHCP协议就是让局域网中的主机自动获得网络参数的服务。在下图所示的拓扑图中存在多台主机,如果手动配置每台主机的网络参数会相当麻烦,日后维护起来也让人头大。而且当机房内的主机数量进一步增加时(比如有100台,甚至1000台),这个手动配置以及维护工作的工作量足以让运维人员崩溃。借助于DHCP协议,不仅可以为主机自动分配网络参数,还可以确保主机使用的IP地址是唯一的,更重要的是,还能为特定主机分配固定的IP地址。
DHCP涉及的常见术语
作用域:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。
超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表。
排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。
地址池:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给DHCP客户端的IP地址范围。
租约:DHCP客户端能够使用动态分配的IP地址的时间。
预约:保证网络中的特定设备总是获取到相同的IP地址。
部署dhcpd服务程序
安装dhcp服务程序:yum install -y dhcp。
dhcpd服务的配置文件:/etc/dhcp/dhcpd.conf。
dhcp的服务程序的配置文件中只有3行注释语句,这意味着我们需要自行编写这个文件。
一个标准的配置文件应该包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数。其中,全局配置参数用于定义dhcpd服务程序的整体运行参数;子网网段声明用于配置整个子网段的地址属性。
dhcpd服务程序配置文件中使用的常见参数以及作用
自动管理IP地址
DHCP协议的设计初衷是为了更高效地集中管理局域网内的IP地址资源。DHCP服务器会自动把IP地址、子网掩码、网关、DNS地址等网络信息分配给有需要的客户端,而且当客户端的租约时间到期后还可以自动回收所分配的IP地址,以便交给新加入的客户端。
机房所用的网络地址以及参数信息
了解了真实需求以及机房网络中的配置参数之后,按照下表来配置DHCP服务器以及客户端。
DHCP服务器以及客户端的配置信息
作用域一般是个完整的IP地址段,而地址池中的IP地址才是真正供客户端使用的,因此地址池应该小于或等于作用域的IP地址范围。另外,由于VMware Workstation虚拟机软件自带DHCP服务,为了避免与自己配置的dhcpd服务程序产生冲突,应该先按照下图所示将虚拟机软件自带的DHCP功能关闭。
dhcp服务器192.168.10.10要做的:编辑dhcpd服务的配置文件,注意dhcpd服务配置文件中的每行参数后面都需要以分号(;)结尾,重启dhcpd服务并加入开机启动项。
vim /etc/dhcp/dhcpd.conf
ddns-update-style none; #设置DNS服务不自动进行动态更新
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; #定义最大预约时间(单位:秒)
} #结束符
systemctl start dhcpd #重启dhcpd服务
systemctl enable dhcpd #把dhcpd服务加入启动项
[root@lizhiqiang Desktop]# yum install dhcp
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
zhu | 4.1 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package dhcp.x86_64 12:4.2.5-27.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
[root@lizhiqiang Desktop]# vim /etc/dhcp/dhcpd.conf
[root@lizhiqiang Desktop]# systemctl restart dhcpd
[root@lizhiqiang Desktop]# systemctl status dhcpd
dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled)
Active: active (running) since Fri 2020-11-13 05:02:35 EST; 22s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 6995 (dhcpd)
CGroup: /system.slice/dhcpd.service
└─6995 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -use...
Nov 13 05:02:35 lizhiqiang systemd[1]: Started DHCPv4 Server Daemon.
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: Internet Systems Consortiu...
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: Copyright 2004-2013 Intern...
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: All rights reserved.
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: For info, please visit htt...
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: Not searching LDAP since l...
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: Wrote 0 leases to leases f...
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: Listening on LPF/eno167777...
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: Sending on LPF/eno167777...
Nov 13 05:02:35 lizhiqiang dhcpd[6995]: Sending on Socket/fallba...
Hint: Some lines were ellipsized, use -l to show in full.
[root@lizhiqiang Desktop]# systemctl enable dhcpd
ln -s '/usr/lib/systemd/system/dhcpd.service' '/etc/systemd/system/multi-user.target.wants/dhcpd.service'
[root@lizhiqiang Desktop]# systemctl enable dhcpd
[root@lizhiqiang Desktop]# iptables -F
客户机要做的:设置网卡为自动获取IP地址(多种配置网卡的方法,编辑网卡配置文件、nmtui、nm-connection-editor均可),重启网卡服务(systemctl restart network),查看网卡参数看是否自动获取了ip地址(ifconfig)。
分配固定IP地址
在DHCP协议中有个术语是“预约”,它用来确保局域网中特定的设备总是获取到固定的IP地址。换句话说,就是dhcpd服务程序会把某个IP地址私藏下来,只将其用于相匹配的特定设备。
MAC地址是网卡上面的一串独立的标识符,具备唯一性,不会存在冲突的情况。通过IP地址与设备MAC地址绑定即可实现为设备分配固定IP地址的功能。
dhcp服务器要做的:
1.获取特定设备的MAC地址(直接查看设备的网卡信息获得;或先通过启动dhcpd程序为设备分配IP地址,查看dhcp服务器本地的日志文件/var/log.message的相关记录,当中就会有分配过IP地址的设备的MAC地址信息);
2.按下面格式编辑dhcpd配置文件,重启dhcpd服务:
vim /etc/dhcp/dhcpd.conf
...
subnet x.x.x.x netmask x.x.x.x {
...
host 主机名称 { #包裹在作用域定义中
hardware ethernet 该主机的MAC地址;
fixed-address 欲指定的IP地址;
}
}
注意,Windows系统中看到的MAC地址,格式为xx-xx-xx-xx-xx-xx,间隔符为减号(-)。但是在Linux系统中,MAC地址的间隔符则为冒号(:),在Linux中配置dhcpd服务的IP地址与MAC绑定时,MAC的间隔符也为冒号(:)。
例:在上面的基础上,配置dhcpd,使得特定客户机总是获取特定IP地址192.168.10.88。
dhcp服务器:
vim /etc/dhcp/dhcpd.conf
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:e9:be:e2;
fixed-address 192.168.10.77;
}
}
systemctl restart dhcpd
host的主机名称是 [root@lizhiqiang Desktop]# 中的lizhiqiang
[root@lizhiqiang Desktop]# systemctl restart dhcpd
[root@lizhiqiang Desktop]# systemctl status dhcpd
dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled)
Active: active (running) since Fri 2020-11-13 06:09:17 EST; 10s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 10492 (dhcpd)
CGroup: /system.slice/dhcpd.service
└─10492 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user d
客户机反应