1.基于接口的DHCP配置

1.1配置R1
sys
sysname R1
undo info-center enable
dhcp enable 全局下开启DHCP功能
interface Ethernet0/0/0
ip address 192.168.1.1 255.255.255.0
dhcp select interface 在e0/0/0接口上启用基于接口的 DHCP服务
dhcp server dns-list 114.114.114.114 8.8.8.8
注意:分配接口所在的 ip网段,接口地址作为网关。
1.2验证配置
将PC1和PC2设置为DHCP获取地址并应用,通过命令ipconfig 查看获取到的IP地址。


1.3可抓包查看DHCP请求IP地址过程

注意:用户发送的第一个报文:源地址是0.0.0.0 目标地址是 255.255.255.255 。
2.DHCP静态绑定、租约

2.1SW1、SW2和SW3基础配置
(1)SW1:
sys
sysname SW1
undo info-center enable
vlan batch 8 to 9
interface Vlanif8
ip address 192.168.8.1 255.255.255.0
interface Vlanif9
ip address 192.168.9.1 255.255.255.0
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan all
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan all
(2)SW2:
sysname SW2
undo info-center enable
vlan batch 8 to 9
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan all
interface Ethernet0/0/2
port link-type access
port default vlan 8
interface Ethernet0/0/3
port link-type access
port default vlan 8
(3)SW3:
sysname SW3
undo info-center enable
vlan batch 8 to 9
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan all
interface Ethernet0/0/2
port link-type access
port default vlan 9
2.2在SW1上配置DHCP
(1)开启DHCP服务
dhcp enable
(2)配置地址池
ip pool vlan8
gateway-list 192.168.8.1
network 192.168.8.0 mask 255.255.255.0
dns-list 114.114.114.114 8.8.8.8
ip pool vlan9
gateway-list 192.168.9.1
network 192.168.9.0 mask 255.255.255.0
dns-list 114.114.114.114 8.8.8.8
(3)到vlanif接口下使能dhcp
interface Vlanif8
dhcp select global
interface Vlanif9
dhcp select global
(4)配置验证
PC1改为DHCP获取


由上图结果可以看到,DHCP动态获取IP地址成功。
(5)在SW1设置静态绑定
在企业网络中,当需要给某些设备打上固定IP地址,最好进行IP地址绑定,使得该设备的IP地址长时间不使用时,也不会被其他设备抢占。
假设PC2为领导的设备,需要特殊权限为此打上固定IP地址,避免其他人使用,可以通过IP地址进行绑定,在PC2上复制其MAC地址,然后进入到VLAN8的地址池中进行静态绑定。
ip pool vlan8
static-bind ip-address 192.168.8.8 mac-address 5489-9882-0de0
验证:

(6)设置IP地址的租约时间
在华为路由与交换中,其DHCP分配的地址默认为1天。
例如设置VLAN8地址池中的IP租借时长为2天8小时8分,VLAN9地址池中的IP租借时长为1天8小时8分
ip pool vlan8
lease day 2 hour 8 minute 8
ip pool vlan9
lease day 1 hour 8 minute 8
3.DHCP排除地址、domain-name
接上面的配置进行配置DHCP的排除地址,通过排除一段地址,用于给一些特殊设备或者人群使用,例如打印机设备,会议设备等
3.1配置DHCP排除地址
在规划设计地址排除,VLAN8划分192.168.8.240-192.168.8.254;VLAN9划分192.168.9.240-192.168.9.254;
先把PC获取到的IP地址进行释放,否则会出错,因为PC1已经获取到192.168.8.254
reset ip pool name vlan8 used

ip pool vlan8
excluded-ip-address 192.168.8.240 192.168.8.254
ip pool vlan9
excluded-ip-address 192.168.9.240 192.168.9.254
在PC1上进行验证:

