+ Responder ao Tópico



  1. #1

    Question Liberar porta para rede externa

    Olá, pessoal, tudo OK?

    Preciso imensamente de auxílio.

    Estou com a seguinte situação sem conseguir resolver:

    Tenho um servidor, no qual roda um sistema interno da empresa onde trabalho. Ele possui IP 192.168.20.79. Nele rodam o Apache e o Tomcat. O sistema é o Ubuntu.

    O sistema roda em Tomcat e o phppgadmin (postgres), roda em Apache.

    O problema é o seguinte: o sistema ainda está em fase de desenvolvimento e o administrador precisa de acesso externo ao phppgadmin.

    O sistema que roda no Tomcat foi liberado com sucesso na Firewall do Gateway (rodando CentOS 5.2) e é acessado normalmente. A porta do Tomcat é a 8080.

    Mas não estou conseguindo fazer o mesmo para o phppgadmin, que roda na porta 80.

    O Gateway tem, na verdade, um redirecionamento da porta 80 para o servidor web (que não é o mesmo do sistema em questão), e um redirecionamento da porta 8080 para o sistema (Tomcat).

    Eu tentei fazer com que o phppgadmin respondesse na porta 8081 do Gateway, redirecionando essa porta na firewall. O Apache do servidor 192.168.20.79 está com Listen na porta 8081. Funcionou perfeitamente para a rede interna. Consigo inclusive acessar de máquinas com IP real que ficam na empresa. Mas de fora da empresa, a porta não responde. Recebo a seguinte mensagem:

    O servidor 200.xxx.xxx.xxx (IP do Gateway) demorou muito para responder.

    Seguem abaixo todas as regras de redirecionamento usadas. As que funcionam e as que possivelmente tem problemas.

    echo "Redirecting WWW port"
    $IPTABLES -t filter -I FORWARD -d 192.168.20.4 -p tcp --dport 80 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -s 192.168.20.4 -p tcp --sport 80 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -d 192.168.20.79 -p tcp --dport 8080 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -s 192.168.20.79 -p tcp --sport 8080 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -d 192.168.20.79 -p tcp --dport 8081 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -s 192.168.20.79 -p tcp --sport 8081 -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 -j DNAT --to 192.168.20.4
    $IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8080 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8081 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp -i $INTIF -d 200.xxx.xxx.xxx --dport 8080 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp -i $INTIF -d 200.xxx.xxx.xxx --dport 8081 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp -i $INTIF -d 200.xxx.xxx.xxx --dport 80 -j DNAT --to 192.168.20.4
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.4 -j SNAT --to 192.168.20.1
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.4 -j SNAT --to 200.xxx.xxx.xxx
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.79 -j SNAT --to 192.168.20.1
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.79 -j SNAT --to 200.xxx.xxx.xxx

    Fico no aguardo de uma ajuda de vocês. Agradeço desde já.
    Última edição por felixleonardo; 23-02-2009 às 11:14.

  2. #2

    Padrão

    tenta liberar o INPUT das Portas
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
    iptables -A INPUT -p tcp --dport 8081 -j ACCEPT

    tenta tbm eliminar a especificacao das placas de rede e destinos

    $IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.20.4
    $IPTABLES -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp --dport 8081 -j DNAT --to 192.168.20.79

    e vc ta remarcando o pacote 2x acho q uma regra sobrepoe a outra

    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.4 -j SNAT --to 192.168.20.1
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.4 -j SNAT --to 200.xxx.xxx.xxx
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.79 -j SNAT --to 192.168.20.1
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.79 -j SNAT --to 200.xxx.xxx.xxx

    tenta e posta ai

  3. #3

    Padrão

    Caro amigo rmj,

    Tentei fazer as regras que você me sugeriu, porém não resolveu. Infelizmente!

    Continuo acessando a porta 8080 do servidor 192.168.20.79 normalmente, mas a 8081, não. Só de máquinas de dentro da rede. Minhas regras ficaram assim (depois das mudanças).

    echo "Redirecting WWW port"
    $IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
    $IPTABLES -A INPUT -p tcp --dport 8080 -j ACCEPT
    $IPTABLES -A INPUT -p tcp --dport 8081 -j ACCEPT

    $IPTABLES -t filter -I FORWARD -d 192.168.20.4 -p tcp --dport 80 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -s 192.168.20.4 -p tcp --sport 80 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -d 192.168.20.79 -p tcp --dport 8080 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -s 192.168.20.79 -p tcp --sport 8080 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -d 192.168.20.79 -p tcp --dport 8081 -j ACCEPT
    $IPTABLES -t filter -I FORWARD -s 192.168.20.79 -p tcp --sport 8081 -j ACCEPT

    $IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.20.4
    $IPTABLES -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp --dport 8081 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp -d 200.xxx.xxx.xxx --dport 8080 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp -d 200.xxx.xxx.xxx --dport 8081 -j DNAT --to 192.168.20.79
    $IPTABLES -t nat -A PREROUTING -p tcp -d 200.xxx.xxx.xxx --dport 80 -j DNAT --to 192.168.20.4

    #$IPTABLES -t nat -A POSTROUTING -d 192.168.20.4 -j SNAT --to 192.168.20.1
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.4 -j SNAT --to 200.xxx.xxx.xxx
    #$IPTABLES -t nat -A POSTROUTING -d 192.168.20.79 -j SNAT --to 192.168.20.1
    $IPTABLES -t nat -A POSTROUTING -d 192.168.20.79 -j SNAT --to 200.xxx.xxx.xxx

    Será que eu tenho que mexer em algo no servidor 192.168.20.79 pra liberar a porta 8081 dele? Pensei nisso, mas não sei mexer no Ubuntu direito. Você tem alguma outra sugestão?

    Valeu mesmo pela força!!!

    Obs.: Se precisar, eu posto em um arquivo anexo a firewall completa pra você dar uma checada. Não vou por aqui, porque ela é extensa.

  4. #4

    Padrão

    Olá felixleonardo,

    Fiquei enteressado em tentar resolver seu problema. Gostaria que tentasse uma coisas:
    - Verificar as permissoes do seu phppgadmin (postgres) se o mesmo permite conexões externas, pelo que vc disse anteriormente, o seu firewall esta redirecionando corretamente a porta 8081 (testes com o apache).

    Se nao conseguir, anexe o seu firewall.sh

    Abraço

  5. #5

    Padrão

    pelo meu ver o seu firewall ta certo agora

    tenta da um service iptables stop no 192.168.20.79 soh pra testa

    e como o rogeriokde disse pode ser permicao do phppgadmin tbm

    ve se nao der certo posta o seu firewal pra gente da uma olhada

  6. #6

    Padrão

    rmj, amigão, não tem serviço iptables nessa máquina (192.168.20.79). Deu unrecognized service.
    Mas tem instalado o firestarter, o qual eu já parei, mas o problema permanece.

    Outra coisa: tive que retornar com as especificações da placa de rede, porque a rede interna não estava mais acessando nada. Quando pus as especificações de volta, funcionou de novo.

    e ao rogeriokde, não deve ser problema somente de permissão, porque o Apache da porta 8081 não abre. Só o Tomcat, na 8080.

    Lembrando que eu consigo abrir o Apache da 8081 na rede interna e de máquinas com IP real dentro da sub-rede do gateway.

    Estou pensando em uma coisa, mas minha limitação com o ubuntu não permite: como faço para abrir a porta 8081 no servidor 192.168.20.79? Pode ser isso, de repente. O Gateway está redirecionando, mas o servidor 192.168.20.79 demora pra responder e expira o tempo limite.

    Sei lá se falei besteira, mas estou tentando pensar em tudo.

    Mais uma vez, obrigado a vocês por se interessarem em ajudar.

    Eu estou indo agora à tarde para o serviço e vou salvar o arquivo da firewall e posto pra vocês.

    Segue em anexo o script da firewall que está no servidor. Ele é extenso, mas como já existia antes de eu chegar na empresa, não mexi em nada já existente. Só acrescentei as regras que estão no final:
    http://www.sendspace.com/file/29fltm
    Última edição por felixleonardo; 27-02-2009 às 11:42.