DHCP配置

拓扑图
步骤一. 基础配置与IP编址
给所有设备配置IP地址和掩码。
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/2
[R1-GigabitEthernet0/0/2]ip address 10.0.12.1 24
[R1-GigabitEthernet0/0/2]interface loopback 0
[R1-LoopBack0]ip address 1.1.1.1 32
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname R2
[R2]interface GigabitEthernet 0/0/2
[R2-GigabitEthernet0/0/2]ip address 10.0.12.2 24
[R2]interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1]ip address 10.10.10.1 24
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname R3
[R3]interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1]ip address 192.168.1.1 24
在R4的接口上配置DHCP客户端,启用接口DHCP之前需要全局启用DHCP:
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname R4
[R4]interface GigabitEthernet 0/0/1
[R4-GigabitEthernet0/0/1] ip address dhcp-alloc
给交换机配置名称,以S1为例,S2后续没有配置:
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname S1
验证R2和R1的互通:

步骤二. 配置R1和R2之间的路由
R1发布自己的环回口路由给R2,R2将自己连接S1的接口路由发布给R1,实现局域网网关和外网的互通。
[R1]ospf
[R1-ospf-1]
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]net 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]net 10.0.12.0 0.0.0.255
[R2]ospf
[R2-ospf-1]
[R2-ospf-1]silent-interface g0/0/1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]net 10.10.10.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]net 10.0.12.0 0.0.0.255
R2连接交换机的接口设置为silent接口,可以保证该网段的发布但不会在这个接口建立任何邻居。验证两个网络的互通:

步骤三. 配置IP Pool
分别在R1和R3上创建两个地址池,R1的地址池范围为10.10.10.0/24 网关为R2的g0/0/0接口地址10.10.10.1,DNS地址使用1.1.1.1,为了保证该网络中一些静态地址不被分配,保留10.10.10.2-10会被DHCP动态分配。R3的地址池范围为192.168.1.0/24 网关地址为R3的g0/0/0接口地址192.168.1.1,DNS地址使用192.168.1.1,保留192.168.1.2-192.168.1.10不被分配,两台服务器的地址租期设置为3天。
[R1]ip pool DHCP
[R1-ip-pool-DHCP]gateway-list 10.10.10.1
[R1-ip-pool-DHCP]network 10.10.10.0 mask 255.255.255.0
[R1-ip-pool-DHCP]excluded-ip-address 10.10.10.2 10.10.10.10
[R1-ip-pool-DHCP]dns-list 1.1.1.1
[R1-ip-pool-DHCP]lease day 3
[R3]ip pool DHCP
[R3-ip-pool-DHCP]gateway-list 192.168.1.1
[R3-ip-pool-DHCP]network 192.168.1.0 mask 255.255.255.0
[R3-ip-pool-DHCP]excluded-ip-address 192.168.1.2 192.168.1.10
[R3-ip-pool-DHCP]dns-list 192.168.1.1
[R1-ip-pool-DHCP]lease day 3
验证地址池的配置:


步骤四. 配置基于全局地址池的DHCP服务器
在上一步,已经建立好DHCP地址池的各个参数,但是此时并不能被客户端所使用,我们需要在全局和接口上配置启用DHCP功能:
[R3]dhcp enable
[R3]interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1]dhcp select global
在配置好R3的DHCP之后,R4应该可以正常获取到地址:

可以看到这个接口所使用的地址是DHCP获取的,地址是192.168.1.254。
步骤五. 配置DHCP中继
R3作为临时测试的DHCP配置已经完成,但我们实际想使用的DHCP在R1上,因为DHCP消息无法从客户端直接发给R1,因此在R2上我们配置DHCP中继,让R2作为S1所连接的LAN的网关,帮助这些主机传递DHCP请求。
先在R1上启用DHCP:
[R1]dhcp enable
[R1]interface GigabitEthernet 0/0/2
[R1-GigabitEthernet0/0/2]dhcp select global
在R2上指定DHCP的服务器地址为10.0.12.1,在接口上配置DHCP中继:
[R2]dhcp enable
[R2]dhcp server group DHCP
[R2-dhcp-server-group-DHCP]dhcp-server 10.0.12.1
[R2-dhcp-server-group-DHCP]quit
[R2]interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1]dhcp select relay
[R2-GigabitEthernet0/0/1]dhcp relay server-select DHCP
在R2上验证DHCP中继的配置:

可以看到R2上配置了一个DHCP组,组里有一台服务器,地址为10.0.12.1,并且在R2的G0/0/1接口上启用了DHCP中继,中继将会把DHCP请求发送到组内的服务器10.0.12.1。
为了进一步验证DHCP中继是否部署成功,我们首先关闭R3的接口(为避免从R3获取地址),然后关闭R4的接口,最后开启接口,正常情况下,R4可以获取到10.10.10.0/24这个子网的地址。
[R3]interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1]shutdown
[R4]interface GigabitEthernet 0/0/1
[R4-GigabitEthernet0/0/1]shutdown
[R4-GigabitEthernet0/0/1]undo shutdown

