openvpn não pode importar configurações na nova instalação 14.04

20

Editar: Corrigido de volta quando o patch foi lançado com a configuração add VPN. Não use mais o Linux / Ubuntu agora.

Eu instalei o Network Manager do OpenVPN fazendo: sudo apt-get install network-manager-openvpn , que também instala o pacote gnome.

Isso tornou possível importar configurações em 13.10, mas na minha nova instalação, posso apontar para os arquivos .conf , mas depois de clicar em importar, o gerenciador simplesmente desaparece e nenhuma conexão é adicionada.

Eu tentei configurá-lo manualmente, o que funcionou, mas minha conexão continua caindo depois de um tempo, eu acho, porque não defini manualmente todos os detalhes da configuração detalhada.

Conectando-se através do terminal fazendo: sudo openvpn --config /path/to/openvpn.conf me pediu um nome de usuário, depois uma senha, mas não conecta.

O que posso fazer para corrigir isso? Eu realmente preciso da minha VPN, qualquer ajuda é muito apreciada.

Edit: É um bug / 1294899

Para a fila de re-open: Alguém tem uma ótima alternativa para isso e ele usou uma edição para colocar isso, mas isso é digno de sua própria resposta: votar em re aberto ...

    
por vaioonbuntu 19.04.2014 / 12:11

6 respostas

26

Você está certo, é um bug do gerenciador de rede. Mas eu (e você também) pode contornar isso executando o openvpn a partir da linha de comando. Você provavelmente já fez pelo menos algumas dessas etapas, mas apenas no caso (e para o benefício de outros) eu vou fazer um passo-a-passo completo.

Primeiro, instale os pacotes necessários

sudo apt-get install network-manager network-manager-openvpn network-manager-openvpn-gnome

Criar arquivos Estes arquivos devem ser mantidos em segurança e privados em todos os momentos

  1. Crie um diretório chamado openvpn em seu diretório pessoal Copie sua VPN arquivo do cliente (renomeado client.ovpn) no diretório openvpn
  2. Opcional: mantenha uma cópia original do arquivo - chame-a de client.ovpn.orig
  3. Em seguida, criaremos 4 arquivos no diretório openvpn.
  4. Veja a parte inferior deste arquivo para saber como automatizar as etapas a seguir
  5. Abra o arquivo client.ovpn em um editor de texto.
  6. Crie um arquivo chamado ca.crt - copie o texto entre <ca> e </ca> de client.ovpn para este arquivo
  7. Crie um arquivo chamado client.crt - copie o texto entre <cert> e </cert> de client.ovpn para este arquivo
  8. Crie um arquivo chamado client.key - copie o texto entre <key> e </key> de client.ovpn para este arquivo
  9. Crie um arquivo chamado ta.key - copie o texto entre <tls-auth> e </tls-auth> de client.ovpn para este arquivo Neste ponto, eu tenho um total de 6 arquivos no meu diretório openvpn (incluindo o arquivo de backup)

5-9 Acabei de descobrir como fazer o script bash. Whoop Copie o seguinte em um arquivo de texto:

#!/bin/bash
sed '1,/<ca>/d;/<\/ca>/,$d' client.ovpn > ca.crt
sed '1,/<cert>/d;/<\/cert>/,$d' client.ovpn > client.crt
sed '1,/<key>/d;/<\/key>/,$d' client.ovpn > client.key
sed '1,/<tls-auth>/d;/<\/tls-auth>/,$d' client.ovpn > ta.key

Salvei o arquivo como openvpnconvert na pasta openvpn junto com o arquivo client.ovpn. Tornou executável com o comando chmod a + x:

chmod a+x openvpnconvert

E então correu:

./openvpnconvert

Modifique o arquivo client.ovpn

Pouco antes da linha ## —–BEGIN RSA SIGNATURE—– adicione as linhas abaixo e salve

ca ca.crt
cert client.crt
key client.key
tls-auth ta.key

Finalmente, você precisa executar o openvpn a partir da Command Line Interface (CLI)

cd na pasta openvpn

cd openvpn

Execute o openvpn, se você estiver usando os nomes de arquivos que eu especifiquei, veja abaixo, caso contrário, use seus nomes de arquivos.

