Назад | Перейти на главную страницу

Порт не открыт в брандмауэре, но доступен

Я использую centos 7 с firewallD на своем сервере.

Я также установил докер на этом компьютере и добавил его в доверенную зону своего брандмауэра.

У меня есть контейнер, который слушает порт 9081 но этот порт не открыт на брандмауэре, и странно то, что порт доступен с моего домашнего компьютера.

Это результат firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports: 443/tcp 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

У меня две активные зоны: trusted и public

вот вывод команды firewall-cmd --zone=trusted --list-all

trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: docker0
  sources:
  services:
  ports: 4243/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Ясно порт 9081 не открыт ни в одной зоне, но все же я могу получить к нему доступ. Зачем? как его закрыть?

Я понял, что при запуске Docker с firewallD возникают некоторые ошибки.

Простой обходной путь - изменить способ определения портов в докере. в моем случае мне пришлось изменить мой docker-compose на это:

ports:
- "127.0.0.1:9081:8081"

Важная часть - использование 127.0.0.1 перед определением порта хоста.