Redirecionamento de porta de 80 para 8080 usando o iptables não funcionando

1

Bom dia, eu tinha um Tomcat rodando na porta 80 em um servidor CentOS com o IP 10.33.46.68. Quando tentei abrir " link " no meu bloco de anotações, pude ver a página de boas-vindas do Tomcat. Então mudei a porta do Tomcat para 8080 e redirecionei o tráfego HTTP na porta 80 para a porta 8080 usando o iptables:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080

Agora, quando tento abrir " link " no meu bloco de notas, estou recebendo o tempo limite. Mas quando eu tento abrir " link " ou " link "diretamente no servidor, ambos os URLs funcionam bem. O que estou perdendo por favor?

Existe um firewall da Cisco entre o notebook e o servidor, que permite a comunicação apenas na porta 80. Este é o meu arquivo de configuração do iptables:

# Generated by iptables-save v1.4.7 on Wed Oct 17 14:51:20 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1027:228609]
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -m state --state INVALID -j DROP 
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT 
-A INPUT -j DROP 
COMMIT
# Completed on Wed Oct 17 14:51:20 2012
# Generated by iptables-save v1.4.7 on Wed Oct 17 14:51:20 2012
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [4:274]
:OUTPUT ACCEPT [2:154]
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 
-A OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 
COMMIT
# Completed on Wed Oct 17 14:51:20 2012

Muito obrigado antecipadamente. Vojtech

    
por Vojtech 17.10.2012 / 16:18

1 resposta

3

A corrente INPUT na tabela filter não deve ser DROP. (bem, pelo menos não exclusivamente sem aceitar portas!)

Pelo menos, aceite o tcp / 8080 para que funcione.

O pacote primeiro atravessa o mangle-, em seguida, o pré-layout e, em seguida, a tabela de filtros. Sua tabela mangle está vazia, você redireciona no reencaminhamento, mas quando o pacote entra em INPUT / filter, ele está sendo descartado.

Um simples iptables -t filter -A INPUT -p tcp --dport 8080 -j ACCEPT deve ser suficiente.

Editar: Aceitar localhost na cadeia INPUT de filtro deve estar lá também, só para não complicar as coisas. Embora você deva considerar a implementação de regras que são um pouco mais sofisticadas, algo como:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # don't you want ssh?
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable

Algo nesse sentido.

    
por 17.10.2012 / 20:56