可以看到PC1是拿到192.168.8.239的IP地址,而不是192.168.8.254了。
3.2配置DHCP的domain-name(可选配置)
配置DHCP的domain-name,相当于给DNS添加一个后缀,可以知道该IP地址属于哪个域中。
例如vlan8属于某公司的设计网络域中,vlan9属于该公司的普通办公网域中
ip pool vlan8
domain-name design.com
ip pool vlan9
domain-name work.com
4.DHCP Server 的IP冲突检测
dhcp server ping 命令用来配置DHCP服务器发送ping报文的最大数量和最长等待回应事件,缺省情况下,DHCP服务器发送ping报文最大数量位2,最长等待回应时间500毫秒。
应用场景
此命令应用与DHCP服务器端。为防止IP地址重复分配导致地址冲突,DHCP服务器为客户端分配地址前,需要先执行dhcp server ping命令发送ping报文探测地址的使用情况。地址探测是指能否在指定时间内得到ping应答,如果没有得到应答,则继续发送ping报文,直到发送ping包数量达到最大值,如果仍然没有收到应答,则认为没有收到应答,则认为本网段没有设备使用该IP地址,可以分配给改客户端使用,从而确保客户端被分得的IP地址是唯一的。

在上述的实验中添加一个PC4,并配置SW3
SW3:
interface Ethernet0/0/3
port link-type access
port default vlan 9
验证DHCP Server 的IP冲突检测
在上面的实验中已经对地址进行排除,因此PC3设置静态IP地址为192.168.9.239,PC4进行自动获取,服务端会去探测192.168.9.239有没有人使用,然后再去给PC4分配IP地址,这些分析需要在SW1上抓包查看。
(1)先设置PC3的IP地址

(2)在SW1上对其G0/0/2接口进行抓包

(3)在PC4上点击应用DHCP

(4)分析抓包

由上图可以看到,因为192.168.9.239被PC3占用了,DHCP服务端很快就探测到,进而去探测192.168.9.238,发现每人使用,从而分配给PC4使用。
5.DHCP中继-dhcp relay
5.1为什么需要DHCP Relay?
DHCP Relay 即 DHCP 中继,它的存在主要是为了解决在大型网络环境中,DHCP 服务器与客户端之间因距离或网络结构限制而产生的通信问题。

5.2DHCP Relay基本工作原理

5.3DHCP Relay配置实现

(1)接上面使用的拓扑图,把在SW1配置的DHCP地址池和接口下使能的DHCP配置信息清除:
SW1:
undo ip pool vlan8
y
undo ip pool vlan9

int vlan8
undo dhcp select global
int vlan9
undo dhcp select global
quit

(2)在拓扑上增加了一个Router设备作为模拟DHCP服务器,vlan为200,网段为12.1.1.0/24。
配置SW1:
vlan 200
quit
int vlan200
ip add 12.1.1.1 24
quit
interface GigabitEthernet0/0/3
port link-type access
port default vlan 200

配置DHCP Server:
先配置接口IP地址,接着使能DHCP服务,然后在接口下使能DHCP,下一步就是配置静态路由,使得网络联通,最后配置DHCP地址池。
sys
un in en
sysn DHCP_Server
interface Ethernet0/0/0
ip address 12.1.1.2 255.255.255.0
quit
dhcp enable
interface Ethernet0/0/0
dhcp select global
quit
ip route-static 0.0.0.0 0 12.1.1.1
ip pool vlan8
gateway-list 192.168.8.1
network 192.168.8.0 mask 255.255.255.0
excluded-ip-address 192.168.8.240 192.168.8.254
lease day 2 hour 8 minute 8
dns-list 114.114.114.114 8.8.8.8
domain-name design.com
quit
ip pool vlan9
gateway-list 192.168.9.1
network 192.168.9.0 mask 255.255.255.0
excluded-ip-address 192.168.9.240 192.168.9.254
lease day 1 hour 8 minute 8
dns-list 114.114.114.114 8.8.8.8
domain-name work.com
quit
(3)在SW1上的vlanif接口下配置DHCP中继,并指向服务器地址
interface Vlanif8
dhcp select relay
dhcp relay server-ip 12.1.1.2
quit
interface Vlanif9
dhcp select relay
dhcp relay server-ip 12.1.1.2
quit
(4)分别在SW的G0/0/1接口和G0/0/3接口抓包查看DHCP中继的原理
G0/0/1:

