Используя модуль брандмауэра версии 1.9 в марионетке 3.8.7, я получаю следующую ошибку:
Ошибка 400 на сервере: недопустимая строка параметра в брандмауэре
Вот мое правило Puppet Firewall.
firewall {
"051 asterisk-set-rate-limit-register":
string => "REGISTER sip:",
string_algo => "bm",
dport => '5060',
proto => 'udp',
recent => 'set',
rname => 'VOIPREGISTER',
rsource => 'true';
"052 asterisk-drop-rate-limit-register":
string => "REGISTER sip:",
string_algo => "bm",
dport => '5060',
proto => 'udp',
action => 'drop',
recent => 'update',
rseconds => '600',
rhitcount => '5',
rname => 'VOIPREGISTER',
rsource => true,
rttl => true;
}
Проблема заключается в том, что не был создан экземпляр класса брандмауэра. Я также добавил команду очистки брандмауэра, чтобы присутствовали только следующие правила. Это удобно, чтобы в брандмауэре случайно не остались дыры.
Вот код, который работает в моей системе:
class { 'firewall': }
resources { 'firewall':
purge => true,
}
firewall { "051 asterisk-set-rate-limit-register":
string => "REGISTER sip:",
string_algo => "bm",
dport => '5060',
proto => 'udp',
recent => 'set',
rname => 'VOIPREGISTER',
rsource => 'true';
}
firewall { "052 asterisk-drop-rate-limit-register":
string => "REGISTER sip:",
string_algo => "bm",
dport => '5060',
proto => 'udp',
action => 'drop',
recent => 'update',
rseconds => '600',
rhitcount => '5',
rname => 'VOIPREGISTER',
rsource => true,
rttl => true;
}
Я проверил это на своей марионеточной установке с puppetlabs-firewall
модуль установлен.
Успешно применено.