Solução simples cria um túnel entre os dois servidores, por exemplo:
No servidor A:
ip tunnel add tunnel mode ipip remote 10.10.60.10
ip addr add 10.1.1.1/24 dev tunnel
sysctl -w net.ipv4.ip_forward=1
O último comando é encaminhar pacotes do seu dispositivo de túnel recém-criado para os seus dispositivos de rede virtual.
No servidor C
ip tunnel add tunnel mode ipip remote 10.10.51.182
ip addr add 10.1.1.2/24 dev tunnel
ip route add 192.168.0.0/16 via 10.1.1.1
Dependendo dos seus firewalls entre os servidores, talvez seja necessário ajustar algumas regras.
Explicação:
Server A
e Server B
estão em um segmento de rede compartilhado, por exemplo eles podem enviar pacotes entre si sem a necessidade de enviar os pacotes ao seu gateway. Isso significa que Server B
apenas tenta diretamente resolver o endereço 192.168.1.1
via ARP e Server A
responde a eles.
Server A
e Server C
estão em segmentos de rede diferentes, por exemplo se Server C
apenas pedir 192.168.1.1
(este seria seu comando de rota para Server C
), ele não receberá resposta. Para resolver esse problema, você geralmente pode especificar como alcançar um sistema específico por meio de tabelas de roteamento, mas só pode especificar o próximo salto. Como router Z
parece não saber sobre 192.168.0.0/24
, você precisa criar um túnel entre os dois sistemas.
Uma pequena dica adicional, você não precisa criar dispositivos ethernet virtuais, você pode adicionar um número arbitrário de endereços IP a um dispositivo de rede, por exemplo:
for first in {1..4} ; do
for second in {1..255} ; do
ip addr add 192.168.$first.$second/16 dev eth0
done
done