Como posso pegar todo o tráfego destinado a uma determinada porta, de qualquer IP a qualquer IP, e redirecioná-lo para a máquina local, preservando o IP de origem?

2

Eu quero levar todo o tráfego, de qualquer endereço IP para qualquer endereço IP, originado na interface enp4s5 , destinado à porta 80 , e redirecioná-lo para a máquina local (o roteador no qual o iptables está sendo executado).

O serviço em execução na porta 80 da máquina local (um servidor da Web, se isso não for óbvio na porta) precisa ser capaz de saber o IP original da fonte da conexão.

O caso de uso é para um portal WiFi cativo, que substitui todas as páginas HTTP (eu sei que isso não funcionará para HTTPS) com um redirecionamento para minha página de login em execução no roteador, com o qual elas devem ser autenticadas uma regra iptables ou adicionar seu endereço a um ipset que ignore este redirecionamento).

Tenho certeza de que um DNAT realiza metade da configuração desejada, redirecionando os pacotes para a máquina local, mas onde fiquei preso é que preciso de um SNAT correspondente para enviar os pacotes de resposta de volta à máquina que originalmente os enviou - mas não posso fazer isso porque não conheço o IP de origem para fornecer in-to-source para a regra SNAT.

    
por AppleDash 03.10.2018 / 07:31

1 resposta

2

O que acabou funcionando para mim para satisfazer todos os requisitos acima foi uma regra REDIRECT : iptables -t nat -A PREROUTING -i enp4s5 -p tcp --dport 80 -j REDIRECT --to-port 80

    
por 03.10.2018 / 09:52