R4成功获取到了地址,并且地址为10.10.10.254。查看R2上的数据统计和R1上地址池的状态。

查看R4的路由并测试R4到R1的环回口互通:

步骤六. 配置DHCP Snooping 和攻击防范特性
在上一个步骤,我们暂时关闭了R3的接口,这时R4只能通过R2的DHCP中继到R1获取地址,但是,如果我们想开启R3接口,又不想让R4从R3获取地址,应该怎么做?特别是某些SOHO级路由器默认启动DHCP,如果接入网络内,会有严重的安全隐患。这里推荐在S1交换机开启DHCP Snooping技术,可以有效的防范非授权的DHCP服务器干扰局域网内的主机。
在此基础上,我们在交换机S1上再启用防饿死攻击和防中间人攻击,进一步保护DHCP获取地址的网络。
开始配置DHCP Snooping 防止未授权DHCP提供地址:
[S1]dhcp enable
[S1]dhcp snooping enable
[S1]interface GigabitEthernet 0/0/3
[S1-GigabitEthernet0/0/3]dhcp snooping enable
[S1-GigabitEthernet0/0/3]interface GigabitEthernet 0/0/2
[S1-GigabitEthernet0/0/2]dhcp snooping enable
默认情况下,开启DHCP Snooping的接口处于untrust状态:



R4再次重启接口,但这时无法从任何一台DHCP服务器获取到地址,因为连接这两个服务器的接口在S1上都是非信任状态
[R4-GigabitEthernet0/0/0]shutdown
[R4-GigabitEthernet0/0/0]undo shutdown

因为R2所中继的R1是信任的DHCP服务器,因此在交换机连接R2的接口上启用trust接口:
[S1]interface GigabitEthernet 0/0/2
[S1-GigabitEthernet0/0/2]dhcp snooping trusted
检查该接口的Snooping状态:

R4可以重新获取到地址:

此步骤配置完毕。假设R4是一台不被信任的主机,有可能从这台主机发起大量的DHCP请求耗尽地址池,因此在S1交换机与其相连的接口上启用防DHCP饿死攻击特性:
[S1-GigabitEthernet0/0/4]dhcp snooping check dhcp-chaddr enable
检查配置状态为Enable,这样从这个接口收到的DHCP请求都要检查chaddr字段,看是否和主机的硬件地址一致,如果不一致不进行转发:

最后开启防中间人攻击的特性:
[S1]arp dhcp-snooping-detect enable
检查全局DHCP Snoop特性:

ARP dhcp-snooping detect已经启用,默认是关闭。至此DHCP安全防范配置完毕。
步骤七. 参考配置
<R1>display current-configuration
[V200R007C00SPC600]
#
sysname R1
#
dhcp enable
#
ip pool DHCP
gateway-list 10.10.10.1
network 10.10.10.0 mask 255.255.255.0
excluded-ip-address 10.10.10.2 10.10.10.10
lease day 3 hour 0 minute 0
dns-list 1.1.1.1
interface GigabitEthernet0/0/2
ip address 10.0.12.1 255.255.255.0
dhcp select global
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.0.12.0 0.0.0.255
#
return
<R2>display current-configuration
[V200R007C00SPC600]
#
sysname R2
#
dhcp enable
#
dhcp server group DHCP
dhcp-server 10.0.12.1 0
#
interface GigabitEthernet0/0/1
ip address 10.10.10.1 255.255.255.0
dhcp select relay
dhcp relay server-select DHCP
#
interface GigabitEthernet0/0/2
ip address 10.0.12.2 255.255.255.0
#
ospf 1
silent-interface GigabitEthernet0/0/1
area 0.0.0.0
network 10.0.12.0 0.0.0.255
network 10.10.10.0 0.0.0.255
#
return
<R3>dis cur
[V200R007C00SPC600]
#
sysname R3
#
dhcp enable
#
ip pool DHCP
gateway-list 192.168.1.1
network 192.168.1.0 mask 255.255.255.0
excluded-ip-address 192.168.1.2 192.168.1.10
lease day 3 hour 0 minute 0
dns-list 192.168.1.1
#
interface GigabitEthernet0/0/1
ip address 192.168.1.1 255.255.255.0
dhcp select global
#
return
<R4>display current-configuration
[V200R007C00SPC600]
#
sysname R4
#
dhcp enable
#
interface GigabitEthernet0/0/1
ip address dhcp-alloc
#
return
<SW1>display current-configuration
!Software Version V200R008C00SPC500
#
sysname SW1
#
dhcp enable
#
dhcp snooping enable
arp dhcp-snooping-detect enable
#
interface GigabitEthernet0/0/2
dhcp snooping enable
dhcp snooping trusted
#
interface GigabitEthernet0/0/3
dhcp snooping enable
#
interface GigabitEthernet0/0/4
dhcp snooping check dhcp-chaddr enable
#
return
<SW2>display current-configuration
!Software Version V200R008C00SPC500
#
sysname SW2
#
return