DHCP原理与配置

时间:2024-03-08 09:38:37

  DHCP是动态主机配置协议(DHCP:Dynamic Host Configuration Protocol),主要用于中大型网络的IP地址、网关、掩码和DNS地址的动态分配,可以减少管理员的工作量,避免用户手工配置网络参数时造成的地址冲突。而随着网络规模的增大,DHCP也面临了许多的危险(例如:DHCP饿死攻击、仿冒DHCP server和中间人攻击),下面我们先从原理上来理解DHCP是如何工作的,及DHCP的各种配置实现,后面会介绍DHCP面临的威胁以及该如何避免。

  • 人工配置面临的问题:人员素质要求高、容易出错、灵活性差、IP地址资源利用率低 工作量大
  • 自动配置的优点:效率高、灵活性强、易于集中化管理

DHCP工作原理

  • 建立过程

    

     地址分配过程是通过DHCP Client与DHCP Server之间交互各种DHCP消息来实现的。DHCP消息是封装在UDP报文中的,DHCP Server使用端口号67来接收DHCP消息,DHCP Client使用端口号68来接收DHCP消息。

  发现阶段:发送DHCP Discover消息,寻找DHCP Server,并表示自己需要获得一个IP地址。二层广播域如果存在多个DHCP Server ,那么都会收到Discover的报文,因此所有server都会回应Client

  提供阶段:Server 向Client 提供IP地址的阶段,每个Server都会从自己维护的地址池中选择一个合适的IP地址,并通过单播的方式 DHCP Offer消息将这个IP地址发送给DHCP Client。

  请求阶段:在请求阶段中,PC上的DHCP Client会在若干个收到的Offer(即若干个收到的DHCP Offer消息)中根据某种原则来确定出自己将要接受哪一个Offer。通常情况下,DHCP Client会接受它所收到的第一个Offer(即最先收到的那个DHCP Offer消息)。如果PC最先收到的DHCP Offer消息是来自路由器R。于是,PC上的DHCP Client会以广播方式发送一个DHCP Request消息,其意图就是向路由器R上的DHCP Server提出请求,希望获取到该DHCP Server发送给自己的DHCP Offer消息中所提供的那个IP地址。注意,这个DHCP Request消息中携带有R上DHCP Server的标识(称为Server Identifier,表示PC上的DHCP Client只愿意接受R上的DHCP Server所给出的Offer。以广播的方式请求是可以告诉其它的server “ 我已经接受了R的offer,你们不是R的就不用给我分配地址啦,管其他PC分配就行”。

  确认阶段:Server 根据Request报文中的Server Identifier标识 确认是否指示自己,如果是则给Request报文的发送者回复Ack报文来确认IP地址。当然会因为各种原因导致无法确认,则回复Nak报文。此时Client需要从回到Discover阶段。

  • 续租过程

    

 DHCP租约期的缺省值不得小于1个小时,租约期的缺省值通常都是24小时

  T1时期:IP租约期限到达50%时,DHCP客户端会以单播的方式请求更新IP地址租约,如果在T2之前收到Ack消息说明续租成功,否则进入第二次请求。

  T2时期:DHCP客户端在租约期限到达87.5%时,还没收到服务器响应,会申请重绑定IP。Client会以为原Server不可用了,就以广播方式发送一个DHCP Request消息,继续请求续租IP地址。

  释放过程:如果直到租约期到期时,PC上的DHCP Client仍未收到回应的DHCP Ack消息,那么PC就必须停止使用原来的IP地址,也就是说,PC只能重新从发现阶段开始来重新申请一个IP地址。如果PC不需要DHCP功能了,也可以主动向DHCP服务器发送DHCP Release报文,释放该IP地址。

DHCP Relay

  DHCP有三种配置模式:接口模式、全局模式、中继模式。

  • 接口模式:靠用户则,配置简单易实现;
  • 全局模式:最典型的配置,但灵活性不够中继模式好;
  • 中继模式:适用于大中型网络,灵活性好,一个服务器可以实现多个广播域的网络地址分配,集中化管理同时节省了网络设备成本

  工作原理

  • 普通的DHCP是工作在二层为一个广播域里面的主机分配IP地址,也就是说DHCP的报文是无法跨越二层层进行传输的,那么像服务器这样的设备是不可能只在一个二层网络的,所以引入了DCHP Relay。

    

  • DHCP Relay的基本作用就是专门在DHCP Client和DHCP Server之间进行DHCP消息的中转。DHCP Relay与DHCP Server之间是以单播方式交换DHCP消息的(这就意味着,DHCP Relay必须事先知道DHCP Server的IP地址)。

 

  • 配置实现

    接口DHCP

[Huawei]dhcp enable                                    // 全局模式下开启使能DHCP功能
[Huawei]interface GigabitEthernet0/0/0  
[Huawei-GigabitEthernet0/0/0]dhcp select interface                 // 选择为接口模式
[Huawei-GigabitEthernet0/0/0]dhcp server dns-list 10.1.1.2            // 配置dns地址
[Huawei-GigabitEthernet0/0/0]dhcp server excluded-ip-address 10.1.1.2      // 排除的地址
[Huawei-GigabitEthernet0/0/0]dhcp server lease day 3               // 租期时间

    全局DHCP

[Huawei]dhcp enable    
[Huawei]ip pool pool1                                    // 创建地址池
[Huawei-ip-pool-pool1]gateway-list 192.168.1.1                   // 配置网关
[Huawei-ip-pool-pool1]network 192.168.1.0 mask 255.255.255.0          // 可用地址范围

[Huawei-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0 
[Huawei-GigabitEthernet0/0/0]dhcp select global                // 接口开启全局模式          

    中继DHCP

  

配置DHCP-Server:
(以基于全局地址池分配地址为例)
[Huawei]dhcp enable 
[Huawei]ip pool DHCP-relay
[Huawei-ip-pool-DHCP-relay]gateway-list 192.168.1.1                  // 配置网关
[Huawei-ip-pool-DHCP-relay]network 192.168.1.0 mask 24                // 可用地址
[Huawei-ip-pool-DHCP-relay]dns-list 10.1.1.1    
[Huawei-GigabitEthernet0/0/0]ip address 10.1.1.1 24                
[Huawei-GigabitEthernet0/0/0]dhcp select global                     // 接口开启全局模式
[Huawei]ip route-static 192.168.1.0 24 10.1.1.2                    // 静态路由提供连通


配置DHCP中继(GW):
[Huawei]dhcp enable 
[Huawei-GigabitEthernet0/0/1]ip address 192.168.1.1 24              // 配置IP地址,此为网关
[Huawei-GigabitEthernet0/0/1]dhcp select relay                     // 选择为中继模式
[Huawei-GigabitEthernet0/0/1]dhcp relay server-ip 10.1.1.1         // 指定服务器地址
[Huawei-GigabitEthernet0/0/0]ip address 10.1.1.2 24                // 连接服务器的地址        

 DHCP安全问题

    DHCP如果在设计时没有考虑到安全因素,那么会带来许多的安全漏洞和隐患,下面举了三种DHCP的安全问题。

  • DHCP 饿死攻击

    原理:DHCP饿死攻击是指利用DHCP server 无法正确区分合法的申请者和攻击者的申请,而攻击者持续大量地向DHCP Server申请IP地址,直到耗尽DHCP Server地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配。

    避免:DHCP消息中有一个名叫CHADDR(Client Hardware Address)的字段,该字段是由DHCP客户端填写的,表示的是客户端的硬件地址(也就是客户端的MAC地址)。DHCP Snooping技术支持在端口下对DHCP Request报文的源MAC地址与CHADDR进行一致性检查:如果二者相同,则转发报文;如果二者不相同,则丢弃。一致性检测一定程度上避免了饿死攻击,但不是绝对的,因为CHADDR和MAC地址可以是人为操作的。

    配置实现:端口上使能 dhcp-chaddr 功能即可,命令如下

[Huawei-GigabitEthernet0/0/0]dhcp snooping check dhcp-chaddr enable
  • 仿冒DHCP server攻击

    原理:攻击者仿冒DHCP Server,向客户端分配错误的IP地址及提供错误的网关地址等参数,客户端不会判别DHCP Sever发过来的消息是否合法,从而导致客户端无法正常访问网络。

    避免:DHCP Snooping将交换机上的端口分为两种类型,即信任端口(Trusted端口)非信任端口(Untrusted端口);与合法的DHCP Server相连接的端口应配置为Trusted端口,其他端口应配置为Untrusted端口

      配置实现:在中小型的企业网,DHCP Server不会存在多个,那么只需将设备与服务器连接的的端口配置为 安全端口(Trusted)即可,命令如下

[Huawei-GigabitEthernet0/0/0]dhcp snooping trusted
  • 中间人攻击

    原理:攻击者在客户端和服务器之间接入网络,这里称为中间人,原理是利用了虚假的IP地址与MAC地址之间的映射关系来同时欺骗DHCP的客户端和服务器。

    

 

    避免:运行了DHCP Snooping的交换机会“侦听(Snooping)”往来于用户与DHCP Server之间的DHCP消息,并从中收集用户的MAC地址(这里的MAC地址是指DHCP消息中CHADDR字段的值)、用户的IP地址(这里的IP地址是指DHCP Server分配给相应CHADDR的IP地址)等信息,这些信息会集中存放在一个数据库中,该数据库也被称为DHCP Snooping绑定表。交换机接收到ARP请求报文后,会检查该ARP请求报文中的源IP地址和源MAC地址,发现该IP/MAC(IP-A/MAC-B)映射关系不能匹配DHCP Snooping绑定表中的条目,于是会丢弃该ARP请求报文

 

    配置实现:

[Huawei]arp dhcp-snooping-detect enable        // 交换机的系统视图下执行配置命令