Eu ampliei a resposta de caladona, já que não consegui ver os pacotes de resposta. Para este exemplo:
- No meu PC local eu tenho placas de rede em diferentes sub-redes, 192.168.1 / 24 , 192.168.2 / 24
- Existe um roteador / PC externo que tem acesso a ambas as sub-redes.
- Quero enviar tráfego bidirecional pelas NICs no PC local.
- A configuração requer dois endereços IP não usados para cada sub-rede.
As rotas iptables do PC local são definidas para o tráfego de saída SNAT e DNAT para o IP 'falso'.
iptables -t nat -A POSTROUTING -d 192.168.1.100 -s 192.168.2.0/24 -j SNAT --to-source 192.168.2.100
iptables -t nat -A PREROUTING -d 192.168.1.100 -i eth0 -j DNAT --to-destination 192.168.1.1
iptables -t nat -A POSTROUTING -d 192.168.2.100 -s 192.168.1.0/24 -j SNAT --to-source 192.168.1.100
iptables -t nat -A PREROUTING -d 192.168.2.100 -i eth1 -j DNAT --to-destination 192.168.2.1
As regras fazem o seguinte:
- Reescreva 192.168.2.1 origem para 192.168.2.100 nos pacotes de saída
- Reescreva 192.168.1.100 destino para 192.168.1.1 nos pacotes de entrada
- Reescreva 192.168.1.1 origem para 192.168.1.100 nos pacotes de saída
- Reescreva 192.168.2.100 destino para 192.168.2.1 nos pacotes de entrada
Para resumir, o sistema local agora pode falar com uma máquina 'virtual' com os endereços 192.168.1.100 e 192.168.2.100.
Em seguida, você precisa forçar seu PC local a usar o roteador externo para alcançar seu IP falso. Você faz isso criando uma rota direta para o IP através do roteador. Você quer ter certeza de forçar os pacotes para o oposto da sub-rede de destino.
ip route 192.168.1.100 via $ROUTER_2_SUBNET_IP
ip route 192.168.2.100 via $ROUTER_1_SUBNET_IP
Finalmente, para que tudo isso funcione, o roteador externo precisa saber como alcançar os IPs falsos em seu PC local. Você pode fazer isso ativando o proxy ARP no seu sistema.
echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/proxy_arp
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Com esta configuração, você pode agora tratar os IPs falsos como um sistema real no seu PC local. O envio de dados para a sub-rede .1 forçará os pacotes a sair da interface .2. O envio de dados para a sub-rede .2 forçará os pacotes a sair da interface .1.
ping 192.168.1.100
ping 192.168.2.100