Plugin do OpenVPN para Python

2

Eu tenho uma tarefa sobre autenticação de usuários OpenVPN usando banco de dados que está localizado no servidor remoto (não um host com a instância do servidor OpenVPN). E usamos o Python como idioma principal para todas as nossas ferramentas.

A solução geral para esta tarefa pode ser a utilização da opção OpenVPN [b] auth-user-pass-verify [/ b] com o caminho para o meu script python que executa qualquer lógica de autenticação que eu queira. Mas a execução do meu script python pode levar algum tempo, por exemplo, o servidor remoto está longe ou pode fazer cálculos sérios para a autenticação do usuário. Eu acho que o script auth pode demorar alguns segundos para a execução. Como você sabe, o OpenVPN é um aplicativo de thread único e usa E / S sem bloqueio para lidar com vários clientes. É por isso que quando o OpenVPN executa algum script, ele interrompe todas as operações de E / S e aguarda a conclusão da execução do script. No caso de termos um script de autenticação de longa data e uma grande quantidade de usuários que desejam autenticação, podemos ter problemas de desempenho com a rede OpenVPN. Seria ótimo se o OpenVPN tivesse suporte a operações de autenticação diferidas. E ele tem esse suporte, mas apenas no sistema de plugins. Todos os plugins modernos usam, por exemplo openvpn-radius. Mas eu não quero escrever toda a lógica em c / c + + ou ter problemas em fazer o plugin OpenVPN em outra linguagem. Eu acho que boa solução seria escrever o plugin OpenVPN em cm este plugin vai usar o método deferred para auth e chamar thread separado ou processo de código python. Esse código python pode fazer coisas como - usar wrappers do banco de dados, usar biblioteca de solicitações, etc. E esse código em Python não impedirá o OpenVPN de manipular outros clientes.

Suponho que algo como isto podemos ver no OpenVPN Access Server, mas eu gostaria de usar um servidor OpenVPN pobre. E o Access Server não é de código aberto.

Eu posso tentar escrever este Plugin OpenVPN Python, mas antes de começar eu decidi fazer esta pesquisa e perguntar: O OpenVPN tem alguns métodos para chamar auth-script sem parar de manipular outras E / S de rede? Eu gostaria de saber que temos essa opção e não precisamos escrever esse plugin, mas eu realmente não consegui encontrar algo assim.

    
por John Green 27.12.2014 / 12:24

1 resposta

2

Eu criei o plugin. Se você estiver interessado, você pode verificar link

P.S. Este plugin é um pouco inútil, porque você pode usar a interface de gerenciamento do OpenVPN para obter notificações sobre conexões e processá-las sem bloquear o thread principal do OpenVPN. Talvez alguém pense que o plugin é mais fácil do que ouvir a interface de gerenciamento.

    
por 15.06.2015 / 01:36