嘿,这里很绝望!
我在这里运行 isc-dhcp-server 4.1(使用 webmin,但这是另一个主题)并想为可以通过 MAC 地址和供应商字符串识别的网络组件提供一些选项(tftp-server 和 bootfile)。
但是,我到了配置与 MAC 地址匹配的地步,但仍然说它是一个未知客户端,在 DHCPDISCOVER 之后不会继续。我确实使用了拒绝未知客户端,但针对的是不同的共享网络和子网。
我在这里遗漏了什么?为什么我只在日志中看到这个?
dhcpd: found a board
dhcpd: DHCPDISCOVER from b8:27:eb:ab:cd:ef via eth0: unknown client
这是当前配置:
shared-network COMPUTERS {
subnet 10.0.106.0 netmask 255.255.254.0 {
option subnet-mask 255.255.254.0;
default-lease-time 3600;
authoritative;
ignore client-updates;
deny unknown-clients;
ddns-updates off;
pool {
range 10.0.106.170 10.0.106.200;
}
pool {
range 10.0.107.170 10.0.107.200;
}
}
}
class "board" {
match if substring (hardware, 1, 3) = b8:27:eb;
log(info, "found a board");
}
shared-network hardware {
# network for TFTP stuff
subnet 192.168.120.0 netmask 255.255.255.0 {
pool {
allow unknown-clients;
allow dynamic bootp clients;
allow members of "board";
next-server 192.168.120.254;
filename "uboot.scr";
range 192.168.120.10 192.168.120.50;
log(info , "allocated to a board" );
}
}
}
因为它是 CentOS 6,所以我使用 eth0 和 eth0:1 配置文件,并将发布 ifconfig 以及 ip add 输出:
> ifconfig:
eth0 Link encap:Ethernet HWaddr 00:26:AB:12:34:56
inet addr:10.0.106.3 Bcast:10.0.107.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:356698 errors:0 dropped:0 overruns:0 frame:0
TX packets:224426 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:59600895 (56.8 MiB) TX bytes:32866187 (31.3 MiB)
Interrupt:17
eth0:1 Link encap:Ethernet HWaddr 00:26:AB:12:34:56
inet addr:192.168.120.254 Bcast:192.168.120.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:17
> ip add:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:26:ab:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 10.0.106.3/23 brd 10.0.107.255 scope global eth0
inet 192.168.120.254/24 brd 192.168.120.255 scope global eth0:1
valid_lft forever preferred_lft forever
任何帮助将不胜感激。
干杯
答案1
鉴于您的接口设置,您必须将两个子网(10.0.106.0/255.255.254.0 和 192.168.120.0/255.255.255.0)放在同一个共享网络声明中。
来自 dhcpd.conf 手册页:
shared-network 语句用于通知 DHCP 服务器一些 IP 子网实际上共享同一个物理网络。共享网络中的任何子网都应在共享网络语句中声明。在启动这些子网上的客户端时将使用共享网络语句中指定的参数,除非子网或主机级别提供的参数覆盖这些参数。如果共享网络中的任何子网有可用于动态分配的地址,则这些地址将被收集到该共享网络的公共池中,并根据需要分配给客户端。无法区分客户端应该在共享网络的哪个子网上启动。
您可能可以通过正确使用允许、拒绝和主机声明来解决最后一句中的限制,而且您似乎正朝着正确的方向前进。
您可能还想看看allow/deny members of "class"
。但我不确定它是否在您的 DHCP 服务器上可用。它记录在 CentOS 7 上的 ISC dhcpd 4.2.5 手册页中。