G0/0/3:

dhcp 中继原理:由于dhcp服务器和用户不在同一个van(即不在一个广播域),因此dhcp 广播报文无法发送到dhcp 服务器,此时在核心交换机上面配置dhcp中继 将dhcp 广播请求变为单播发送到dhcp 服务器。源地址由0.0.0.0 变成相应vanif接口的ip地址,目标地址由255.255.255.255 变成 dhcp 服务器的单播地址。广播包变成单播包被中继到dhcp 服务器,完成地址分配。
6.DHCP snooping
DHCP Snooping 是一种网络安全技术,用于防止未经授权的 DHCP 服务器接入网络,增强网络的安全性和稳定性。
6.1工作原理
监听 DHCP 消息:DHCP Snooping 设备会监听网络中的 DHCP 消息,包括 DHCP Discover、DHCP Offer、DHCP Request 和 DHCP Ack 等。通过对这些消息的分析,它可以了解网络中 DHCP 服务器的分布情况以及客户端的请求和获取 IP 地址的过程。
构建绑定表:根据监听的 DHCP 消息,DHCP Snooping 设备会构建一个 DHCP 绑定表。该绑定表记录了客户端的 MAC 地址、IP 地址、租用时间、端口等信息。通过这个绑定表,设备可以对后续的 DHCP 消息进行验证,确保只有合法的客户端能够获取 IP 地址。
过滤非法 DHCP 消息:当设备收到 DHCP 消息时,会根据绑定表进行验证。如果消息来自合法的 DHCP 服务器且符合绑定表中的信息,则允许该消息通过;否则,将过滤掉该消息,防止非法的 DHCP 服务器为客户端分配 IP 地址。
6.2主要功能
防止非法 DHCP 服务器接入:阻止未经授权的 DHCP 服务器接入网络,防止恶意用户通过私自搭建 DHCP 服务器来干扰网络正常运行或进行中间人攻击。
增强网络安全性:通过对 DHCP 消息的过滤和验证,有效防止了 DHCP 欺骗攻击,提高了网络的安全性,保护网络中的设备免受恶意攻击。
防止 IP 地址冲突:由于 DHCP Snooping 构建了 DHCP 绑定表,记录了每个客户端的 IP 地址分配情况,因此可以避免因手动配置 IP 地址或非法 DHCP 服务器分配 IP 地址导致的 IP 地址冲突问题。
支持端口安全:可以与端口安全功能结合使用,根据 MAC 地址、IP 地址等信息限制端口的访问权限,进一步增强网络的安全性。
6.3应用场景
企业网络:在企业内部网络中,DHCP Snooping 可以防止员工私自搭建 DHCP 服务器,确保网络中 IP 地址的分配和管理由合法的 DHCP 服务器统一进行,提高网络的安全性和稳定性。
校园网络:校园网络中存在大量的学生和教师用户,DHCP Snooping 可以防止非法用户接入网络,避免因 IP 地址冲突等问题影响网络正常使用,同时也可以防止恶意攻击。
公共场所网络:如酒店、机场、咖啡馆等公共场所的无线网络,DHCP Snooping 可以防止恶意用户通过搭建 DHCP 服务器来获取用户的信息或进行攻击,保护用户的隐私和网络安全。

例如有人私接TP-link路由器,导致内网一些用户会接收到TP-link分配的IP地址,导致影响一些业务,管理人员可以在交换机上配置DHCP snooping。
假设在SW2上启用:
#先要在接入层交换机使能DHCP服务,然后在使能dhcp snooping
dhcp enable
dhcp snooping enable
#在VLAN8中使能dhcp snooping
vlan 8
dhcp snooping enable
quit
#将上联口设置为信任接口(默认所有的接口都是非信任接口)
interface Ethernet0/0/1
dhcp snooping trusted
quit
7.DHCP安全防护
禁止用户手动配置静态ip地址,防止ip地址冲突(模拟器不支持) 利用dhcp snooping 建立ip-mac-接口 的检查映射表项(适合 企业用户采用动态ip获取的企业)
7.1dhcp snooping用于防止饿死攻击

