Encaminhar Conexões TCP com Iptables

2

Eu recebo conexões para o meu servidor a partir de vários endereços IP que eu quero rotear essas conexões, assim como o rinetd faz, mas com base no ip que a conexão está vindo para se conectar a um host especificado.

Assim:

IP 10.10.12.1    => CONNECTS TO MY SERVER => MY SERVER REDIRECTS IT TO 82.12.12.1
IP 10.10.12.2    => CONNECTS TO MY SERVER => MY SERVER REDIRECTS IT TO 81.121.12.10

etc

É possível ou preciso escrever meu próprio daemon para obter essa funcionalidade?

    
por opc0de 03.07.2013 / 12:14

1 resposta

4

iptables pode fazer isso:

sudo iptables -t nat -A PREROUTING -s 10.10.12.1 -j DNAT --to 82.12.12.1
sudo iptables -t nat -A POSTROUTING -s 10.10.12.1 -d 82.12.12.1 -j MASQUERADE

O primeiro comando altera o endereço de destino do pacote, redirecionando-o para o host externo. O segundo comando altera o endereço de origem, para que o host externo possa enviar uma resposta ao seu servidor.

Provavelmente, você desejará redirecionar apenas os pacotes destinados a portas específicas, por exemplo, se 10.10.12.1 falar com 82.12.12.1 somente através das portas TCP 80 e 1234 o primeiro comando iptables seria:

sudo iptables -t nat -A PREROUTING -s 10.10.12.1 -p tcp -m multiport --destination-ports 80,1234 -j DNAT --to 82.12.12.1
    
por Eric Carvalho 03.07.2013 / 13:46