Вопрос или проблема
При вводе следующей команды,
firewall-cmd --add-service=postgresql-13 --permanent
Я получаю это
Ошибка: INVALID_SERVICE: 'postgresql-13' не среди существующих служб
Где, postgresql-13 — это моя служба.
Что могло пойти не так?
Вы определяли пользовательскую службу firewalld с именем postgresql-13
? Вы не упоминали об этом.
Службы firewalld определяют один или несколько портов и/или протоколов, которые можно пропускать через брандмауэр. Они не связаны со службами systemd.
Если вы хотите разрешить входящий трафик к PostgreSQL, правильное имя службы — postgresql
.
firewall-cmd --get-services
показывает все службы, о которых знает firewalld. Для каждой перечисленной службы в /usr/lib/firewalld/services существует XML-файл. Обратитесь к нему, чтобы узнать, какие порты фактически открываются при включении службы.
В случае ОП должен существовать файл /usr/lib/firewalld/services/postgresql.xml, который определяет порт 5432/tcp.
Брандмауэр сохраняет службы в /usr/lib/firewalld/services в виде xml-файлов, или вы можете определить пользовательские службы в /etc/firewalld/services в дополнение к стандартным службам. Теперь ваш брандмауэр не может найти службу с этим именем, поэтому либо есть ошибка в написании имени службы, либо она должна быть определена. Например, для службы посмотрите это:
root@ailab:/home/iman# cat /usr/lib/firewalld/services/https.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Secure WWW (HTTPS)</short>
<description>HTTPS — это модифицированный HTTP, используемый для обслуживания веб-страниц, когда безопасность важна. Примеры — это сайты, которые требуют входа, такие как магазины или веб-почта. Этот вариант не обязателен для просмотра страниц локально или разработки веб-страниц. Вам нужно установить пакет httpd, чтобы этот вариант был полезен.</description>
<port protocol="tcp" port="443"/>
</service>
root@ailab:/home/iman#
Главные части — это протокол и номер порта.
Ответ или решение
Ошибка "INVALID_SERVICE: ‘postgresql-13’ not among existing services", возникающая при выполнении команды firewall-cmd --add-service=postgresql-13 --permanent
, указывает на то, что служба с указанным именем не существует в списке доступных для firewalld. Давайте подробно рассмотрим возможные причины этой проблемы и пути её решения.
Причины возникновения ошибки
-
Несуществующая служба: Firewalld использует заранее определенные службы, которые хранятся в XML-файлах. Для проверки доступных служб выполните команду:
firewall-cmd --get-services
Если в этом списке нет службы
postgresql-13
, то попытка ее добавления приведёт к указанной ошибке. -
Некорректное имя службы: Возможно, вы ошиблись в написании названия службы. В стандартной конфигурации firewalld существует служба с именем
postgresql
, которая подсоединяет TCP-порт 5432 для PostgreSQL. Попробуйте использовать именно это название:firewall-cmd --add-service=postgresql --permanent
-
Пользовательская служба: Если действительно необходимо добавить службу с собственным именем, например,
postgresql-13
, её необходимо предварительно определить. Это можно сделать, создав XML-файл в директории/etc/firewalld/services/
или/usr/lib/firewalld/services/
. Пример XML файла для создания кастомной службы может выглядеть так:<?xml version="1.0" encoding="utf-8"?> <service> <short>PostgreSQL 13</short> <description>PostgreSQL 13 service</description> <port protocol="tcp" port="5432"/> </service>
Сохраните файл с именем
postgresql-13.xml
, затем выполните команду для добавления службы.
Проверка определенных служб
Если вы хотите проверить, какие порты и протоколы открываются для каждой службы, вы можете ознакомиться с XML-файлами, расположенными по адресу /usr/lib/firewalld/services/
. Например, для PostgreSQL существует файл postgresql.xml
, который описывает открываемый порт 5432.
Заключение
Для исправления ошибки INVALID_SERVICE
, убедитесь, что:
- Вы используете корректное имя существующей службы (
postgresql
вместоpostgresql-13
). - Если необходимо добавить пользовательскую службу, создайте соответствующий XML-файл с нужными параметрами.
Следуя этим рекомендациям, вы сможете успешно настроить firewalld
и избежать появления данной ошибки в будущем.