Мои службы были правильно отфильтрованы после перехода с iptables на firewalld и обновления правил с помощью firewall-cmd. Затем я переместил все сервисы в контейнеры с помощью Docker и запустил все с помощью docker-compose.
Моя зона по умолчанию - «общедоступная». Я вручную добавил docker0, мой внешний (Ethernet) интерфейс и интерфейс, который контейнеры Docker, кажется, общаются с внешним миром (br-304604a31e79) в «общедоступную» зону. Я выполнил команды для перемещения интерфейсов в «публичную» зону как с, так и без --permanent
флаг.
Когда я использую nmap
для сканирования моего сервера службы, работающие в контейнерах Docker, по-прежнему доступны (все еще «открыты», а не «отфильтрованы»).
Почему firewalld не фильтрует службы, работающие в моих контейнерах Docker?
Docker выполняет собственный брандмауэр, и в брандмауэре будут открыты только те порты, которые вы явно указали при настройке контейнеров. В docker-compose.yml необходимо указать только порты, открытые для внешнего мира. Контейнеры, которые вы определяете, всегда могут взаимодействовать друг с другом.