sudo openvpn --client --config ~/openvpn/client.ovpn --ca ~/openvpn/ca.crt

Atualmente estou executando o OpenVPN, que configurei usando exatamente essas etapas. Espero que funcione igualmente bem para os outros.

Fontes:

Criando arquivos - link

Execução a partir da linha de comando - link

    
por Tamsyn Michael 21.04.2014 / 11:36
5

Eu achei que a opção estava faltando, mas acabou de mudar. Escolha adicionar conexão primeiro e, em seguida, em vez de escolher OpenVPN (como eu estava fazendo), role para baixo e escolha a última opção "importar uma VPN salva ..."

encontrouarespostaaqui- link

    
por rogerdodger00 10.10.2015 / 22:55
2

Eu nunca tentei importar esses dados de conexão, mas usei o seguinte em diferentes ocasiões:

  • coloque o whatever.conf junto com o arquivo .crt e as credenciais em /etc/openvpn e inicie / interrompa a conexão VPN com sudo service openvpn whatever start|stop

  • crie a conexão VPN através do NetworkManager inserindo os dados de conexão manualmente. O arquivo de configuração para a conexão será colocado em /etc/NetworkManager/system-connections e poderá ser editado posteriormente.

por Klaus-Dieter Warzecha 19.04.2014 / 14:58
2

Script de extração:

Em resposta à resposta útil de Tamsyn Michael, criei um pequeno programa para automatizar a tarefa de extração. Ele gera os arquivos apropriados necessários para o openvpn e, em seguida, anexa esses nomes de arquivo ao arquivo de configurações original.

//woahguy@askubuntu

#include <iostream>
#include <string.h>
#include <stdio.h>

using namespace std;

int i = 0;

string buffer, filename, ca, cert, key, auth;

struct _tags { const char* first; const char* last; };

const char* files[] = { "ca.crt", "client.crt", "client.key", "ta.key" };

_tags tags[] = {
    { "<ca>", "</ca>" },
    { "<cert>", "</cert>" },
    { "<key>", "</key>" },
    { "<tls-auth>", "</tls-auth>" }
};

string string_between( string str, const string& from, const string& to ) {
    size_t first = str.find(from);
    size_t last = str.find(to);
    return( str.substr ( first+from.size(),last-first-to.size()));
}

int read_file_to_buffer( string filename )
{
    char line[12];
    FILE* pFile = fopen( filename.c_str(), "r" );
    if( pFile != NULL ) {
        while( fgets( line, sizeof( line ), pFile ) ) {
            buffer.append( line );
        }
    } else {
        return 1;
    }
    return 0;
}

int write_buffer_to_file( string buffer, string filename )
{
    FILE* pFile = fopen( filename.c_str(), "w" );
    if( pFile != NULL ) {
        fwrite (buffer.c_str(), sizeof(char), buffer.size(), pFile);
        fclose(pFile);
    } else {
        return 1;
    }
    return 0;
}

int append_found_tags_to_main( int type )
{
    FILE* pFile = fopen( filename.c_str(), "a+" );
    if( pFile != NULL ) {
        if( type == 1 ) {
            fprintf( pFile, "\nca %s\r\ncert %s\r\nkey %s\r\n",
                files[0], files[1], files[2] );
        } else {
            fprintf( pFile, "\nca %s\r\ncert %s\r\nkey %s\r\ntls-auth %s\r\n",
                files[0], files[1], files[2], files[3] );
        }
        fclose(pFile);
    }
    return 0;
}

int extract_tags( )
{
    while (buffer.find(tags[i].first) != std::string::npos ) {
        if( i == 0 ) {
            ca = string_between( buffer, tags[i].first, tags[i].last);
        } else if( i == 1 ) {
            cert = string_between( buffer, tags[i].first, tags[i].last);
        } else if( i == 2 ) {
            key = string_between( buffer, tags[i].first, tags[i].last);
        } else if( i == 3 ) {
            auth = string_between( buffer, tags[i].first, tags[i].last);
        } else {
            return 1;
        }
        i++;
    }
    return 0;
}

