Quero testar como a infraestrutura de rede reage a pacotes não compatíveis. Um dos testes que estou curioso é como a infraestrutura de rede reage quando recebe um pacote destinado a 127.0.0.1/8
outro host.
Para fazer isso, eu teria que fazer com que o Ubuntu encaminhasse pacotes para um endereço nesta sub-rede para o gateway de rede, mas não tenho certeza de como fazer isso. Para ser claro, não estou procurando enviar todos os pacotes para a 127.0.0.1/8
sub-rede para o gateway, mas um determinado não 127.0.0.1
e não 127.0.0.53
IP para não quebrar nada.
Pensei em "mapear" um endereço nessa sub-rede para o IP do gateway conforme https://serverfault.com/q/692415 , mas isso altera o cabeçalho de destino do pacote antes que ele deixe o host.
Existe alguma maneira de fazer o que estou procurando no Ubuntu? Serão necessárias modificações no kernel? Como alternativa, isso é mais fácil de fazer em um sistema operacional diferente?
Posso estar lhe dando corda suficiente para você se enforcar. O parâmetro sysconfig
route_localnet
controla a restrição de roteamento de 127.0.0.0/8 e deve ser usado apenas para algumas configurações específicas que provavelmente envolvem NAT ou balanceamento de carga.Ex.: para um sistema com 192.0.2.2/24 configurado em eth0 e tentando alcançar 192.0.2.3 com fonte 127.0.0.44, a pilha de roteamento o proíbe por padrão:
uma vez definido:
A solicitação ARP ainda deve ser feita por 192.0.2.2, mas espere problemas de qualquer maneira (a menos que você coloque a mesma configuração do outro lado).
Para que um roteamento real funcione, você ainda precisa definir uma rota explícita em ambos os lados, pois ainda existem rotas locais fazendo com que o sistema considere todo 127.0.0.0/8 como pertencente a ele mesmo:
No outro sistema 192.0.2.3 (digamos também Linux), a rota seria ignorada desde marciano, então solte isso também:
mas ainda:
por causa da rota local.
Além disso, nesse outro sistema (192.0.2.3), adicione:
que dá:
Agora ele poderá receber e enviar de volta pacotes com 127.0.0.44
Se você deseja que ambos os sistemas usem um endereço de 127.0.0.0/8, o mesmo tipo de configuração deve ser usado no sistema original. Claro que eles devem usar um endereço IP diferente.