Какое программное обеспечение вы используете для централизованного управления сетью?
Я имею в виду, что вы записываете имя машины, MAC-адрес, открытые порты и другую информацию, а программа генерирует фрагменты конфигурации DHCP, DNS и брандмауэра, которые будут включены из основных файлов конфигурации.
Например, инструмент центрального сетевого менеджера имеет следующие поля в файле конфигурации:
machine1 | 10.0.0.22 | 01:23:45:67:89:ab | 80/tcp, 53/udp, 53/tcp | owner | room
Это становится тремя файлами, один для DNS
machine1 IN A 10.0.0.22 ; owner , room
один для DHCP
host machine1 { hardware ethernet 01:23:45:67:89:ab; fixed-address 10.0.0.22; } # owner , room
один для брандмауэра (пример для Linux iptables)
-A mycustomchain -d 10.0.0.22 -p tcp --dport 80 -j ACCEPT # machine1, owner, room
-A mycustomchain -d 10.0.0.22 -p udp --dport 53 -j ACCEPT # machine1, owner, room
Кодировать что-то вручную не так уж сложно, но есть ли какие-нибудь хорошие готовые решения с хорошей репутацией? Возможные плюсы: поддержка различных dns, dhcp, программного обеспечения межсетевого экрана, поддержка плагинов для копирования обновленных конфигураций на соответствующие серверы и перезапуска служб.
Я ищу инструмент, ориентированный на системы Linux, но для полноты картины приветствуются только решения для Windows или BSD.
Приведенный ниже сценарий не отвечает напрямую на ваш вопрос, но в качестве примера того, что вы можете делать с помощью сценария perl, он может быть полезен. Моя установка - это здание с 4 этажами и более ограниченной административной сетью. Я использую сценарий для добавления новых машин по мере их поступления, записывая MAC-адрес и предоставляя им адрес, соответствующий этажу, на котором они находятся. Я использую файл $ PWD / .floorN для записи адреса, чтобы я мог правильно увеличивать его. Он также добавляет прямые и обратные записи DNS и правила IPAC-NG для записи пропускной способности. Сценарий делает некоторые предположения относительно расположения файлов и наличия в них некоторого текста, позволяющего заменять новые записи.
#!/usr/bin/perl -w
##################
($firstname, $secondname, $mac, $floor) = @ARGV;
$mac2 = lc $mac;
@requires = qw/firstname secondname mac/;
foreach(@requires) {
unless($$_) {
print "\$$_ not found, Please run this as $0 Firstname Secondname MAC floor\n";
exit;
}
}
unless($floor) { $floor = "0"; }
open(IPS, "+<.floor$floor");
$count = 1;
while (<IPS>) { $count++; }
print IPS "$firstname$secondname :$count\n";
print <<END;
adding to /etc/dhcp3/dhcpd.conf
host $firstname$secondname {
hardware ethernet $mac2;
fixed-address 10.0.1$floor.$count;
option routers 10.0.1$floor.254;
}
END
open(ORIG, "/etc/dhcp3/dhcpd.conf");
@orig = <ORIG>;
close(ORIG);
$add = <<END;
host $firstname$secondname {
hardware ethernet $mac2;
fixed-address 10.0.1$floor.$count;
option routers 10.0.1$floor.254;
}
END
open(CONF, "+>/etc/dhcp3/dhcpd.conf");
foreach(@orig) {
$line = $_;
$line =~ s/ \# new entries here/$add\n \# new entries here/;
print CONF $line;
}
close(CONF);
system("/etc/init.d/dhcp3-server restart");
close(IPS);
# add DNS records for this host
print "Adding DNS Entries ...\n";
open(REV, ">>/var/cache/bind/1$floor.0.10.in-addr.arpa");
print REV "$count\t\tPTR\t$firstname$secondname.zone.com.\n";
close(REV);
open(ZONE, ">>/var/cache/bind/zone.com");
print ZONE "$firstname$secondname\t28800\tIN\tA\t10.0.1$floor.$count\n";
close(ZONE);
system("rndc reload");
# Add two ipac rules, so we can see traffic going to/from this IP
print "Adding IP Accounting rules ...\n";
open(IPAC, ">>/etc/ipac-ng/rules.conf");
print IPAC <<END;
$firstname.$secondname in|ipac~i|+|all|0/0|10.0.1$floor.$count
$firstname.$secondname out|ipac~o|+|all|10.0.1$floor.$count|0/0
END
close(IPAC);
Есть две программы для генерации файлов конфигурации;
Это подпадает под более широкую категорию управления конфигурацией, которая рассматривается в другом месте при сбое сервера (например, Вот). Я бы рекомендовал кукольный для такого рода вещей.
Этот подход гораздо более глубокий, чем те простые примеры, о которых вы говорили, но он также позволяет гораздо лучше контролировать ваши системы.