DHCP,DNS和防火墙的中央configuration

你用什么软件进行中央networkingpipe理?

我的意思是,你logging一台机器的名称,MAC地址,打开的端口和其他信息,程序生成的DHCP,DNS和防火墙configuration片段,包括在主要的configuration文件。

例如,中央networkingpipe理器工具在configuration文件中具有以下字段:

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 

手动编写代码不是很难,但是有没有良好的现成解决scheme,有良好的logging? 可能的补充:支持不同的DNS,DHCP,防火墙软件,具有类似插件的支持,以将更新的configuration复制到相关服务器并重新启动服务。

我正在寻找一个针对Linux系统的工具,但是为了完整起见,欢迎使用windows或BSD解决scheme。

下面的脚本并不直接回答你的问题,但作为你可以用perl脚本做的事情types的一个例子,它可能是有用的。 我的设置是一个4层的build筑物和一个更受限制的pipe理networking。 我使用脚本在到达时添加新机器,loggingMAC地址,并为他们提供一个与他们所在楼层相对应的地址。 我使用一个$ PWD / .floorN文件来logging地址,所以我可以正确地增加。 它还添加正向和反向DNSlogging和IPAC-NG规则以logging带宽。 该脚本对文件的位置以及其中存在的一些文本进行了一些假设,以允许replace新logging。

 #!/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); 

有两个程序用于生成configuration文件;

  • HostDB
  • netconfgen

这属于更广泛的configurationpipe理类别,在服务器故障的其他地方(例如这里 )解决。 我会推荐这种types的东西的傀儡 。

这个方法比你所谈论的简单例子更深奥,但它也允许更多地控制你的系统