Я добавил порт к общедоступной зоне в firewalld, но все еще не могу получить доступ к порту

Я использовал iptables в течение долгого времени, но никогда не использовал firewalld до недавнего времени. Я включил порту 3 000 TCP через firewalld со следующей командой:

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

Однако я не могу получить доступ к серверу на порте 3000. От внешнего поля:

telnet 178.62.16.244 3000
Trying 178.62.16.244...
telnet: connect to address 178.62.16.244: Connection refused

Нет никаких проблем маршрутизации: у Меня есть отдельное правило для порта вперед от порта 80 для портирования 8000, который хорошо работает внешне. Мое приложение определенно слушает на порте также:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      99         36797      18662/node

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

# firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports: port=80:proto=tcp:toport=8000:toaddr=
  icmp-blocks:
  rich rules:

Однако я вижу правило в файле конфигурации XML:

# cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
  <port protocol="tcp" port="3000"/>
  <forward-port to-port="8000" protocol="tcp" port="80"/>
</zone>

Что еще я должен сделать для предоставления доступа к моему приложению на порте 3000?

Также: добавляет доступ через порт корректную вещь сделать? Или я должен сделать firewalld 'сервис' для своего приложения вместо этого?

3
задан 12 August 2014 в 13:47
4 ответа

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

Начиная с RHEL 7.1 и текущих версий Fedora, вы также можете скопировать запущенную конфигурацию в постоянную с:

firewall-cmd --runtime-to-permanent
9
ответ дан 3 December 2019 в 04:52

Как ни странно, правило, казалось, только выписывалось в конфигурационный файл и не применялось сразу. Пришлось перезагружать брандмауэр:

firewall-cmd --reload

После этого появилось правило:

# firewall-cmd --zone=public --list-all
public (default, active)
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports: 3000/tcp
  masquerade: no
  forward-ports: port=80:proto=tcp:toport=8000:toaddr=
  icmp-blocks:
  rich rules:

Порт теперь доступен.

4
ответ дан 3 December 2019 в 04:52

требуется перезапуск для применения внесенных Вами изменений

.
-3
ответ дан 3 December 2019 в 04:52

Оставив это примечание, поскольку моя проблема не была решена, пока я не перезапустил systemctl с помощью

sudo systemctl restart firewalld

Я пробовал все вышеперечисленное. Перезагрузил вм. Я даже установил правила в VNIC. Но это решилось только после перезапуска службы.

Среда: Oracle Cloud Network ВМ: вычислительный экземпляр (разработчик с Oracle Linux 8)

0
ответ дан 30 July 2021 в 06:21

Теги

Похожие вопросы