Usando iptables para redirecionar todo o tráfego para o servidor local

Usando iptables para redirecionar todo o tráfego para o servidor local

Olá,

Estou tentando redirecionar todo o tráfego do meu roteador wifi para um servidor local usando iptables. Não tenho certeza se acertei o comando e também quero excluir o IP do roteador (172.16.0.1) da regra para evitar que eu me bloqueie de acesso ao roteador.

O que eu descobri até agora:

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 172.16.0.2:80
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to 172.16.0.2:80

Ainda não testei acima pois temo que isso faça com que eu não consiga acessar o roteador novamente haha. Como excluir 172.16.0.1 de ser redirecionado para 172.16.0.2?

Configuração: 172.16.0.2 é o IP do servidor web 172.16.0.1 é meu roteador (dd-wrt) sem conexão com a internet.

Exemplo do que estou tentando alcançar:

  • O usuário se conecta ao hotspot wifi, tentando acessar www.siteA.com, é redirecionado para 172.16.0.2 (/index.html)
  • O usuário se conecta ao hotspot wifi, tentando acessar www.siteB.com, é redirecionado para 172.16.0.2 (/index.html)
  • O usuário tenta acessar 172.16.0.1 e nenhuma direção ocorre :)

Tenha um ótimo dia e obrigado!

Responder1

Como as regras do iptables são processadas em ordem, a primeira regra deve ser permitir todo o tráfego direcionado ao roteador.

iptables -t nat -I PREROUTING -i br0 -p tcp -d 172.16.0.1--dport 80 -j ACCEPT 

Em seguida, adicione as regras para redirecionar o tráfego.

iptables -t nat -A PREROUTING -d !172.16.0.1 -i br0 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2:80

Não acho que isso funcione para https, pois não está se conectando a um servidor com SSL.

informação relacionada