所有接入交换机接用户口:
SW2:
interface Ethernet0/0/2
dhcp snooping check dhcp-chaddr enable
interface Ethernet0/0/3
dhcp snooping check dhcp-chaddr enable
#查看 DHCP Snooping 用户绑定信息
display dhcp snooping user-bind all

该表是一个动态表,插拔接口或者从新获取地址,该表都会被刷新掉!
注意:该映射表是交换机通过窥探dhcp 报文而建立的映射表。
7.2 dhcp snooping用于防止DHCP中间人攻击

如果需要使用上面所描述的防止Spoofing IP/MAC攻击(进而防止中间人)的方法,需要在交换机的系统视图下执行配置命令:arp dhcp-snooping-detect enable
DHCP Snooping绑定表也可以手动进行绑定:
例如在SW2上的手动绑定
user-bind static ip-address 192.168.8.9 mac-address 5489-9882-0DE0 interface Ethernet 0/0/3

模拟器有BUG,添加上去的绑定信息无法显示到绑定表中
7.3DHCP Snooping与IPSF技术的联动

网络中经常会存在针对源IP地址进行欺骗的攻击行为,例如,攻击者仿冒合法用户的IP地址来向服务器发送IP报文。针对这类攻击,相应的防范技术称为IPSG(IPSource Guard)技术。交换机使能IPSG功能后,会对进入交换机端的报文进行合法性检查,并对报文进行过滤(如果合法,则转发;如果非法,则丢弃)。
报文的检查项可以是源IP地址、源MAC地址、VLAN和物理端口号的若干种组合。例如,在交换机的端口视图下可支IP+MAC、IP+VLAN、IP+MAC+VLAN等组合检查,在交换机的VLAN视图下可支持:IP+MAC、IP+物理端口号、IP+MAC+物理端口号等组合检查。关键配置命令:在交换机的端口视图下或VLAN视图下执行配置命令:
ip source check user-bind enable(默认mac 、ip 等全部开启合法性检査)
例如在SW2交换机的E0/0/2接口进行开启:
interface Ethernet0/0/2
ip source check user-bind enable # 开启ip源地址检查功能

ip source check user-bind check-item XXX
#使用这个命令就可以对检查项进行组合,比如IP+MAC,默认是全部检查的

7.4IPSG技术
(1)IPSG概述
IPSG即IP源防攻击(IP Source Guard)是一种基于二层接口的源IP地址过滤技术,IPSG的绑定表维护了网络中主机IP地址、MAC地址等信息的绑定关系,通过将报文信息与绑定表比对,它能够有效防止恶意主机伪造合法主机的IP地址来仿冒合法主机,还能确保非授权主机不能通过自己指定IP地址的方式来访问网络或攻击网络。
(2)IPSG中的绑定表
IPSG维护了一张绑定表,记录了源IP地址、源MAC地址、所属VLAN、入接口的绑定关系。当应用IPSG的二层接口收到IP报文时,会将报文信息与绑定表信息进行匹配,只有匹配关系正确的报文允许通过接口,其他报文将被丢弃。
(3)IPSG中的接口角色
IPSG仅支持在二层物理接口或者VLAN上应用,且只对使能了IPSG功能的非信任接口进行检查。对于IPSG来说,缺省所有的接口均为非信任接口,信任接口由用户指定。IPSG的信任接口/非信任接口也就是DHCP Snooping中的信任接口/非信任接口,信任接口/非信任接口同样适用于基于静态绑定表方式的IPSG。
以下是IPSG中各接口角色的样例,其中:
Interface1和Interface2接口为非信任接口且使能IPSG功能,从Interface1和Interface2接口收到的报文会执行IPSG检查。
Interface3接口为非信任接口但未使能IPSG功能,从Interface3接口收到的报文不会执行IPSG检查,可能存在攻击。
Interface4接口为用户指定的信任接口,从Interface4接口收到的报文也不会执行IPSG检查,但此接口一般不存在攻击。

