MRTG также сделан для задачи, но немного более включен для установки: http://oss.oetiker.ch/mrtg/
Чтобы полностью понять как работает модуль, смотрите в $ module_path / firewall / lib / puppet / {type | proider} / *
Все это написано на Ruby. Даже если вы не знаете язык, его довольно просто интерпретировать.
Как упоминалось в комментарии, дополнительный код в вашем манифесте - это работа, чтобы модуль работал правильно. Я предполагаю, что у них была проблема с реализацией всего кода непосредственно в типе / поставщике через ruby. Имеет смысл использовать функциональность по умолчанию iptables-save
, потому что намного проще перезагрузить настройки брандмауэра после перезапуска, и это работает для большинства популярных дистрибутивов Linux.
Даже если вы скопируете / вставите этот код, он не повлияет на вашу текущую конфигурацию, пока вы не используете тип ресурса в узле по умолчанию или в конфигурации узла. Для целей тестирования включите этот код прямо в узел тестирования. Должен дать такой же результат. Пример выше:
Firewall {
notify => Exec["persist-firewall"],
before => Class['my_fw::post'],
require => Class['my_fw::pre'],
}
Firewallchain {
notify => Exec['persist-firewall'],
}
resources { "firewall":
purge => true
}
firewall { '100 ssh 22':
port => '22',
proto => 'tcp',
action => 'accept',
}
firewall { '100 www 80':
port => '80',
proto => 'tcp',
action => 'accept',
}
firewall { '100 sql 5436':
port => '5436',
proto => 'tcp',
action => 'accept',
}
firewall { '100 sql 5438':
port => '5438',
proto => 'tcp',
action => 'accept',
}
firewall { '100 sql 5440':
port => '5440',
proto => 'tcp',
action => 'accept',
}
exec { "persist-firewall":
command => $operatingsystem ? {
"debian" => "/sbin/iptables-save > /etc/iptables/rules.v4",
/(RedHat|CentOS)/ => "/sbin/iptables-save > /etc/sysconfig/iptables",
},
refreshonly => 'true',
}
В этом примере я разрешаю 22, 80. 5436, 5438 ВХОДЯЩЕЕ TCP-соединение.