iptables - Como encaminhar todas as portas externas para uma porta local

4

Eu quero que um serviço seja executado em todas as portas externas do meu sistema. Como não funcionaria para iniciar 65535 instâncias únicas desse serviço (eu acho ...) eu pensei em usar o iptables para isso.

O serviço (apenas um script Python de 10 linhas) está escutando em localhost: 10000. Agora, o iptables deve encaminhar todas as solicitações TCP em uma porta externa para essa porta local, de modo que cada uma dessas portas pareça estar aberta. Tenho poucas experiências com o iptables e não tenho tempo para ler mais sobre esse assunto, então não consigo fazer isso funcionar.

Eu tentei:

iptables -A PREROUTING -t nat -i eth0 -p tcp -j DNAT --to-destination 127.0.0.1:10000

Mas ao digitalizar de dentro da rede local, todas as portas aparecem filtradas, não abertas. Não há outras regras atualmente ativas e as políticas estão todas definidas para o ACC

Como posso fazer isso certo?

Obrigado antecipadamente!

    
por j0ker 22.06.2012 / 19:31

2 respostas

4

Como suas políticas são ACCEPT, você pode usar sua linha do iptables com 2 mudanças:

  1. adicione o intervalo de portas de destino com --dport 1: 65535
  2. altere o 127.0.0.1 com o seu IP de interface (o IP da eth0)

por exemplo, esta linha funciona se o seu IP eth0 for 192.168.1.10:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1:65535 -j DNAT --to-destination 192.168.1.10:10000

todas as conexões para 192.168.1.10 (para qualquer porta) serão redirecionadas para a porta 10000.

Editar: Você também pode usar o alvo REDIRECT:

iptables -t nat -A PREROUTING -p tcp --dport 1:65535 -j REDIRECT --to-ports 10000

isso ainda não ajudará se você ouvir apenas o host local.

    
por 22.06.2012 / 20:09
1

Aqui está um link para uma resposta mais recente: link

Este realmente me ajudou.

    
por 16.05.2014 / 06:33

Tags