Configuração central para DHCP, DNS e Firewall

2

Qual software você usa para gerenciamento central de rede?

O que quero dizer é que você grava o nome de uma máquina, endereço MAC, portas abertas e outras informações, e o programa gera trechos de configuração DHCP, DNS e Firewall, para serem incluídos nos arquivos de configuração principais.

Por exemplo, a ferramenta central de gerenciamento de rede tem os seguintes campos no arquivo de configuração:

machine1 | 10.0.0.22 | 01:23:45:67:89:ab | 80/tcp, 53/udp, 53/tcp | owner | room

Isso se torna três arquivos, um para o DNS

machine1 IN A   10.0.0.22 ; owner , room

um para DHCP

host machine1 { hardware ethernet 01:23:45:67:89:ab; fixed-address 10.0.0.22; } # owner , room

um para o Firewall (exemplo para o iptables do Linux)

-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

Não é muito difícil codificar algo à mão, mas existem boas soluções prontas com bom histórico? Possíveis pontos positivos: suportar diferentes dns, dhcp, software de firewall, com suporte a plug-ins para copiar as confiurações atualizadas para servidores relevantes e reiniciar serviços.

Estou procurando uma ferramenta voltada aos sistemas Linux, mas as soluções somente para Windows ou BSD são bem-vindas por completo.

    
por hayalci 31.05.2009 / 00:11

3 respostas

1

Existem dois programas para gerar arquivos de configuração;

por 17.01.2010 / 23:54
2

O script abaixo não responde diretamente à sua pergunta, mas como um exemplo do tipo de coisa que você pode fazer com um script perl, pode ser útil. Minha configuração é um prédio com 4 andares e uma rede administrativa mais restrita. Eu uso o script para adicionar novas máquinas conforme elas chegam, gravando o endereço MAC e dando a elas um endereço que corresponde ao andar em que estão. Eu uso um arquivo $ PWD / .floorN para gravar o endereço para que eu possa incrementar corretamente. Ele também adiciona registros DNS reversos e diretos e regras IPAC-NG para registrar a largura de banda. O script faz algumas suposições sobre os locais dos arquivos e a presença de algum texto neles para permitir a substituição de novos registros.

#!/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);
    
por 31.05.2009 / 00:22
0

Isso se enquadra na categoria mais ampla de gerenciamento de configuração, que é abordada em outros lugares no serverfault (por exemplo, aqui ). Eu recomendaria o boneco para esse tipo de coisa.

Essa abordagem é um pouco mais complexa do que os exemplos simples sobre os quais você estava falando, mas também permite muito mais controle sobre seus sistemas

    
por 31.05.2009 / 00:36