Eu tenho um servidor OpenVPN em execução, expondo alguns endereços IP privados. Gostaria que meus serviços de enxame de docker acessassem esses endereços.
Idealmente, não haveria um cliente OpenVPN "dentro" dos contêineres, pois as imagens devem ser implantadas em um ambiente em que uma VPN não seja necessária.
O que eu tentei até agora
Conectei com êxito um contêiner à minha VPN com a imagem dperson / openvpn-client .
Lancei com sucesso outro contêiner usando esse contêiner como sua rede usando o --net=container:my-vpn-client
sinalizador.
Agora estou tentando configurar um serviço docker que acessará meus endereços IP privados e o que encontrei é:
- Não consigo executar o cliente openVPN em um serviço, pois ele não pode ser fornecido
cap-add: NET_ADMIN
. Existem questões em aberto com o Docker discutindo esse assunto, mas elas ainda estão em aberto. - Imaginei que poderia executar o contêiner do cliente openVPN "ao lado" do cluster de enxame, mas não posso usá-
network_mode: "container:my-vpn-client"
lo, pois ele não é suportado e faz sentido, pois não era possível forçar a presença de um contêiner arbitrário em todos os nós do enxame sem que seja um serviço em si. - Eu tentei criar uma rede acoplável (bridge / overlay) e apenas coloquei meu contêiner de cliente OpenVPN nele e esperei magicamente que outros membros dessa rede passassem por esse canal ... e fiquei desapontado.
Então aqui estou, alguma ideia?
PS Se puder ajudar, isso é principalmente para configurar alguns testes automatizados que executarão os serviços na máquina docker única no modo enxame, como em swarm init> empilhamento de implantação> execução de testes> execução de enxame. Então, se houver um "hack" para isso ... eu posso estar interessado;)
ccr
arquivo como se estivesse lidando com uma rede local. Como em todo roteamento TCP / IP, "traceroute
é seu melhor amigo, como étcpdump
ou o WireShark".