A011 - 基础 - dhcp

本文详细介绍了DHCP协议的工作原理,包括报文类型、选项、工作流程,以及华为设备上的DHCP配置和安全特性如DHCPSnooping。涵盖了地址分配、续租、Relay机制和防御策略等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 概述

DHCP - Dynamic Host Config Protocol 在 IPv4 中实现了 Client 网络属性(IP 与 Options) 的配置自动化;

DHCP 是 CS 架构,基于 UDP 67(Server监听) 和 UDP 68(Client 监听);

二.原理

2.1 基本概念

报文:

  • DHCP 报头有两种类型,Op=1 是请求, Op=2 是响应;
  • 更详细的类型在 Option 53 中,包含 DISCOVER/OFFER/REQUEST/DECLINE/ACK/NAK/RELEASE/INFORM

选项:

  • 增强 DHCP 功能,支持额外信息的交互;
  • 常用的扩展 - 为 Client 分配网关/DNS/启动盘路径等;
  • option 43 为厂商定制选项,可用于在 WLAN 组网中,携带 AC 的地址,协助创建 CAPWAP 隧道;
  • option 82 中继代理信息选项,中继处理 Client 请求后添加,用于告知 Server Client 一些信息;

2.2 工作过程

Client 三层广播 DISCOVER:

  • 报文的源地址为 0.0.0.0/接口MAC, 目的为 255.255.255.255/FFFF-FFFF-FFF

  • 报文携带客户端的 MAC 地址与请求的属性信息;

  • 如果 Client 非首次连接至网络,会携带原地址;

Server 三层广播/单播 OFFER:

  • Server 基于 Client 的 MAC 和收到该报文接口的 IP 地址段,从 pool 中选取合适地址分配给 Client;
  • Server 选定 IP 后,可能会在网内进行重复地址探测,可能得方式有 Ping 和 ARP,无重复后发出;
  • OFFER 报文是广播和单播的选择,基于 DISCOVER 报文中的 Flag 第一位,0 - unicat,1 - brocast;

Client 三层广播 REQUEST:

  • 告知该广播域下的其他 Clients,该地址已占用;

Server 三层单播 ACK:

  • Client 收到该报文后,在配置并使用该地址钱,会进行一次 ARP 探测,如果发现重复,会告知 Server;

续租:

  • 在租约过了 T1 - 50% 时,可能会单播发送 Request 报文,刷新租约;
  • 在租约过了 T2 - 87.5% 时,可能会广播发送 Request 报文,刷新租约;
  • 在租约到期后,发送 DISCOVER 报文,重新获取;
  • 地址分配优先级: MAC静态 > DISCOVER 携带 > 空闲 IP > 超过租约的 IP > 产生过冲突的 IP;

Relay:

  • 让 DHCP 报文可以跨三层传输;
  • 额外添加 Hops 属性,该属性每经过一个 Relay 加 1 ,最大 16;
  • 额外添加 Giaddr 属性,告知服务器,DICOVER 报文来自哪个网段;

2.3 Feature

DHCP Snooping

  • 将接口划分为信任端口和非信任端口,防止 DHCP 仿冒者攻击;
  • 依据 DHCP Snooping 绑定表生成接口静态 MAC 表项,MAC 不再自动学习,限制静态 IP 的接入;
  • 限制单位时间内上送 DHCP Server 的报文数量,防止 DHCP 泛洪攻击;
  • 依据 DHCP Snooping 绑定表,检查 Request 报文和 Release 报文是否合法,防止 DHCP 仿冒攻击;
  • DHCP Snooping 额外检查报文中的 CHADDR 字段与报文二层的 Src MAC 字段,防止地址耗尽攻击;

三. DHCP 配置

3.1 基础配置

# 全局使能 dhcp
] dhcp enable

# 地址池配置
] ip pool ip-pool-name 
pool] gateway-list ip-address
pool] network ip-address [ mask { mask | mask-length } ]
pool] excluded-ip-address start-ip-address [ end-ip-address ] 
pool] lease { day day [ hour hour [ minute minute ] ] | unlimited } 
pool] static-bind ip-address ip-address mac-address mac-address [ option-template template-name | description description ]

# 接口 DHCP 配置
] interface interface-type interface-number [subinterface-number ]
接口] ip address ip-address { mask | mask-length }
接口] DHCP server gateway-list ip-address
接口] DHCP server static-bind ip-address ip-address mac-address mac-address [ description description ]
接口] DHCP server excluded-ip-address start-ip-address [ end-ip-address]
接口] DHCP server lease { day day [ hour hour [ minute minute ] ] | unlimited }

# 接口 Relay 配置 - 方式一
接口] DHCP select relay  
接口] DHCP relay server-ip  ip-address

# 接口 Relay 配置 - 方式二
] DHCP server group group-name
group] DHCP-server ip-address [ ip-address-index ]
接口] DHCP relay server-select group-name 
接口] ip address DHCP-alloc 

3.2 Feature 配置

# 全局/vlan/接口下使能 dhcp snooping
dhcp snooping enable
vlan] dhcp snooping enable [ interface interface-type interface-number ]
接口] dhcp snooping enable

# 配置 dhcp snooping 信任接口
vlan] dhcp snooping trusted [ interface interface-type interface-number ]
接口] dhcp snooping trusted

# 依据 binding 表检查报文
vlan] dhcp snooping check { arp | ip } enable [ interface interface-type interface-number ]
接口] dhcp snooping check { arp | ip } enable

# 配置静态 binding 表项
vlan] dhcp snooping bind-table static ip-address ip-address [ mac-address mac-address ] [ interface interface-type interface-number [ ce-vlan ce-vlan-id ] ]
接口] dhcp snooping bind-table static ip-address ip-address [ mac-address mac-address ] [ vlan vlan-id [ ce-vlan ce-vlan-id ] ]

# 备份 binding 表,防止重启后失效
] dhcp snooping bind-table autosave filename

# 让报文中携带更多的 Client 信息 - 配置 Option82
vlan] dhcp option82 insert/rebuild enable [ interface interface-type interface-number ]

# 配置 CHADDR 检查功能
vlan] dhcp check chaddr enable [ interface interface-type interface-number ]
接口] dhcp check chaddr enable

# 配置续约检查
vlan] dhcp snooping check dhcp-request enable [ interface interface-type interface-number ]
接口] dhcp snooping check dhcp-request enable

# 配置最大用户数限制
vlan] dhcp snooping max-user-number max-user-number [ interface interface-type interface-number ]
接口] dhcp snooping max-user-number max-user-number

# 配置 dhcp-snooping 白名单功能
] dhcp snooping packet whitelist whitelist-name
] dhcp packet-rule ruleid { source-ip source-ip-address { source-ip-mask | source-ip-mask-length } | destination-ip destination-ip-address { destination-ip-mask | destination-ip-mask-length } } * [ source-port { bootpc | bootps } ] [ destination-port { bootpc | bootps } ]

参考:

To 华为 DHCP-Snooping 配置指南

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值