int write_tags( )
{
    if( !ca.empty() && !cert.empty() && !key.empty() ) {
        write_buffer_to_file( ca, files[0] );
        write_buffer_to_file( cert, files[1] );
        write_buffer_to_file( key, files[2] );
        if( !auth.empty() ) {
            write_buffer_to_file( auth, files[3] );
            append_found_tags_to_main( 0 );
        } else {
            append_found_tags_to_main( 1 );
            return 1;
        }
    } else {
        return 2;
    }
}

int main(int argc, char* argv[])
{
    if( argv[1] == NULL ) {
        printf("certgrabber<: You need to specify a valid filename to extract from.\r\n");
        return 1;
    } else {
        if( argv[2] != NULL && argv[3] != NULL && argv[4] != NULL && argv[5] != NULL) {
            files[0] = argv[2];
            files[1] = argv[3];
            files[2] = argv[4];
            files[2] = argv[5];
        }
        filename = argv[1];
    }
    read_file_to_buffer( argv[1] );
    if( buffer.empty()){
        printf("certgrabber<: You need to specify a valid filename to extract from.\r\n");
        return 2;
    }
    if( extract_tags() == 0 ) {
        int result = write_tags();
        if( result == 0 ) {
            printf("certgrabber<: All certificates and keys successfully extracted.\r\n");
        } else if( result == 1 ) {
            printf("certgrabber<: Unable to find a TLS auth key, but this isn't exactly an error.\r\n");
        } else if( result == 2 ) {
            printf("certgrabber<: Something went totally wrong with the certificate files.\r\n");
        }
    } else {
        printf("certgrabber<: Something went wrong while extracting the tags.\r\n");
        return 3;
    }
    return 0;
}

Compilação & amp; Edifício:

Você precisará instalar o g ++ para construir isto

sudo apt-get install g++

Então, a partir do terminal

g++ -c main.cpp -o main.o \ g++ -o certgrabber main.o 

Você agora terá o programa 'certgrabber' na pasta.

Uso do programa:

Extraia para nomes de arquivo padrão (ca.crt, client.crt, client.key, tls-auth.key)

./certgrabber settings.ovpn

Extraia para nomes de arquivos personalizados

./certgrabber settings.ovpn ca-1.crt client-1.crt client-1.key tls-1.key
    
por woahguy 23.06.2015 / 09:12
1

O problema com a adição de uma VPN de um arquivo .ovpn salvo ainda falha.

É possível adicionar um manualmente.

  1. Selecione o indicador do aplicativo NM, - > VPN - > Configurar VPN - > Adicionar - > OpenVPN
  2. Nomeie sua conexão manualmente e digite o endereço IP do seu servidor
  3. Selecione o tipo de autocrítica: Para mim, é Senha + Certificados
  4. Insira seu nome de usuário e senha
  5. Selecione seus certificados e chaves para as próximas três caixas.
  6. Selecione Avançado na parte inferior
  7. Insira o PORT (no arquivo .ovpn, geralmente na parte inferior após o endereço IP na posição "XX":

    remote ###. ###. ##. ## XX

  8. Se sua VPN for TCP, marque a caixa de seleção "Usar uma conexão TCP"

  9. Selecione OK e, em seguida, Salvar.

Neste ponto, a conexão VPN deve ser listada no NM AppIndicator como uma opção. Selecione e teste sua conexão. Consegui adicionar um tipo de conexão TCP e UDP, mas foi preciso muito mais para fazer do que se o arquivo importado .ovpn tivesse sido salvo.

Vamos esperar que eles consertem isso em breve, para que eu possa facilmente adicionar outra conexão ... mas pelo menos esse é um trabalho que deve ajudar as pessoas frustradas como eu.

    
por armc 24.04.2014 / 14:54
0

Eu criei um script aqui para automatizar a busca de senha & amp; arquivos zip de vários sites vpn, como vpnbook.com , extraindo os dados ca , cert e key dos arquivos ovpn, e atualizando os arquivos opvn para que os certificados sejam importados apenas para você. Ele poderia ser facilmente modificado para uso com outros provedores.

    
por ryry1985 10.12.2015 / 06:04