Cyber_Security_Notes/A. 第一阶段/17_DHCP.md
2024-08-29 08:54:54 +08:00

409 lines
14 KiB
Markdown
Raw Permalink 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.

# DHCP
### 一、DHCP概述
1. **DHCP是什么**
- DHCPDynamic Host Configuration Protocol :动态主机配置协议
- DHCP是一种集中对用户IP地址进行动态管理和配置的技术
2. **DHCP的作用**
- 作用实现IP地址的动态分配和集中管理
- 优势避免手工配置IP地址提高工作效率避免出错且能快速适应网络的变化
3. **DHCP角色**
- DHCP客户端需要获取IP地址的设备计算机、服务器、手机、IP电话等
- DHCP服务器负责为DHCP客户端分配IP地址等网络参数的设备
- DHCP 中继(中转站-可选负责DHCP服务器和DHCP客户端之间的DHCP报文房地产中介公司
> 企业网络中一般不需要部署DHCP中继
### 二、DHCP服务器给首次接入网络的客户端分配网络参数的工作原理
1. **发现阶段**客户端广播发送DHCP Discover报文DHCP发现报文,客户端找DHCP服务器请求IP地址
2. **提供阶段**服务器收到客户端发的报文后会单播回复DHCP Offer报文DHCP回应报文,服务器给客户端发IP地址、网关、DNS等
3. **选择阶段**客户端收到Offer报文后会再次广播发送DHCP Request报文DHCP请求报文,客户端广播告知所有的服务器选择了某某IP地址
4. **确认阶段**服务器收到客户端发报文后会单播回复DHCP ACK报文DHCP确认报文确认分配结果只有发了ACK报文客户端才可以使用IP
### 三、基于全局的DHCP实验
![image-20240828200710881](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240828200710881.png)
- **需求**
> PC1/PC2能够自动获取IP地址、网关、DNS
- **配置步骤**
- 第一步在系统视图下开启DHCP功能
- 第二步配置IP地址池
- 创建IP地址池
- 配置可分配的IP地址段
- 配置网关地址
- 配置DNS地址
- 配置租期
- 第三步配置R1路由器接口的IP地址
- 这个接口接收客户端发的报文这个接口的IP地址即客户端的网关地址
- 在这个接口下开启基于全局的DHCP功能
- 第四步:验证结果
- **配置命令**
- R1的配置
```
[R1]dhcp enable //开启DHCP功能
[R1]ip pool tedu //创建IP地址池
[R1-ip-pool-tedu]network 192.168.1.0 mask 24 //配置可分配的地址段
[R1-ip-pool-tedu]gateway-list 192.168.1.254 //配置网关地址
[R1-ip-pool-tedu]dns-list 8.8.8.8 //配置DNS地址
[R1-ip-pool-tedu]lease day 1 //配置租期
[R1-ip-pool-tedu]quit
[R1]int g0/0/0
[R1-G0/0/0]ip address 192.168.1.254 24 //此接口IP地址和网关地址一致
[R1-G0/0/0]dhcp select global //在接口下开启基于全局的DHCP
```
- 验证与测试
> PC1和PC2选择获取地址的方式为DHCP
> 然后PC1和PC2在命令行中使用ipconfig 命令查看IP地址
- 数据抓包
![image-20240828201014044](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240828201014044.png)
- 配置地址排除
```
[R1]ip pool tedu
[R1-ip-pool-tedu]excluded-ip-address 192.168.1.250 192.168.1.253 //在基于全局的IP地址池中做地址排除,排除的IP地址不做dhcp分发
```
- 查看IP地址池
```
<R1>display ip pool name tedu all //查看全局IP地址池中全部地址信息
<R1>display ip pool name tedu used //查看全局IP地址池中已分发的IP地址
```
### 四、基于接口的DHCP实验
![image-20240828201131434](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240828201131434.png)
- **需求**
> PC1/PC2能够自动获取IP地址、网关、DNS
- **配置步骤**
- 第一步在系统视图下开启DHCP功能
- 第二步配置基于接口的DHCP
- 配置接口的IP地址和掩码
- 在接口下开启基于接口的DHCP功能
- 在接口下配置DNS地址
- 在接口下配置租期
- **配置命令**
- R1配置
```
[R1]dhcp enable //开启dhcp功能
[R1]int g0/0/0
[R1-G0/0/0]ip address 192.168.1.254 24
[R1-G0/0/0]dhcp select interface //开启基于接口的dhcp 功能
[R1-G0/0/0]dhcp server dns-list 8.8.8.8
[R1-G0/0/0]dhcp server lease day 1
```
- **验证与测试**
> PC1和PC2选择获取地址的方式为DHCP
> 然后PC1和PC2在命令行中使用ipconfig 命令查看IP地址
### 五、DHCP中继代理原理
- **问题**
> 当客户机和DHCP服务器不在一个广播域时DHCP服务器无法接收到客户机的DHCP discover广播数据包客户机就无法获得IP地
- **解决**
> 在客户机所在的广播域中寻找一台路由器这台路由器一个端口在客户机所在的广播域另外一个端口在DHCP服务器所在的广播域让这台路由器主动接收客户机的DHCP discover数据包然后由这台路由器代替客户机向DHCP服务器申请IP地址得到地址后再把这个地址交给客户机这台服务器称之为DHCP中继代理服务器
- **DHCP中继实验**
![image-20240828201521120](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240828201521120.png)
- **需求**
- 希望PC1/PC2自动获取到IP地址网关、DNS等网络参数
- Server1 服务器手工配置一个静态IP地址192.168.10.253这个地址是专门给服务器使用的所以这个地址不能通过DHCP分发避免IP地址冲突
- **配置步骤**
- 第一步配置R2-DHCP服务器
1. 在系统视图下开启DHCP功能
2. 在R2-DHCP服务器中配置基于全局的DHCP
- 创建IP地址池:ntd
- 定义网段192.168.10.0/24
- 定义网关:192.168.10.254
- 定于DNS8.8.8.8
- 定义排除地址192.168.10.253 这个IP地址不做DHCP分发
3. 在接口上配置IP地址开启基于全局的dhcp
- 第二步配置DHCP中继
1. R1中继设备开启DHCP功能
2. 配置R1中继设备的接口IP地址
3. 在R1设备连接客户端的接口上开启DHCP中继指向DHCP服务器:192.168.20.20
- 第三步:配置静态路由
- 在R2配置去往192.168.10.0网段的路由下一跳为192.168.20.10
- 第四步:验证与测试
- **配置命令**
- 第一步配置DHCP服务器
- DHCP服务器配置
```
[R2-DHCP]dhcp enable //开启dhcp 功能
[R2-DHCP]ip pool ntd //创建IP地址池
[R2-DHCP-ip-pool-ntd]network 192.168.10.0 mask 24
[R2-DHCP-ip-pool-ntd]gateway-list 192.168.10.254
[R2-DHCP-ip-pool-ntd]dns-list 8.8.8.8
[R2-DHCP-ip-pool-ntd]excluded-ip-address 192.168.10.253
[R2-DHCP-ip-pool-ntd]quit
[R2-DHCP]int g0/0/0
[R2-DHCP-GigabitEthernet0/0/0]ip add 192.168.20.20 24
[R2-DHCP-GigabitEthernet0/0/0]dhcp select global
```
- 第二步配置DHCP中继
```
[R1-zj]dhcp enable
[R1-zj]int g0/0/0
[R1-zj-G0/0/0]ip add 192.168.20.10 24
[R1-zj-G0/0/0]int g0/0/1
[R1-zj-G0/0/1]ip add 192.168.10.254 24
[R1-zj-G0/0/1]dhcp select relay //在接口上开启dhcp中继功能
[R1-zj-G0/0/1]dhcp relay server-ip 192.168.20.2 //指定dhcp服务器的IP地址
```
- 第三步在DHCP服务器上配置去往中继设备的回程路由
```
[R2-DHCP]ip route-static 192.168.10.0 24 192.168.20.10
```
- 第四步:验证与测试
```
在PC1和PC2中设置IP地址的获取方式为DHCP
在PC1和PC2中命令行中输入命令
```
- **经验证发现**
```
PC1的IP地址是192.168.10.252
PC2的IP地址是192.168.10.251
192.168.10.253这个地址已经被排除没有被DHCP分发
```
### 六、三层交换机部署DHCP
![image-20240829083619899](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240829083619899.png)
- **需求**
> vlan10和vlan20的pc自动获取IP地址
- **配置步骤**
- 第一步在sw1部署dhcp
1. 创建vlan
2. 配置trunk链路-交换机互联接口做trunk
3. 配置vlanif 虚接口地址--每个vlan的网关地址
4. 开启dhcp 功能
5. 创建IP地址池
- 定义网段
- 定义网关
- 定义dns
6. 在vlanif 虚接口下开启dhcp select global
- 第二步配置sw2和sw3接入层交换机
1. 创建vlan
2. 接口加入vlan,交换机和pc互联的接口做access
3. 交换机和交换机互联的接口做trunk
- 第三步:验证与测试
- **配置命令**
- 第一步在sw1部署dhcp
- DHCP服务器配置
```
[SW1-DHCP]vlan batch 10 20
[SW1-DHCP]port-group group-member g0/0/1 g0/0/2
[SW1-DHCP-port-group]port link-type trunk
[SW1-DHCP-port-group]port trunk allow-pass vlan all
[SW1-DHCP-port-group]quit
[SW1-DHCP]ip pool vlan10
[SW1-DHCP-ip-pool-vlan10]network 192.168.10.0 mask 24
[SW1-DHCP-ip-pool-vlan10]gateway-list 192.168.10.254
[SW1-DHCP-ip-pool-vlan10]dns-list 8.8.8.8
[SW1-DHCP-ip-pool-vlan10]quit
[SW1-DHCP]ip pool vlan20
[SW1-DHCP-ip-pool-vlan20]network 192.168.20.0 mask 24
[SW1-DHCP-ip-pool-vlan20]gateway-list 192.168.20.254
[SW1-DHCP-ip-pool-vlan20]dns-list 8.8.8.8
[SW1-DHCP-ip-pool-vlan20]quit
[SW1-DHCP]dhcp enable
[SW1-DHCP]int vlanif 10
[SW1-DHCP-Vlanif10]ip address 192.168.10.254 24
[SW1-DHCP-Vlanif10]dhcp select global
[SW1-DHCP-Vlanif10]int vlanif 20
[SW1-DHCP-Vlanif20]ip address 192.168.20.254 24
[SW1-DHCP-Vlanif20]dhcp select global
```
- 第二步配置sw2和sw3接入层交换机
- SW2配置
```
[SW2]vlan batch 10 20
[SW2]port-group group-member g0/0/2 g0/0/3
[SW2-port-group]port link-type access
[SW2-port-group]port default vlan 10
[SW2-port-group]quit
[SW2]int g0/0/1
[SW2-G0/0/1]port link-type trunk
[SW2-G0/0/1]port trunk allow-pass vlan all
```
- SW3配置
```
[SW3]vlan batch 10 20
[SW3]port-group group-member g0/0/2 g0/0/3
[SW3-port-group]port link-type access
[SW3-port-group]port default vlan 20
[SW3-port-group]quit
[SW3]int g0/0/1
[SW3-G0/0/1]port link-type trunk
[SW3-G0/0/1]port trunk allow-pass vlan all
```
- 第三步:验证与测试
- 在PC1和PC2中设置IP地址的获取方式为DHCP
- 在PC1和PC2中命令行中输入命令
```
ipconfig /release //释放当前IP地址
ipconfig /renew //更新IP地址获取IP地址
```
```
<SW1-DHCP>display ip pool name vlan10 all //查看地址池中全部IP信息
<SW1-DHCP>display ip pool name vlan10 used //查看地址中已使用的IP地址
<SW1-DHCP>display ip pool name vlan20 all //查看地址池中全部IP信息
<SW1-DHCP>display ip pool name vlan20 used //查看地址中已使用的IP地址
```
```
<S3>reset ip pool name vlan10 192.168.10.253回收已分配的IP地址
<S3>reset ip pool name vlan10 all
```
### 七、租期
> 1租期T1:
> 当IP地址的租用时间到达50%时客户机会以单播方式向服务器发送Request 请求报文请求更新IP地址租期。
> DHCP 服务器如果回复DHCP ACK确认报文给客户机代表租期更新成功从0开始
> 2租期T2
> 如果DHCP服务器一直没有回应那么在IP地址的租用时间到达87.5%时客户机会以广播方式向服务器发送Request 请求报文请求更新IP地址租期
> DHCP服务器如果回复DHCP ACK 确认报文给客户机代表租期更新成功从0开始
1. **access接口恢复默认配置缺省配置**
```
[SW1]vlan batch 10 20
[SW1]interface g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type access
[SW1-GigabitEthernet0/0/1]port default vlan 10
[SW1-GigabitEthernet0/0/1]port link-type trunk //将接口模式修改为trunk失败
Error: Please renew the default configurations. :错误:请更新默认配置
```
- 如何解决如何恢复接口上VLAN的缺省配置
- 第一种方法
```
[SW1-GigabitEthernet0/0/1]port default vlan 1 //接口pvid恢复为vlan1
[SW1-GigabitEthernet0/0/1]port link-type trunk //将接口模式修改为trunk成功
```
- 第二种方法
```
[SW1-GigabitEthernet0/0/1]undo port default vlan //恢复接口上VLAN的缺省配置
[SW1-GigabitEthernet0/0/1]port link-type trunk //将接口模式修改为trunk成功
```
2. **trunk接口恢复默认配置缺省配置**
```
[SW1]vlan batch 10 20
[SW1]interface g0/0/1
[SW1-G0/0/1]port link-type trunk
[SW1-G0/0/1]port trunk allow-pass vlan 10 20
[SW1-G0/0/1]port link-type access //将接口模式修改为access失败
Error: Please renew the default configurations. :错误:请更新默认配置
```
- 如何解决如何恢复接口上VLAN的缺省配置
```
[SW1-G0/0/1]undo port trunk allow-pass vlan 10 20 //恢复默认
[SW1-G0/0/1]port link-type access //将接口模式修改为access成功
```
- 备注:
```
[SW1-G0/0/1]undo port trunk allow-pass vlan all //删除所有vlan
[SW1-G0/0/1]port link-type access //无法修改报错
Error: Please renew the default configurations.
```
- 如何解决:恢复默认配置: undo port trunk allow-pass vlan all 的时候把所有vlan 都干掉了
所以我们要恢复vlan1
- 第一种方法
```
[SW1-G0/0/1]undo port trunk allow-pass vlan 2 to 4094 //只删除2 to 4094 不删除vlan1
[SW1-G0/0/1]port link-type access //修改成功
```
- 第二种方法
```
[SW1-G0/0/1]undo port trunk allow-pass vlan all //删除所有vlan
[SW1-G0/0/1]port trunk allow-pass vlan 1 //补上vlan1,恢复默认
[SW1-G0/0/1]port link-type access //修改成功
```