Я пытаюсь реализовать довольно простой брандмауэр в Fedora, где общедоступный Интернет может получить доступ к SSH, HTTP, HTTPS и Cockpit, но больше ничего. Между тем, серверы запускают микросервисы через Docker, которые могут общаться друг с другом через порты 8000-8999.
Я настроил это на новой установке Fedora Server с помощью следующих команд:
брандмауэр-cmd --zone=public --add-service=cockpit
брандмауэр-cmd --zone=public --add-service=http
брандмауэр-cmd --zone=public --add-service=https
брандмауэр-cmd --zone=internal --add-source=192.168.1.65
брандмауэр-cmd --zone=internal --add-source=192.168.1.66
брандмауэр-cmd --zone=internal --add-port=8000-8999/tcp
firewall-cmd --runtime-to-permanent
Когда я проверяю свою конфигурацию с помощью --список-все
, вроде все правильно:
> firewall-cmd --list-all --zone=internal
внутренний (активный)
цель: по умолчанию
icmp-инверсия блока: нет
интерфейсы:
источники: 192.168.1.65 192.168.1.66
службы: dhcpv6-клиент ssh
порты: 8000-8999/tcp
протоколы:
вперед: нет
маскарад: нет
форвард-порты:
исходные порты:
icmp-блоки:
богатые правила:
> firewall-cmd --list-all --zone=public
публичный (активный)
цель: по умолчанию
icmp-инверсия блока: нет
интерфейсы: enp2s0
источники:
сервисы: кабина dhcpv6-клиент http https ssh
порты:
протоколы:
вперед: нет
маскарад: нет
форвард-порты:
исходные порты:
icmp-блоки:
богатые правила:
Однако, когда я проверяю это, я могу ударить http://192.168.1.65:8080. Я могу попасть с машины в той же внутренней сети (192.168.128.128), а также публичный запрос с внешней машины. Поскольку ни один из них не был указан в внутренний
х источники
, я предполагал, что firewalld не пропустит запросы.
у меня автоматическая настройка докер
зона с докер0
интерфейс, но удаление этого, похоже, не меняет мою способность обращаться к внутреннему порту.
Почему я могу успешно запросить :8080 из источников, не указанных в внутренний
?