实际上,我想根据客户端的 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
110022334455 在 ASCII 输出中变为 11022334455