Como fazer o redirecionamento / redirecionamento de portas no Debian?

9

Eu tenho duas perguntas.

Pergunta 1: Minha máquina debian tem a interface eth3 com ip 192.168.57.28. Se alguém tentar se conectar a 192.168.57.28:1234 como redirecionar a solicitação para outra máquina: 192.168.57.25:80?

Pergunta 2: Se minha máquina debian tiver duas interfaces: eth3 com 192.168.57.28 e ppp0 com algum IP dinâmico e alguém tentar conectar via ppp0 na porta 1234, como eu redireciono a solicitação para 192.168.57.25:80? / p>

Eu tentei isso:

$ iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 192.168.57.25:80
$ echo 1 > /proc/sys/net/ipv4/ip_forward

mas não funciona.

    
por Dánjal Salberg Adlersson 21.08.2013 / 12:07

2 respostas

8
iptables -A PREROUTING -t nat -i eth3 -p tcp --dport 1234 -j DNAT --to-destination 192.168.57.25:80
iptables -A FORWARD -p tcp -d 192.168.57.25 --dport 80 -j ACCEPT
iptables -A POSTROUTING -t nat -s 192.168.57.25 -o eth3 -j MASQUERADE

O primeiro especifica que todas as conexões tcp de entrada para a porta 1234 devem ser enviadas para a porta 80 da máquina interna 192.168.57.25. Esta regra não completa o trabalho porque o iptables nega todas as conexões de entrada. Em seguida, aceitamos a conexão de entrada para a porta 1234 da eth3, que se conecta à Internet com o IP público pela segunda regra. Adicionamos a segunda regra na cadeia FORWARD para permitir o encaminhamento dos pacotes para a porta 80 de 192.168.57.25.

EDITAR: POSTROUTING adicionado.

Para acompanhar a conexão. caso contrário, o host externo veria o IP interno 192.168.57.25, do qual ele não faz ideia.

EDIT2: Acabamos de receber a sugestão de que deveria ser - para o destino em vez de - para (sry)

    
por 21.08.2013 / 12:18
4

Obrigado a Daywalker e Dánjal Salberg Adlersson. Depois de horas de palavrões, o encaminhamento de portas com o iptables finalmente funciona. (testado no Debian)

bash-script

#!/bin/bash

IPTBL=/sbin/iptables

IF_IN=eth0
PORT_IN=40022

IP_OUT=172.16.93.128
PORT_OUT=22

echo "1" > /proc/sys/net/ipv4/ip_forward
$IPTBL -A PREROUTING -t nat -i $IF_IN -p tcp --dport $PORT_IN -j DNAT --to-destination ${IP_OUT}:${PORT_OUT}
$IPTBL -A FORWARD -p tcp -d $IP_OUT --dport $PORT_OUT -j ACCEPT
$IPTBL -A POSTROUTING -t nat -j MASQUERADE
    
por 29.12.2015 / 17:50