Files
security-book/00.基础阶段/01.网络基础/07.DHCP.md
2025-08-27 14:13:17 +08:00

135 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 07.DHCP
## 1. DHCP理论
DHCP (Dynamic Host configuration Protocol,动态主机配置协议 )
是一个局域网的网络协议使用UDP协议工作
主要有两个用途:
1. 用于内部网或网络服务供应商自动分配IP地址
2. 给用户用于内部网管理员作为对所有计算机作中央管理的手段。
功能简述它主要是通过客户端发送广播数据包给整个物理网段内的所有主机若局域网内有DHCP服务器时才会响应客户端的IP参数要求。
### 1.1 DHCP服务器的需求
1. 拥有真实物理网卡,或者连接广播域的真实物理网卡
2. 该接口或者该物理网卡必须有一个合理的ip地址 此IP地址最好手动配置
### 1.2 DHCP的服务端和客户端
服务端负责在所创建的地址池中向申请地址的客户端分发地址服务端口号67
客户端:接收地址 服务端口号68
![image-20200313193625915](07.DHCP/image-20200313193625915.png)
![image-20200313193642344](07.DHCP/image-20200313193642344.png)
### 1.3 DHCP欺骗攻击
![在这里插入图片描述](07.DHCP/20190326141113730_.png)
### 1.4 DHCP三种分配机制
| 分配方式 | 说明 |
| ------------------------------------ | ------------------------------------------------------------ |
| 自动分配方式Automatic Allocation | DHCP服务器为主机指定一个永久性的IP地址一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后就可以永久性的使用该地址。 |
| 动态分配方式Dynamic Allocation | DHCP服务器给主机指定一个具有时间限制的IP地址时间到期或主机明确表示放弃该地址时该地址可以被其他主机使用。 |
| 手工分配方式Manual Allocation | 客户端的IP地址是由网络管理员指定的DHCP服务器只是将指定的IP地址告诉客户端主机。 |
## 2. DHCP配置
```
Router(config)#server dhcp
# 开启DHCP服务
Router(config)#ip dhcp pool [pool name]
# 定义DHCP地址池一个网段对应一个地址池
Router(config-dhcp)#network [network address][subnet mask]
# 定义地址池关联的网段
Router(config-dhcp)#default-router [host address]
# 定义分配给客户端的网关IP
Router(config-dhcp)#lease <天数> <小时> <分钟>
Router(config-dhcp)#dns-server <主DNS服务器> <备DNS服务器>
Router(config)#ip dhcp excluded-address 172.16.1.100 172.16.1.103
# 将一个或多个地址排除在地址池之外如网关IP等以避免分配给客户端
Router#show ip dhcp binding
# 查看dhcp已经分配出去的地址
```
## 3. DHCP固定地址绑定
服务器或者固定在一个局域网的设备不需要用DHCP绑定直接在设备上设置固定IP地址更加靠谱。
当移动的电子设备或者只能DHCP获取地址的设备需要固定的IP的时候可以使用DHCP固定地址绑定。
### 3.1 步骤1
首先让设备自动获取IP地址从而获得设备的身份认证信息身份认证信息可能是下面的一种
- 客户端ID不同的设备都会有自己的生成方式但是都能保障局域网唯一。
- 硬件地址一般是MAC地址
- 用户名,一般不用
```
R2#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
192.168.23.100 0063.6973.636f.2d61. Mar 14 2020 05:32 AM Automatic
6162.622e.6363.3030.
2e33.3030.302d.4574.
302f.30
# 这边我们就得到了当前192.168.23.100的客户端ID
```
### 3.2 步骤2
设置一个DHCP地址池这个池里面就放一个IP地址然后绑定这个客户端ID
需要注意在绑定之前记得清空DHCP现有地址池
```
show ip dhcp binding # 查看DHCP的绑定情况得到设备的身份证明信息
clear ip dhcp binding * # 不清空对应的绑定项,可能导致无法绑定
ip dhcp pool <池的名字>
host <IP地址>
client-identifier <输入ID>
hardware-address <输入mac地址> # ID和MAC二选一
dns-server <主DNS> <备用DNS>
default-route <网关IP>
```
### 3.3 步骤3
去客户端上释放DHCP地址重新获得
```
shutdown
no shutdown
```
## 4. DHCP中继问题
在企业中经常会出现IP地址集中管控的需求而企业网段众多。比如一台域控制服务器需要管理多个局域网这个时候由于广播无法穿透路由器就需要用到DHCP中继。
![image-20200314114800844](07.DHCP/image-20200314114800844.png)
比如上图的情况每个部门有不同的网段但是最终需要被统一一台DHCP服务器分配因为这台DHCP服务器同时也是域控制器等等管理服务的服务器。
我们可以在每个网段的网关接口上配置`help-adderss`来将广播变为单播发送并且将收到的单播DHCP再变为广播发回局域网。从而完成DHCP中继。
```
ip helper-address 100.12.12.1 # 在每个内网的路由器接口上配置帮助地址
```
## 5. DHCP续租
DHCP分配的IP地址只要动态分配就有一个租约时间在Cisco路由器上这个时间默认是一天。可以手动修改。
![image-20200314134545655](07.DHCP/image-20200314134545655.png)
如果续租成功了,那么从续租那一刻起重新计算租约时间。