Моя цель - сделать так, чтобы брандмауэр разрешал подключения к моей недавно установленной службе / серверу / демону в Centos.

Я создаю файл /etc/firewalld/services/myservice.xml , затем перезагружаю брандмауэр, затем выполняю:

firewall-cmd --permanent --zone=public --add-service=myservice

Который возвращает:

success

Но я все еще не вижу порт myservice при сканировании портов сервера, пока не сделаю:

firewall-cmd --permanent --zone=public --add-port=###/tcp

Где ### - порт по умолчанию для моей службы.

С другой стороны, я могу добавить порт без добавления сервиса, и мой сервис будет доступен сразу же. Может кто-нибудь объяснить мне назначение служб межсетевого экрана (помимо портов)? (или альтернативно (возможно) объяснить, что я делаю это неправильно).

1 ответ1

0

Возможно, вы путаете сервис в смысле ОС Linux и в смысле сети. То, что вы установили, было службой ОС, но для firewall-cmd требуется сетевая служба.

Требуемая сетевая служба - это имя, назначенное номеру порта, зарезервированному для связи с программным обеспечением, которое реализует эту услугу, например, веб-хост будет прослушивать порт службы HTTP 80, а любой браузер, которому требуется доступ к веб-хосту, будет связываться, хотя этот порт на машине, где работает веб-хостинг.

Чтобы настроить брандмауэр для HTTP на этом компьютере, вы можете использовать:

firewall-cmd --permanent --zone=public --add-service=http

Другими словами, вы используете имя сетевой службы, а не имя службы ОС, которая не имеет никакого отношения. Если установленная вами служба ОС реализует стандартную сетевую службу, то вы можете использовать имя сетевой службы в --add-service= ; если это не стандартный сервис, вы можете использовать только числовую --add-port= .

Вы можете найти сетевые службы, которые распознает firewall-cmd :

firewall-cmd --list-services

Более подробную информацию о портах и услугах можно найти здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .