Eu adicionei uma porta à zona pública no firewalld mas ainda não consigo acessar a porta

2

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?

    
por mikemaccana 12.08.2014 / 12:32

3 respostas

8

Usar o sinalizador --permanent grava suas alterações na configuração persistente, mas não na configuração em execução. Execute o mesmo comando novamente sem o sinalizador --permanent para que ele entre em vigor imediatamente.

Começando com o RHEL 7.1 e as versões atuais do Fedora, você também pode copiar a configuração em execução para a configuração permanente com:

firewall-cmd --runtime-to-permanent
    
por 18.08.2014 / 16:28
4

Estranhamente, a regra parece ser escrita apenas no arquivo de configuração e não é aplicada imediatamente. Eu tive que recarregar o firewall:

firewall-cmd --reload

Depois disso, a regra apareceu:

# 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:

A porta agora está acessível.

    
por 12.08.2014 / 12:44
-3

um reinício é necessário para aplicar as alterações efetuadas

    
por 18.08.2014 / 16:18