如何配置 Linux 拒绝来自 DHCP 服务器的特定 IP?
我的意思是我不希望我的 LAN 接口在任何情况下都被分配到 192.168.0.12。
是否可以?我发现/etc/dhcp/dhclient.conf
可以添加拒绝语句,但我认为这意味着拒绝整个 DHCP 服务器?我对这个解释有点困惑:
reject cidr-ip-address [, ... cidr-ip-address ] ;
The reject statement causes the DHCP client to reject offers from
servers whose server identifier matches any of the specified hosts or
subnets. This can be used to avoid being configured by rogue or mis‐
configured dhcp servers, although it should be a last resort - better
to track down the bad DHCP server and fix it.
.
.
.
reject 192.168.0.0/16, 10.0.0.5;
The above example would cause offers from any server identifier in the entire
RFC 1918 "Class C" network 192.168.0.0/16, or the specific single address
10.0.0.5, to be rejected.
我想要的只是不管 DHCP 服务器基地址如何,lan 端口永远不会被分配192.168.0.12
我需要添加到此 conf 文件中的正确行是什么?像这样的东西:
reject 192.168.0.0, 192.168.0.12;
另一个问题是,我不知道 DHCP 服务器使用的子网掩码。
答案1
DHCP 没有为此提供机制。如果您的 DHCP 客户端在租约到期之前请求新的 IP,服务器很可能会分配相同的地址。并且在续订时,它也会分配相同的地址。这是为了确保网络的稳定性而设计的。如果您的计算机可以拒绝 IP 地址,则可能会导致 DHCP 服务器出现 DOS。
dhclient.conf 中的“reject”指令允许客户端选择将使用哪个 DHCP 服务器 - 而不是分配哪个 IP 地址。
如果您不想将 192.168.0.12 分配给您的机器(虽然我们不知道为什么 - 从这里看它看起来像是一个非常好的 IP 地址),那么请在您的 DHCP 服务器中创建一个静态映射,将其保留给您网络上不存在的 mac 地址。
答案2
你不可以。您引用的选项用于拒绝指定的任何报价服务器,不适用于拒绝建议指定地址的报价。
DHCP 客户端行为中允许发送 DHCPDECLINE 消息(“我不需要此 IP”)的唯一逻辑路径是当客户端确定该地址已在使用时(请参阅 RFC)。
但是,您也可以选择请求某些 IP。例如,它会询问 DHCP 服务器是否允许您使用某些指定的 IP 地址。为此,请使用以下命令:
interface "ethN" {
send dhcp-requested-address 10.1.2.3;
}
它将被放入DHCPDISCOVER
,您将收到所有其余信息,包括网络掩码和网关。这并不保证您会被分配到该地址;服务器可以不承认它并建议另一个IP。
读RFC2131请记住,客户端是谦虚的请求者,服务器可以完全控制向谁提供什么。它给你什么,你就接受什么;你不能要求另一个。
答案3
根据您引用的文档,它将是
reject 192.168.0.12;
我不知道,因为我没有尝试过,拒绝所提供的地址是否相当于完全忽略它,就好像它从未发送过一样,或者它是否触发了 DHCP 协议的另一部分,要求另一个地址反而
考虑解决这样的问题:是分配这个错误的地址更好,还是根本不分配地址更好