Redirecionar comunicação puramente LAN para uma interface e porta diferente (Linux)

Redirecionar comunicação puramente LAN para uma interface e porta diferente (Linux)

Tenho a seguinte situação:
Uma interface (dispositivo) identificada por um endereço IP 192.168.1.x (I1) que está se conectando através de qualquer serviço a outra interface com IP 192.168.1.y (I2) à porta (P2) no mesma LAN. Agora quero redirecionar todos os frames/pacotes (dados em geral) que são enviados de I1 para I2:P2 para outro dispositivo com endereço IP 192.168.1.z (I3) e porta (P3) na mesma LAN.

O que eu tentei:
Eu investiguei, iptablesmas finalmente percebi que eles (especificamente as tabelas nat) funcionam apenas em pacotes que vão para a rede externa (WAN). Uma exceção é quando as regras são definidas no dispositivo de conexão (I1), então estes comandos shell fizeram o trabalho:

iptables -t nat -A OUTPUT -p tcp -d I2 --dport P2 -j DNAT --to I3:P3
iptables -t nat -A INPUT -p tcp -s I3 --sport P3 -j SNAT --to I2:P2

Como eu queria aplicar as regras no roteador local, tentei ver se a comunicação entre I1 e I2 está passando por ele:
iptables -t raw -I PREROUTING -s I1 -d I2 -j LOG
E provavelmente não está, pois não consegui encontrar nenhum log com os dois IPs (o arquivo de log estava em/var/log/mensagens).

Comecei a perceber que a comunicação LAN passa pelo switch usando endereços MAC e não pode ser capturada lá, é verdade? Suponho que o "switch" esteja fisicamente (na) mesma caixa do roteador.

Por fim, estou pensando que talvez nem precise do redirecionamento e apenas execute os serviços desejados no I2 (que é uma interface virtual), mas isso não vem ao caso.

Então minha pergunta principal é:
É possível redirecionar o tráfego (modificar os pacotes) que vai deE1paraI2:P2noswitch/roteadorque está de passagem, para que o destino sejaI3:P3e I3 poderia então responder da mesma maneira (mascarar-se como I2:P2) sem que I1 percebesse?

Acho que pode não ser possível e o redirecionamento nesse nível tem a ver com pontes (virtuais). Se sim, o mesmo resultado pode ser alcançado de outra forma? Só posso modificar o switch e as interfaces I2, I3 (NÃO I1).

Responder1

Aparentemente, você está no mesmo segmento de rede e como adivinhou - o tráfego NÃO ESTÁ passando pelo roteador neste caso.

Existem dois locais onde você pode fazer os ajustes necessários:

  1. O dispositivo de origem (I1) onde você só precisa DNAT os pacotes de saída:

    iptables -t nat -A OUTPUT -p tcp -d I2 --dport P2 -j DNAT --to I3:P3
    
  2. O segundo dispositivo (I2) onde você precisa DNAT e SNAT e deve ter o encaminhamento de pacotes habilitado:

    iptables -t nat -A PREROUTING -p tcp -s I1 -d I2 --dport P2 -j DNAT --to-destination I3:P3
    iptables -t nat -A POSTROUTING -p tcp -s I1 -d I3 --dport P3 -m conntrack --ctstate DNAT -j SNAT --to-source I2
    

Responder2

Você só pode fazer essa modificação no seu I1dispositivo e usando iptables NAT ou similar lá.

Se você configurar sub-redes IP separadas em sua LAN atual para que xestejam yem sub-redes diferentes, poderá realizar essa manipulação de destino no roteador, porque os pacotes passarão pelo roteador.

informação relacionada