Почему firewall-cmd выдает ошибку "ALREADY_ENABLED", но порт не указан при вызове firewall-cmd --list-ports?

Используя CentOS 7, я пытаюсь использовать firewall-cmd --zone=public --add-port=443/tcp --permanent добавить 443 к моим разрешенным портам. К сожалению это выдает ошибку ALREADY_ENABLED: 443:tcp, Но когда я использую firewall-cmd --list-ports он не отображается в списке ("80/ TCP 3000/ TCP 26900/ TCP 26900/ UDP").

Я предполагаю, что проблема вызвана конфликтом между firewall-cmd и iptables. Но я понятия не имею, как отладить это и возможно ли это вообще сделать.

призвание firewall-cmd --list-all Результаты в следующем списке:

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports: 80/tcp 3000/tcp 26900/tcp 26900/udp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

1 ответ

Решение

Команда, которую вы запускаете, влияет на постоянную конфигурацию, а не на текущую конфигурацию. Но вы перечисляете работающую конфигурацию. Вот почему вы их не видите.

Вы можете указать постоянную конфигурацию, чтобы подтвердить, что правило было успешно добавлено.

firewall-cmd --list-all --permanent

Вместо этого вы можете добавить правило в рабочую конфигурацию:

firewall-cmd --zone=public --add-port=443/tcp

Или вы можете перезагрузить текущую конфигурацию из постоянной конфигурации:

firewall-cmd --reload

Также помните, что firewalld определил службы для общих портов, поэтому обычно нет необходимости открывать их по номеру. Например, вместо открытия портов 80/tcp и 443/tcp вы могли бы вместо этого сказать:

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

Наконец, когда это возможно, лучше изменить правила в работающей конфигурации, убедиться, что они работают, а затем сохранить конфигурацию, а не наоборот. Это позволяет вам вернуться, если что-то пойдет не так, и вы случайно выйдете из системы.

Вы можете сохранить текущую конфигурацию в постоянную, запустив:

firewall-cmd --runtime-to-permanent

(Но некоторые операции работают только с постоянной конфигурацией, например, создание новых зон. Для этого вы должны использовать --permanent а потом сразу --reload брандмауэр.)

Другие вопросы по тегам