Duas máquinas em redes diferentes (privadas) não podem ver uma à outra, a menos que ambas tenham rotas declaradas uma para a outra. Por exemplo, se você tiver uma máquina com um endereço 10.0.3.1 e uma máscara de rede de 255.255.255.0, e outra máquina com um endereço 10.0.4.1 e a mesma máscara (classe C), eles não poderão ver um ao outro.
Eles precisam de um roteador compartilhado que ambos possam ver; tipicamente uma terceira máquina com 2 IPs, digamos 10.0.3.254 e 10.0.4.254, que tem algumas capacidades de roteamento - no Linux, fazer echo 1 > /proc/sys/net/ipv4/ip_forward
será suficiente para coisas básicas.
Então você terá que declarar seu roteador como tal em cada máquina com route
ou ip route
, na máquina 10.0.3.1:
route add -net 10.0.4.0 netmask 255.255.255.0 gw 10.0.3.254
E o contrário na máquina 10.0.4.1:
route add -net 10.0.3.0 netmask 255.255.255.0 gw 10.0.4.254
Como você está usando contêineres, o host do contêiner deve agir como o roteador entre os contêineres e o mundo externo. Portanto, ative o encaminhamento de ip nele e adicione rotas adequadas nos contêineres e nas máquinas das quais deseja acessar o contêiner.