通过脚本修改 dhcpd.conf,将整个子网转换为 DHCP 保留

通过脚本修改 dhcpd.conf,将整个子网转换为 DHCP 保留

我们的系统很杂乱,要么是静态 IP 地址,要么是 DHCP 预留地址。(除了预留地址,我们不分发任何地址)。有些服务器有多个网卡和 ILO 卡。必须扫描子网才能找到可用的免费 IP,这很烦人,尤其是因为当我执行扫描时,服务器可能会离线几分钟。任何列表似乎很快就会被遗忘。

我想为子网中的每个 IP 地址创建一个预留。这样管理/查看起来会容易得多。(之后,还要考虑设置 DHCP 以进行 DNS 更新)

我已经运行以下命令:

sudo arp-scan -I eth0 10.10.10.0/24

并列出所有 IP 和 Mac 地址。我即将获得所有主机/dns 名称的列表。(如果他们没有主机名,我会将其称为 ip-last octet,因此对于 10.10.10.100,则为“ip-100”。)。这很容易在 Open Office Calcl 中完成一些工作

有没有办法自动将保留添加到 dhcpd.conf 文件中?

我真的不想手动编辑这个,因为有数百个(多个子网)。

有没有一种简单的方法可以调用命令来创建预订,或者从 CSV 导入列表?我可以使用 Net Sh 找到许多使用 Windows DHCP 执行此操作的方法,但不能使用基于 CentOS 的 DHCP 服务器。

我宁愿使用现有的方法,也不愿编写自己的工具。

TL:DR -我需要一种方法来从命令行修改 Cento 的 DHCPd,就像在 Windows 中使用 Netsh 一样

答案1

我假设您使用的是 ISC DHCPd。在这种情况下,只需添加

host client_name {
    hardware ethernet 00:00:de:ad:be:ef;
    fixed-address 10.10.10.100;
}

到 /etc/dhcpd.conf 中的范围。

当然,您不会“手动编辑”它,而是创建一个简短的脚本,该脚本会输出每个范围所需的主机定义。类似这样的操作:

#!/bin/bash
function hostdef {
        echo host $1 {
        echo -e \\thardware ethernet $2\;
        echo -e \\tfixed-address $3\;
        echo }
        echo
}

cat $1 | while read name mac ip; do hostdef $name $mac $ip; done

使用内容如下的平面文件来调用它:

ip-100 00:00:de:ad:be:ef 10.10.10.100
ip-101 00:00:0b:ad:be:ef 10.10.10.101
ip-102 00:00:0b:ad:de:ed 10.10.10.102
ip-103 00:00:de:af:be:ef 10.10.10.103

将生成必要的行粘贴到您的配置文件中或将输出写入单独的文件,您将该文件包含在您的 dhcpd.conf 配置中,如下所示:

include "/etc/dhcpd-reservations-10-10-10.conf";

答案2

看一下奥姆壳它可能会做你想做的事。它允许你创建新的主机对象,为特定的 MAC 地址保留 ip 地址。

让 omapi 监听你的 dhcp 服务器

创建密钥以保护访问

dnssec-keygen -a HMAC-MD5 -b 512 -n HOST omapi_key 

生成如下文件

Komapi_key.+157+24472.key  
Komapi_key.+157+24472.private

我使用了私人文件中 Key: 行的内容

fzg+LkcuXNcnFL1GqwuGv/OafeWEszUjn3dZV0FJkXyPyrOSjqNUKII0NSqEWN8W9/BEakGf9aa/GSV44C0zNQ==

编辑 dhcp.conf 文件并添加

omapi-port 9999;
key omapi_key {
algorithm HMAC-MD5;
secret fzg+LkcuXNcnFL1GqwuGv/OafeWEszUjn3dZV0FJkXyPyrOSjqNUKII0NSqEWN8W9/BEakGf9aa/GSV44C0zNQ==;

omapi 密钥 omapi_key;

使用上面生成的密钥。

启动 dhcpd

/usr/sbin/dhcpd

现在您可以使用 omshell 添加主机

/usr/bin/omshell
> port 9999
> server 192.168.200.207
> key omapikey fzg+LkcuXNcnFL1GqwuGv/OafeWEszUjn3dZV0FJkXyPyrOSjqNUKII0NSqEWN8W9/BEakGf9aa/GSV44C0zNQ==
> connect
obj: <null>
> new host
obj: host

现在您可以按照手册页中的说明添加主机条目。

答案3

如果您使用 OMshell 进行任何操作,请按照 Iain 的建议,记住这些更改是暂时的。如果您通过 OMAPI 为给定的 MAC 地址创建新的租约对象,则下次重新启动服务器时该对象将丢失。

您需要执行这两项操作 - 使用 OMAPI 立即将预留添加到正在运行的服务器,并使用脚本更新 dhcpd.conf 以供后续使用。

相关内容