Redirecionar apenas solicitações de hosts específicos, deixando um padrão para outras pessoas

0

Eu tenho uma máquina com apenas a porta 80 aberta, já existe um servidor http ligado. Eu quero interceptar qualquer tráfego de entrada na porta 80 e:

  • se estiver vindo do redirecionamento ip1, ip2, ip3 em outro aplicativo que esteja escutando em outra porta
  • Senão, vá para o servidor da Web

Isso seria possível? Atualmente estou usando o socat mas, mesmo com reuseaddr, ainda recebo erro ao iniciar o servidor devido à porta já em uso ...

    
por Phate 23.08.2018 / 21:20

1 resposta

1

Você disse "com apenas a porta 80 aberta". Se outras portas estiverem bloqueadas por algum firewall externo (por exemplo, um roteador com NAT, somente a porta 80 é encaminhada para você), uma regra básica pode ser assim:

iptables -t nat -A PREROUTING -p TCP --dport 80 -s 192.168.1.7 -j REDIRECT --to-port 1234

Tomando todo o tráfego que entra na porta 80 , ele redireciona o que for de 192.168.1.7 para a porta 1234 , deixando o restante intacto.

Observação iptables opera na primeira fase , portanto, convém fazer

iptables -t nat -I PREROUTING …

em vez disso.

Para várias formas de especificar vários possíveis endereços de origem, consulte as respostas a esta pergunta: iptables IPs de várias origens .

Mas se "com apenas a porta 80 aberta" significa que você tem iptables -A INPUT … regras que só permitem a porta 80, espero que o acima, por si só, não funcione. Isso ocorre porque nat/PREROUTING funciona primeiro. Nesse caso, você também deve desbloquear a outra porta.

    
por 23.08.2018 / 21:32

Tags