OpenVPN não cria rotas dentro da janela de encaixe

1

Estou tentando executar o cliente OpenVPN em um contêiner Docker com parâmetros --up/--down para executar um aplicativo. A conexão está sendo estabelecida, mas todo o tráfego do aplicativo ainda está passando pelo gateway padrão.

O servidor OpenVPN está empurrando "redirecionamento-gateway def1" quando a conexão é estabelecida, mas o cliente OpenVPN não está criando rotas adicionais para sobrescrever o gateway padrão.

Eu tentei fazer com que meu aplicativo discasse pelo dispositivo de encapsulamento, e isso está expirando. Isso estava funcionando quando tentei na máquina host.

Então, em vez disso, tentei estabelecer as rotas manualmente (1 rota estática para o servidor openvpn e duas rotas 0.0.0.0/1, 128.0.0.0/1 para todos os outros tráfegos, assim como estava criando quando tentei na máquina host ), e reverteu a aplicação para seguir as rotas padrão, e foi o tempo limite ainda.

Quando eu uso o mesmo arquivo de configuração ovpn para conectar a partir da máquina host, as rotas adicionais são estabelecidas. Todo o tráfego está passando pelo túnel vpn sem nenhum tempo limite.

Eu tentei as mesmas configurações do docker no fedora: latest, ubuntu: latest, alpine: latest.

Como posso fazer o túnel funcionar dentro do Docker?

Atualização: Eu percebi que as rotas ausentes são porque eu estava executando o openvpn com --up/--down parameters. Depois de removê-los e executar o openvpn como um daemon e meu programa como o processo de bloqueio, as rotas estão sendo criadas, mas as solicitações ainda atingem o tempo limite. Eu testei a mesma coisa em uma VM e ela funciona lá.

    
por dough 31.10.2017 / 08:25

1 resposta

0

Os contêineres, ao contrário de uma VM, compartilham o mesmo kernel. Por causa disso, a raiz dentro de um contêiner não tem o mesmo acesso que a raiz fora de um contêiner. Caso contrário, o usuário root poderá escapar do contêiner, montar dispositivos, alterá-lo, etc. O contêiner de rede é um desses recursos que é removido do usuário raiz. Para remover todas essas restrições, você pode testar seu código com a opção docker run --privileged ... . Se isso funcionar, você pode ajustar várias opções para --cap-add . Independentemente de você obter ou não as permissões mínimas, seu host não estará a salvo de um aplicativo nocivo em execução em um contêiner com essas configurações.

    
por 31.10.2017 / 21:01