1.DHCP
一、简介
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。
DHCP具有功能
-
保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
-
DHCP应当可以给用户分配永久固定的IP地址。
-
DHCP应当可以同用其他方法获得IP地址的 主机共存(如手工配置IP地址的主机)。
-
DHCP 服务器应当向现有的BOOTP 客户端提供服务。
DHCP好处
- 减少管理员的工作量
- 避免输入错误的可能
- 避免IP地址冲突
- 当更改lP地址段时,不需要重新配置每个用户的IP地址
- 提高了IP地址的利用率
- 方便客户端的配置
DHCP分配功能
DHCP有三种机制分配IP地址:
-
自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
-
动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
-
手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。
DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述。
二.DHCP的租约过程
① 客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程
② 分为四个步骤(华为服务器中依次是广播→单播→广播→单播)
(1)客户端在网络中搜索服务器
(2)服务器向客户端响应服务
(3)客户端向目标服务器发出服务请求
(4)服务器向客户端提供服务
详情:
1.客户机请求IP地址
• 当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
• 此时DHCP客户机以广播方式发送DHCP Discover发现信息来寻找DHCP服务器
2.服务器响应
• DHCP服务器接收到来自客户机请求IP地址的信息时,在自己的IP地址池中查找是否有合法的IP地址提供给客户机
• 如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,然后广播- -则DHCP Offer消息
3.客户机选择IP地址
• DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
4.服务器确定租约
• DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息
• 当客户机收到DHCP ACK消息时,配置IP地址,完成TCP/IP的初始化
5.重新登录
• DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息
6.更新租约
• 当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约
• 客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约
租约过程:
重新登录:
三.使用DHCP动态配置主机地址
① DHCP服务
• 为大量客户机自动分配地址,提供集中管理
• 减轻管理和维护成本、提高网络配置效率
② 可分配的地址信息主要包括
• 网卡的IP地址、子网掩码
• 对应的网络地址、广播地址
• 默认网关地址
• DNS服务器地址
四、实验:设置DHCP服务器分配地址
实验目的:
将Linux虚拟机设置成DHCP服务器,自动分配IP地址给Windows10 虚拟机。
实验步骤:
-
Linux虚拟机关闭防火墙和selinux。
-
安装 dhcp 软件包,并查看配置文件。
-
将Linux虚拟机的网络模式改成仅主机模式。修改网卡配置文件,之后重启网络服务。
-
编辑dhcp服务的配置文件/etc/dhcp/dhcpd.conf,设置网段、地址池、网关地址。之后重启dhcp服务。
-
验证Windows10虚拟机虚拟机能否获取DHCP服务器分配的IP地址。
实验实例:
1.关闭linux虚拟机防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
2.安装 dhcp 软件包,并查看配置文件。
[root@localhost ~]# yum install dhcp -y //安装dhcp
3.将Linux虚拟机设为主机模式
虚拟机上要将本地DHCP服务勾选去掉:
- 修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens33,之后重启网络服务:
[root@localhost ~]# vim /sysconfig/net-scripts/ifcfg-ens33 //修改网卡配置文件
[root@localhost ~]# systemctl restart network //重启网络服务
5.编辑dhcp服务的配置文件/etc/dhcp/dhcpd.conf,设置网段(要和虚拟网络编辑器中的保持一致)、地址池、网关地址。之后重启dhcp服务
# 将模板文件复制为配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf #可以在这个文件找到dhcp模板路径
[root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
# 编辑dhcp配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
------------------------------------
subnet 192.168.48.0 netmask 255.255.255.0 { //设置子网IP、子网掩码
range 192.168.48.10 192.168.48.50; //设置地址池
option routers 192.168.48.1; //设置网关地址
DNS=114.114.114.114; //dns可以不设
# 重启dhcp服务
[root@localhost ~]# systemctl restart dhcpd //重启dhcp服务
[root@localhost ~]# systemctl status dhcpd //查看dhcp状态,已启动
注意!!!行尾一定要加;号
6.验证Windows10虚拟机虚拟机能否获取DHCP服务器分配的IP地址
Windows10虚拟机,将网络类型修改成“仅主机模式”。
释放IP地址,之后重新获取IP地址。
windows命令:
ipconfig #查看网卡信息
ipconfig /release #释放地址
ipconfig /renew #重新获取地址
ipconfig /all #可以看到详情信息
五、DHCP中继原理
当企业的内部网络规模较大时,通常被划分为多个不同的子网,网络内配置了VLAN,网络内配置了VLAN,VLAN能隔离广播,而DHCP协议使用广播。
DHCP服务器在VLAN 100中,就只有VLAN 100内的客户机能从此内获得IP地址。
两种解决办法:
- 为每个网段安装一台DHCP服务器,但这种方式存在资源上的浪费,而且不利于集中管理。
- 在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息在VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器获得IP地址。