Измените dhcpd.conf через скрипт, чтобы преобразовать всю подсеть в резервирование DHCP

У нас есть мешанина систем, которые являются либо статическими IP-адресами, либо резервированием DHCP. (Мы не раздаем никаких адресов, кроме зарезервированных). Некоторые серверы имеют несколько карт NIC и 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? Я мог найти много способов сделать это с Windows DHCP, используя Net Sh, но не с моим сервером DHCP на базе CentOS.

Я предпочел бы использовать существующий способ, а затем написать свой собственный инструмент.

TL: DR - мне нужен способ изменить DHCPd Cento из командной строки, как вы можете в Windows с Netsh

3 ответа

Решение

Я полагаю, вы используете 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";

Если вы делаете что-то с OMshell, согласно предложению Iain, имейте в виду, что эти изменения временны. Если вы создадите новый объект аренды для данного MAC-адреса через OMAPI, этот объект будет потерян при следующем перезапуске сервера.

Вам нужно сделать оба - OMAPI, чтобы сразу добавить резервирование на работающий сервер, и сценарий, который обновляет dhcpd.conf для потомков.

Посмотрите на omshell, он может делать то, что вы хотите. Он позволяет вам создавать новые хост-объекты, которые резервируют IP-адрес для определенного MAC-адреса.

Чтобы слушать 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

Теперь вы можете добавлять записи хоста, как описано на странице руководства.

Другие вопросы по тегам