Исключения / особые случаи (например, FreeIPA)#

Из-за правила “один IP адрес == одна зона firewalld” стандартные / дефолтные настройки плейбука для FreeIPA применить сложно / не удобно.

Для FreeIPA сделаны следующие исключения:

  • стандартная / дефолтная роль all_hosts — не применяется;

  • интерфейсу ens192 назначена роль sf-freeipa (вместо sf-drop для всех остальных);

  • все зоны firewalld должны разрешать службы freeipa-4, dns, ntp.

В плейбук setup_firewalld добавлены соответствующие исключения — но он не добавит нужные службы в новые зоны, это должны делать мы сами!

Важно понимать: в отличие от всех других хостов, к FreeIPA разрешены подключения из любых источников (к сервисам freeipa, dns, ntp). Считаю это разумным компромиссом с учётом текущих ограничений firewalld.

Note

Для справки: более изящным и верным решением будет использовать параметр nomatch для ipset sf-all-vdc, но в настоящий момент FirewallD не поддерживает nomatch в ipset.

Пример для справки (если поддержку добавят):

  • зона sf-all-vdc разрешает подключения с любого IP в текущем VDC;

  • источник — ipset sf-all-vdc-nets:

10.4.0.0/16
10.4.255.228/32 nomatch
10.4.255.138/32 nomatch

Две строки nomatch задают исключения из общей сети 10.4.0.0 (для jumphost и zabbix-server), соответственно, мы можем задать для них отдельные зоны и особые правила (и не нарушить принцип “один IP == одна зона”).