```{index} freeipa ``` # Исключения / особые случаи (например, 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`: ```text 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 == одна зона"). ``````