Linux服务器管理debian 10和centos dhcp服务基于主机名的客户端分类

Linux服务器管理debian 10和centos dhcp服务基于主机名的客户端分类

我想根据客户端提供的主机名分配客户端的 IP 地址,但结果往往无法预测。
我尝试模仿 dhcpd.conf(5) 中的客户端分类,将
主机名为“Debian-xx”的
客户端分配到 192.168.100.0/24 子网,将主机名为“Centos-xx”的客户端分配到 192.168.1.0/24 子网。
我使用的是 DHCP 版本 4.4.1。当我使用“dhcpd -d”检查日志时,我注意到分类没有生效或有错误。例如,“Centos-xxx”客户端可能被分配到 192.168.100.0 或 192.168.255.0 子网,并且分配似乎不一致。

这是我的 dhcpd.conf 文件的内容。

default-lease-time 10;
use-host-decl-names on;
max-lease-time 20;
authoritarive ;
log-facility local2;

class "centos-server"{
    match if (substring(option host-name ,0,6)="Centos") ;
}

class "debian-server"{
    match if (substring (option host-name  ,0,6)="Debian") ;

}

subnet 192.168.0.0 netmask 255.255.0.0 {

    option routers 192.168.0.2;

    option subnet-mask 255.255.255.0;
    pool{
    allow members of "centos-server";
    range 192.168.100.1 192.168.100.254;
    }
    pool{
    allow members of "dbian-server";
    range 192.168.1.1 192.168.1.254;
    }
    pool{
    range 192.168.255.1 192.168.255.254;
    }

}
on commit {
log(debug, concat("test for   ",  substring(option host-name,0,6 ) ));
 if ( ( substring( option host-name , 0, 6 ) ="Debian") ) {
log(debug,"Debian!");
}
else if ( ( substring( option host-name , 0, 6 ) ="Centos") ) {
log(debug,"Centos!");
}
else {
log(debug,"i dont konw");
}

}

这是我的 dhclient.conf 的内容

send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers;


我尝试修改“match if”后面的表达式,例如使用“or (1=1)”,但客户端可能仍未分配给该类。
我尝试查看是否是“host-name”和“option host-name”的问题,但这似乎不是关键问题。
我怀疑类中的条件表达式存在错误,但提交日志时,我发现日志结果在“Centos!”和“我不知道”之间交替出现。
我搜索了相关问题,例如此链接dhcpd 类匹配主机名或 mac 地址,但似乎答案都没有提供很好的解决方案。
我想知道我的错误在哪里,如何修改,或者是否有提供解决方案的网站。

如果您能提供帮助,我将不胜感激。

相关内容