Iptables redirecionam para localhost?


13

Suponha que eu tenha uma rede com um servidor roteando todas as conexões de dentro da rede para a Internet. Como posso configurar o iptables para que, em vez de rotear as conexões de entrada com a Internet, ele as direcione para a porta 8080 do host local. Toda a ajuda é apreciada.


O problema é que, com o redirecionamento simples (endereço IP de destino NAT), você perde o endereço IP de destino original. Deseja configurar um proxy HTTP transparente ou deve processar outros protocolos além do HTTP?
pabouk

Não importa se é transparente ou não #
DankMemes

Redirecionando todo o tráfego a um proxy é uma base para proxy transparente :)
pabouk

Aqui está outra resposta que realmente me ajudou: unix.stackexchange.com/questions/111433/…
Wren T.

Respostas:


6
sysctl net.ipv4.ip_forward=1 
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080

1
não use negrito ....

Obrigado! Ainda não tentei isso, mas suspeito que estou perdendo o comando de encaminhamento de IP. E da próxima vez, use blocos de código, não em negrito.
DankMemes

@AlexAntonov, use blocos de código. Selecione seu texto no modo de edição e clique no ícone de colchetes.
DankMemes

@ZoveGames, desculpe, corrigi-lo.
precisa

2
Eu experimentei isso. O sysctl ip_forward não é necessário. No entanto, a opção route_localnet aqui é. Vejo agora que é exatamente isso que a resposta de Juan Cespedes afirma.
Matt Joiner

31

isso pode ser feito com iptables, mas apenas com o kernel> = 3.6.

Você terá que fazer:

sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

ip_forwardnão é necessário, porque o pacote não é encaminhado, mas se você não incluir o sysctl for route_localnet(que funciona apenas em kernels> = 3.6), o pacote será descartado pelo kernel porque o considera "marciano" do lado de fora e com um endereço de destino 127.0.0.1


Yup, que funciona
Nick De grega

Não sabia sobre route_localnet. Tão antiquado e não conseguia descobrir por que o ip_forward não estava funcionando (suspeitava que não era necessário, mas tentou de qualquer maneira).
dmourati

1
Certifique-se de salvar net.ipv4.conf.all.route_localnet=1, /etc/sysctl.confcaso contrário não será persistente e, após a reinicialização, a variável retornará a 0, causando a queda do pacote. Seria muito difícil entender por que agora tudo não está funcionando ... aconteceu comigo. ;)
viz

Desculpe por necro uma pergunta antiga, mas existe um equivalente de ipv6 net.ipv4.conf.all.route_localnetpara uso ip6tables?
Kebian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.