Sim, usar um namespace de rede para isolar as duas redes "iguais" funcionaria.
Por exemplo, você tem um namespace de rede para o lado direito, com todas as três interfaces nesse namespace e, além disso, você tem uma ponte no namespace e um toque para a interceptação e o encaminhamento de tráfego. Adicione o toque e as três NICs à ponte e atribua 192.168.0.10 apenas ao toque. Assim, nenhuma atribuição de IP às NICs; apenas para a torneira. A ponte cuidará de canalizar todo o tráfego para 192.168.0.10 no lado direito até a torneira e todo o tráfego para 192.168.0. {20,21,22} por meio das NICs apropriadas.
Escreva seu programa de interceptação para ler / escrever a torneira (Nível 2) e encaminhe os pacotes através de stdin / stdout (sem buffer). Escreva também um programa de transferência simples semelhante para canalizar pacotes stdin / stdout para / de um toque (outro toque), que você coloca no namespace global do lado esquerdo. Os programas devem encaminhar todos os pacotes, com sua interceptação aplicada a alguns deles.
O namespace do lado esquerdo (o namespace global) é organizado de maneira correspondente, com uma ponte para as NICs e um toque, e depois adiciona todos os endereços IP 192.168.0. {20,21,22} a a torneira.
Em seguida, use o programa dpipe
do pacote vde2
(ou escreva seu próprio) para iniciar os dois conectores de toque de forma que seus stdin / stdout sejam mutuamente conectados. Com dpipe
, o comando para isso seria algo como o seguinte:
# dpipe program1 tap1 = ip netns exec RHS program2 tap2
para o efeito que stdout de program1 vai para stdin de program2, e stdout de program2 vai para stdin de program1. (Incluí, na verdade, toquei em argumentos de nomes para os programas apenas para fins de ilustração)
Em suma, seria uma maneira de interceptar e transferir pacotes entre os dois namespaces sem precisar mexer nas traduções IP.
Observe que a configuração funcionaria igualmente bem com uma única NIC em cada lado, além de um interruptor à direita. Assim, não há necessidade de dois triplets de NICs, mas você pode sair com apenas dois: um para a esquerda e outro para a direita, além de um switch para a rede do lado direito, que possui 4 hosts físicos.