RHEL 6 Tendo problemas ao encaminhar a porta 80 para a porta 8080

1

Estou tentando configurar um servidor de aplicativos do JBoss em uma compilação do RHEL. O Jboss está vinculado a 127.0.0.1:8080, e estou tentando configurar o iptables para redirecionar todo o tráfego da porta 80 para a porta 8080. Este é o meu arquivo de configuração:

:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 127.0.0.1:8443
-A OUTPUT  -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A FORWARD -i eth0 -m state --state NEW -m tcp -p tcp -d 127.0.0.1 --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Mas não importa o que, a saída de iptables -L -v -n está revelando que todo o tráfego está sendo rejeitado. Se eu desligar o iptables, ele funciona, mas eu gostaria de usá-lo. Obrigado.

Esta é a saída:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  165 10948 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
   12   576 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443
 3237  405K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            127.0.0.1           state NEW tcp dpt:8080
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 146 packets, 19249 bytes)
 pkts bytes target     prot opt in     out     source               destination
    
por Delmania 11.12.2014 / 18:03

2 respostas

3

Eu diria que esta é uma abordagem errada. De qualquer forma, eu não gostaria de ter o JBoss (nem o tomcat) para gerenciar conexões diretas, a não ser para fins de teste. Não foi projetado para gerenciar diretamente as conexões externas.

Opção 1 Tem o proxy do servidor web apache para 127.0.0.1:8080

Você precisa disso em algum lugar da configuração do seu apache

LoadModule proxy_module  {path-to-modules}/mod_proxy.so
AddModule  mod_proxy.c

Ou com o apache2

$ sudo a2enmod proxy
$ sudo apache2ctl restart

E em hosts virtuais você pode ter vários aplicativos

ProxyPass         /myapp  http://localhost:8080/myapp
ProxyPassReverse  /myapp  http://localhost:8080/myapp

ou tem um único

ProxyPass         /  http://localhost:8080/
ProxyPassReverse  /  http://localhost:8080/

depois de alterar a configuração dos hosts virtuais, não é necessário reiniciar o apache

$ sudo apache2ctl graceful

atualizará as configurações sem perder as conexões em andamento.

Opção 2, usando mod_ajp

$ sudo a2enmod proxy_ajp
$ sudo apache2ctl restart

adicionando isso ao seu virtualhost

ProxyPass /app ajp://backend.example.com:8009/app

Supondo que a instância do tomcat esteja configurada para ter um conector ajp na porta 8009. Verifique as configurações do tomcat.

link

Opção 3, usando mod_jk link

Você ainda terá o outro problema que é configurar o JBoss para criar links para: 80, que será um problema de configuração do JBoss ... não se lembra de onde foi definido, tudo o que posso lembrar é que foi necessário me um tempo para descobrir. Eu preferi usar o conector ajp até agora.

Desculpe, não tenho acesso a uma configuração do JBoss agora, talvez alguém possa nos apontar onde está essa configuração.

    
por 11.12.2014 / 18:38
1

se você não quiser ou não puder usar um proxy reverso para expor o JBoss na porta 80, uma configuração possível para usar o Port Forwarding com o JBoss é:

/sbin/iptables -t nat -A OUTPUT     --destination localhost   -p tcp --dport 80 -j REDIRECT --to-ports 8080
/sbin/iptables -t nat -A OUTPUT     --destination <network IP address> -p tcp --dport 80 -j REDIRECT --to-ports 8080
/sbin/iptables -t nat -A PREROUTING --destination <network IP address> -p tcp --dport 80 -j REDIRECT --to-ports 8080

/sbin/iptables -t nat -A OUTPUT     --destination localhost   -p tcp --dport 443 -j REDIRECT --to-ports 8443
/sbin/iptables -t nat -A OUTPUT     --destination <network IP address> -p tcp --dport 443 -j REDIRECT --to-ports 8443
/sbin/iptables -t nat -A PREROUTING --destination <network IP address> -p tcp --dport 443 -j REDIRECT --to-ports 8443

/sbin/iptables --flush PREROUTING -t nat
/sbin/iptables --flush OUTPUT -t nat

Você também pode fazer o JBoss ouvir diretamente na porta 80.

Veja: Rodando o JBoss na porta 80 ou 443 ou Defina a porta de escuta como 80 no jboss AS 7.1

    
por 11.12.2014 / 20:01