Aqui eu tenho algumas perguntas (um pouco talvez diferentes), mas relacionadas entre si, por isso preferi fazê-las em uma pergunta.
Eu tenho tentado permitir que meus clientes OpenVPN (o OpenVPN está configurado no modo bridge) se conectem aos contêineres do Docker.
Como se sabe, os contêineres do Docker estão todos conectados uns aos outros por meio de uma ponte ( docker0
ponte ou o que for).
Eu sempre costumava usar minha própria ponte ( br0
) no meu servidor doméstico, onde configuro o Docker para usar essa ponte ( br0
), e faço a ponte da interface OpenVPN ( tap0
) nessa ponte e minha interface física ( eth0
), que é conectada via LAN a meu roteador doméstico. E isso sempre funcionou para mim e todos os clientes OpenVPN sempre foram capazes de acessar cada contêiner Docker em ponte br0
(tanto os clientes OpenVPN quanto os contêineres Docker têm IPs no meu intervalo de LAN).
Há alguns dias aluguei um VPS, onde minha interface física é conectada diretamente à internet (tem IP público exclusivo).
Eu fiz o mesmo de antes (configurando o Docker para usar o meu br0
para todos os contêineres) e fiz a ponte do OpenVPN tap0
no br0
.
O problema que enfrentei é que meu cliente OpenVPN NÃO conseguiu pingar ou acessar nenhum dos contêineres do Docker (os contêineres conseguiram pingar e acessar outros contêineres do Docker, mas NÃO o cliente OpenVPN), e os clientes NÃO conseguiram pingar cada outro também.
Isso tem alguma coisa para que eu não tenha interface física em ponte? Se sim, eu estava me perguntando por que eu deveria conectar a interface do meu servidor (conectado a qualquer roteador via LAN talvez) além da interface TAP do OpenVPN para obter um OpenVPN funcional no modo de ponte?
E esse problema levantou outra questão relacionada em minha mente: desde que os clientes sejam parte da tap0
interface, por que eles não podem simplesmente acessar uns aos outros sem sair por algum motivo da interface TAP. Qual é o papel desempenhado pela minha interface física?
Se o meu problema foi realmente porque não há interface física em ponte, como posso fazer com que o OpenVPN seja totalmente funcional no modo de ponte sem essa interface física (ou pelo menos talvez qualquer solução para isso, desde que minha interface física esteja conectada diretamente a internet sem qualquer LAN)?
Espero que alguém possa me ajudar a fazer o OpenVPN funcionar
ADICIONADO:
Depois de assistir alguns vídeos ainda tenho essa dúvida, se eu tivesse duas TAP
interfaces, cada uma delas é mapeada para um virtualbox
sistema. tap0 -> vb0
, tap1 -> vb1
, e ambos tap0 and tap1
estão conectados a uma bridge br0
(que não está conectada a nenhuma interface física), somente tap0
e tap1
estão interligados, será vb0 and vb1
que conseguirão pingar um ao outro? (Não estou interessado em nenhum tipo de conexão externa agora). De acordo com a resposta do @shodanshok , NÃO, eles não vão, certo? até agora eu não sou capaz de entender exatamente por que eles não podem, você poderia explicar esse ponto com mais detalhes?
A interface OpenVPN
tap
opera na camada 2 do modelo ISO/OSI e, portanto, precisa de uma conexão de camada 2 (leia-se: bridge/switch) para a interface real principal.Eu sugiro fortemente que você reconfigure sua conexão OpenVPN para usar
tun
interfaces que, operando em um nível mais alto (nível 3) da pilha, não precisam de uma conexão em ponte com a interface principal (em vez disso, elas roteiam pacotes conforme especificado na tabela de roteamento ).Dê uma olhada na seção "server-bridge" na página de manual do openvpn para mais informações.
OK, depois de muitos experimentos, agora posso responder minha pergunta e compartilhar minha experiência:
Preciso de uma ponte (por exemplo
br0
, no linux) para poder executarOpenVPN
no modo ponte?Não! Sempre pensei o contrário, mas agora posso confirmar que, assim que você configurar o seu
OpenVPN
corretamente, poderá conectar todos os seusOpenVPN
clientes diretamente, e eles estarão em sua própria rede isolada. Ou sejatap0
, a interface não faz parte de nenhuma ponte. Assim, não há necessidade também de qualquer interface física em ponte comtap0
, somentetap0
com configurado corretamenteOpenVPN
fará o trabalho!Por que não funcionou para mim inicialmente? (Agora funciona!)
O problema estava realmente no lado do cliente! Eu sempre usei, que
OpenVPN
os clientes estão todos no meu intervalo de IP da LAN , portanto, nenhuma configuração adicional de firewall foi necessária, mas agora, o intervalo de IP é diferente (a rede é uma nova rede isolada), portanto, o firewall do Windows de todos os clientes estava simplesmente descartando todos ping de outros clientes, quando eu desabilitei (ou permiti que meuOpenVPN
intervalo de pool de IPs) se conectasse, tudo funcionou perfeitamente!E o Docker? Você conseguiu conectar os contêineres
tap0
e conectar-se aos contêineres de seusOpenVPN
clientes?Sim! Usei apenas uma configuração bem simples (netmask e intervalo de IP eram os mesmos), netmask
/24
, e tudo era bem básico, só para ter certeza de que tudo funcionava, e tudo funcionava mesmo!