Estou usando o iptables há muito tempo, mas nunca usei firewalld até recentemente.
Eu habilitei o port 3000 TCP via firewalld com o seguinte comando:
# firewall-cmd --zone=public --add-port=3000/tcp --permanent
No entanto, não consigo acessar o servidor na porta 3000. De uma caixa externa:
telnet 178.62.16.244 3000
Trying 178.62.16.244...
telnet: connect to address 178.62.16.244: Connection refused
Não há problemas de roteamento: Eu tenho uma regra separada para uma porta a partir da porta 80 para a porta 8000, que funciona bem externamente. Meu aplicativo também está escutando na porta:
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
não parece mostrar a porta - veja como ports
está vazio . Você pode ver a regra avançada que mencionei anteriormente.
# 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:
No entanto, posso ver a regra no arquivo de configuração 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>
O que mais eu preciso fazer para permitir o acesso ao meu aplicativo na porta 3000?
Além disso: está adicionando o acesso através de uma porta a coisa correta a fazer? Ou devo criar um 'serviço' firewall para meu aplicativo?