ISC dhcpd 动态启动文件名。这可能吗?

ISC dhcpd 动态启动文件名。这可能吗?

实际上,我想根据客户端的 MAC 动态分配启动文件名。

我已经尝试过这个配置:

option bootfile-name concat( binary-to-ascii(16, 8, "", substring (hardware, 1, 6)), ".cfg");

但这是错误的配置(因为 dhcp 服务器根本没有启动)。如果我不输入 concat(...),而是输入真实文件名(例如“000102030405.cfg”),则一切正常。但这不是我需要的。有没有办法动态设置启动文件名?

答案1

嗯,好消息。我自己找到了答案。答案本身就在手册页中。你只需要使用表达. 对于任何选项(不仅仅是启动文件名),这都是正确的,您希望根据客户端的请求为其分配一个值。

来自man dhcp-options

SETTING OPTION VALUES USING EXPRESSIONS
   Sometimes it's helpful to be able to set the value of a DHCP option based on
   some value that the client has sent.   To do this, you can use expression
   evaluation. The dhcp-eval(5) manual page describes how to write expressions.
   To assign the result of an evaluation to an option,
   define the option as follows:

     option my-option = expression ;

   For example:

     option hostname = binary-to-ascii (16, 8, "-", substring (hardware, 1, 6));

因此,如你所见,此代码与我的代码之间的唯一区别是等号

对于好奇的人来说,我的问题的答案是:

option bootfile-name = concat( binary-to-ascii(16, 8, "",
                               substring (hardware, 1, 6)), ".cfg");

你注意到“=”了吗?

答案2

相关内容