如上图所示,存在两个网段 A 和网段 B,DHCP 客户机和 DHCP 服务器不在一个网段内,所以我们在通信链路上架设了一个中继代理,DHCP 客户机通过访问中继代理以达到访问 DHCP 服务器的目的。
使用这种方式,我们不再需要在每个网段都设置一个 DHCP 服务器,只需要在每个网段架设一个中继代理即可。它可以设置 DHCP 服务器的 IP 地址,从而可以在 DHCP 服务器上为每个网段注册 IP 地址的分配范围。
DHCP 客户端会向 DHCP 中继代理发送 DHCP 请求包,而 DHCP 中继代理在收到这个广播包之后再以单播的形式发送给 DHCP 服务器。服务器收到该包以后再向 DHCP 中继代理返回应答,并由 DHCP 中继代理将此包发送给 DHCP 客户端。
DHCP 认证我们总是假想所有情况都能够顺利进行,害怕出问题,这也许意味着我永远只是个初级程序员吧。我们上面探讨的 DHCP 服务器都是合理的、合法的,但是互联网是一把双刃剑,不是所有人都是合法公民。如果假设了一个未经授权的 DHCP 服务器怎么办?它很可能会对网络造成影响。
为了避免这些问题,在 [RFC3118] 中指定了一种认证 DHCP 消息的方法。它定义了一个 DHCP 选项,即Authentication 选项,如下所示
认证选项的主要目的就是确定 DHCP 消息是否来自一个授权的发送方。
身份验证的代码(code)属性值是 90,而长度(Length)给出了选项中的字节数(不包括代码和长度字段的字节)。如果协议(Protocol)和算法(Algorithm)属性被设置为 0 ,则认证信息字段将保存一个简单的共享配置的 token,token 大家开发应该都接触过吧,就是一条认证信息。只要配置令牌在客户端和服务器上匹配,这条消息就会被接受。
我们上面聊到的只是其中的一种,还有一种更安全的方法是涉及所谓的延迟身份认证,如果协议和算法都被设置为 1,就表示使用了延迟身份认证。在这种情况下,客户端的 DHCPDISCOVER 消息或 DHCPINFORM 消息包括身份验证选项,并且服务器以其 DHCPOFFER 或 DHCPACK 消息中包含的身份验证信息进行响应。这个认证信息中包括一个消息认证码,它提供对发送方的认证和消息的完整性校验。RDM 表示中继检测,中继检测包括一个单项递增的值,只要经过一个代理中继,那么这个中继检测的值就会 1。
虽然 DHCP 认证能够确保安全性,但是它没有被广泛使用,原因有两点:
- 首先,该方法要求在 DHCP 服务器和每个需要身份验证的客户端之间分配共享密钥。
- 其次,在 DHCP 已经被广泛使用之后,才指定了 Authentication 选项。
这篇文章我和你探讨了计算机网络中一个比较容易忽视的概念,为什么说他容易忽视呢?因为我们平常开发过程中基本上不会管 IP 地址的配置的,也就是环境搭建的时候会用到一些,但是要系统学习计算机网络的话,DHCP 的重要性不可忽视,DHCP 包括工作机制、DHCP 报文消息,DHCP 状态机、DHCP 认证这些都是需要你了解并掌握的。
原文链接:
关注我,带你更好的学习计算机网络。