【问题标题】:ISC DHCP Option 121 LimitationsISC DHCP 选项 121 限制
【发布时间】:2017-04-03 17:35:06
【问题描述】:

尝试将 15 条无类路由添加到选项 121,但是我可以添加的数量似乎是有限的(或者可能是对数据包大小的限制?)。我从中复制的 Windows 服务器在分发那么多时没有问题,并且客户端能够毫无问题地接收信息。

在我的全局配置中,我声明了选项

option rfc3442 code 121 = array of unsigned integer 8;

然后在子网配置下我有路由

option rfc3442 24, XXX, 138, 247, 10, 110, 201, 3, 24, XXX, 138, 248, 10, 110, 201, 3, 24, XXX, 138, 249, 10, 110, 201, 3, 24, XXX, 138, 254, 10, 110, 201, 3, 23, XXX, 138, 250, 10, 110, 201, 3, 20, XXX, 111, 208, 10, 110, 201, 3, 24, XXX, 200, 136, 10, 110, 201, 3;

但除此之外的任何添加以及我的测试 Windows 客户端都会给我以下错误

The data is invalid.

我的思科人员提到选项 121 存在限制,并且一直试图将阵列压缩到 9 条以下路由,以便他们的路由器可以处理它。我正在使用 ISC DHCP 作为另一种选择。

EDIT2:Windows 客户端中出现错误的原因(请参阅下面的编辑)是因为列表中有重复项。在我的情况下,我是在没有仔细查看的情况下按原样复制当前配置。

编辑: 我能够使用数据包捕获来解决问题。 Windows 正在错误地解析信息,所以我开始在最后一个八位字节中添加 0(RFC3442 说这不是必需的)。遍历最后一个子网,但到目前为止我拥有的子网比以前更多。

【问题讨论】:

    标签: routes option dhcp


    【解决方案1】:

    tl;dr version - 给定的八位字节必须匹配给定的 CIDR 表示法。

    我在使用 isc-dhcp 时遇到了选项 121 的问题,这是 Google 中排名最高的链接之一。由于没有答案,我想我会分享。

    我的问题是 Mac、Linux、ChromeOS、Android 等客户端都在工作,但 Windows 客户端在尝试获取地址时给出了 0x79 错误(无效数据)。

    使用tcpdump 时,您可以看到客户端正在广播、接收和确认租约,但 Windows dhcp 客户端从未获取该地址,并且会重新启动整个过程。

    问题出在我在 isc-dhcp 的配置文件中的选项 121 参数中输入的八位字节数。

    例如通过网关10.0.0.1 路由到192.168.23.0/24 将是

    24, 192, 168, 23, 10, 0, 0, 1
    

    上面是一个有据可查的例子,我出错的地方是使用少于或多于/24

    例如路由到10.0.0.0/8 通过网关10.10.80.2

    8, 10, 10, 10, 80, 2 
    

    即八位字节的数量必须对应于给定的 CIDR。

    对于小于/24 - 例如:192.168.23.128/25 通过网关 10.10.80.2 将是

    25, 192, 168, 23, 128, 10, 10, 80, 2 
    

    我本来想指定一个/8,但添加了太多的八位字节,如下所示:

    8, 10, 0, 10, 10, 80, 2  
    

    导致 DCHP 进程在 Windows 客户端上失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多