openvpn non può importare configurazioni sulla nuova installazione 14.04


20

Modifica: risolto il problema al momento del lancio della patch con l'aggiunta della configurazione VPN. Non usare più Linux / Ubuntu ora.

Ho installato OpenVPN Network-Manager facendo sudo apt-get install network-manager-openvpn:, che installa anche il pacchetto gnome.

Ciò ha permesso di importare le configurazioni sotto 13.10, ma sulla mia nuova installazione, posso puntare ai .conffile, ma dopo aver fatto clic su Importa, il gestore scompare e non viene aggiunta alcuna connessione.

Ho provato a configurarlo manualmente, che tipo di funzionamento ha funzionato, ma la mia connessione continua a cadere dopo un po ', immagino perché non ho impostato manualmente tutti gli ultimi dettagli della configurazione molto dettagliata.

Connessione tramite il terminale facendo: sudo openvpn --config /path/to/openvpn.confmi ha chiesto un nome utente, quindi la password, ma poi non si connette.

Cosa posso fare per risolvere questo problema? Ho davvero bisogno della mia VPN, ogni aiuto è molto apprezzato.

Modifica: è un bug / 1294899

Per la coda di riapertura: qualcuno ha un ottimo rimedio per questo e ha usato una modifica per inserirlo, ma questo è degno della sua stessa risposta: votare per riaprire ...


avviarlo dalla riga di comando, vedere se viene visualizzato un errore e cercarlo (o aggiungerlo a questa domanda).
Rinzwind,

Risposte:


26

Hai ragione, è un bug del gestore di rete. Ma io (e anche tu) posso aggirarlo eseguendo openvpn dalla riga di comando. Probabilmente hai fatto almeno alcuni di questi passaggi, ma per ogni evenienza (e per il beneficio di altri) farò un passo per passo completo.

Innanzitutto installa i pacchetti richiesti

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

Crea file Questi file devono essere mantenuti sicuri e privati ​​in ogni momento

  1. Crea una directory chiamata openvpn nella tua home directory Copia il tuo file client VPN (rinominato client.ovpn) nella directory openvpn
  2. Opzionale: conservare una copia originale del file: chiamarlo client.ovpn.orig
  3. Successivamente creeremo 4 file nella directory openvpn.
  4. Vedere la parte inferiore di questo file per come automatizzare i seguenti passaggi
  5. Apri il file client.ovpn in un editor di testo.
  6. Crea un file chiamato ca.crt - copia il testo tra <ca>e </ca>da client.ovpn in questo file
  7. Crea un file chiamato client.crt - copia il testo tra <cert>e </cert>da client.ovpn in questo file
  8. Crea un file chiamato client.key: copia il testo tra <key>e </key>da client.ovpn in questo file
  9. Crea un file chiamato ta.key - copia il testo tra <tls-auth>e </tls-auth>da client.ovpn in questo file A questo punto ho un totale di 6 file nella mia directory openvpn (incluso il file di backup)

5-9 Ho appena scoperto come eseguire lo script bash. Whoop Copia quanto segue in un file di testo:

#!/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

Ho salvato il file come openvpnconvert nella cartella openvpn insieme al file client.ovpn. Reso eseguibile con il comando chmod a + x:

chmod a+x openvpnconvert

E poi lo ha eseguito:

./openvpnconvert

Modifica il file client.ovpn

Poco prima della riga ## —–BEGIN RSA SIGNATURE—– aggiungi le righe sottostanti e salva

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

Infine, devi eseguire openvpn dalla Command Line Interface (CLI)

cd nella cartella openvpn

cd openvpn

Esegui openvpn, se stai usando i nomi di file che ho specificato, vedi sotto, altrimenti usa i tuoi nomi di file.

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

Attualmente sto eseguendo OpenVPN, che ho impostato usando esattamente questi passaggi. Spero che funzioni ugualmente bene per gli altri.

fonti:

Creazione di file - http://naveensnayak.wordpress.com/2013/03/04/ubuntu-openvpn-with-ovpn-file/

In esecuzione dalla riga di comando - http://ubuntuforums.org/showthread.php?t=2206811


grazie, è davvero carino. in realtà ho una configurazione .ovpn per Android. purtroppo non funziona con il mio, poiché la combinazione nome utente / password non è accettata dal sistema openvpn, un bug confermato anche per la mia configurazione specifica. davvero davvero stupido e frustrante, mi lascia l'unica speranza, che questo verrà risolto presto, si spera.
vaioonbuntu

Ho appena esaminato il codice e sembra che anche il mio provider VPN utilizzi una configurazione del tipo di password nome utente. Se hanno un file .ovpn che puoi scaricare, dovresti comunque essere in grado di usare la tecnica sopra. Incrocio le dita comunque.
Tamsyn Michael,

1
Personalmente darò soldi in birra a chi scriverà mai una sceneggiatura per convertire questi file - che dolore nel *!
jowan sebastian,

@jowansebastian woop, ho appena scoperto come farlo. Lo aggiungerò alla fine della risposta precedente.
Tamsyn Michael,

Ho fatto esattamente questo e qualcosa non funziona. Ricevo l'adattatore tun0 ma non riesco ad accedere ad alcuna risorsa interna.
Christian Bongiorno,


2

Non ho mai provato a importare questi dati di connessione, ma ho usato quanto segue in diverse occasioni:

  • posizionare whatever.confinsieme al .crtfile e le credenziali /etc/openvpne avviare / interrompere la connessione VPN consudo service openvpn whatever start|stop

  • creare la connessione VPN tramite NetworkManager inserendo i dati di connessione manualmente. Il file di configurazione per la connessione verrà inserito /etc/NetworkManager/system-connectionse può essere modificato in un secondo momento.


2

Script di estrazione:

In risposta all'utile risposta di Tamsyn Michael, ho realizzato un piccolo programma per automatizzare l'attività di estrazione. Emette i file appropriati necessari per openvpn quindi aggiunge questi nomi di file al file di impostazioni originale.

//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;
}

Compilazione ed edificio:

Dovrai installare g ++ per compilare questo

sudo apt-get install g++

Quindi dal terminale

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

Ora avrai il programma 'certgrabber' nella cartella.

Utilizzo del programma:

Estrai nei nomi di file predefiniti (ca.crt, client.crt, client.key, tls-auth.key)

./certgrabber settings.ovpn

Estrai in nomi di file personalizzati

./certgrabber settings.ovpn ca-1.crt client-1.crt client-1.key tls-1.key

Grazie. Questo e spettacolare. @ user1081275 ora ti deve dei soldi per la birra. =)
Tamsyn Michael,

il tuo programma si arresta in modo anomalo quando lo avvio: errore di segmentazione (core scaricato)
Dieter Pisarewski

Sto usando g ++ (GCC) 5.1.1 per compilare. Ho appena testato e sembra che non ci siano problemi.
woahguy,

1

Il problema con l'aggiunta di una VPN da un file .ovpn salvato non riesce ancora.

È possibile aggiungerne uno manualmente.

  1. Seleziona Indicatore app NM, -> VPN -> Configura VPN -> Aggiungi -> OpenVPN
  2. Assegna manualmente un nome alla tua connessione e inserisci l'indirizzo IP per il tuo server
  3. Seleziona il tipo di autenticazione: per me è Password + Certificati
  4. Inserisci il tuo nome utente e password
  5. Seleziona i certificati e le chiavi per le tre caselle successive.
  6. Seleziona Avanzate dal basso
  7. Immettere il PORT (nel file .ovpn, in genere in fondo dopo l'indirizzo IP nella posizione "XX":

    remoto ###. ###. ##. ## XX

  8. Se la tua VPN è TCP, seleziona la casella "Usa una connessione TCP"

  9. Seleziona OK e poi Salva.

A questo punto, la connessione VPN dovrebbe essere elencata nell'indicatore App NM come opzione. Seleziona e testa la tua connessione. Sono stato in grado di aggiungere un tipo di connessione TCP e UDP, ma ci è voluto molto di più di quello che avrebbe se il file di importazione .ovpn salvato funzionasse.

Speriamo che lo risolvano presto in modo che io possa facilmente aggiungere altra connessione ... ma almeno questo è un lavoro che dovrebbe aiutare le persone frustrate come me.


0

Ho creato uno script qui per automatizzare la password recupero e comprimere i file da diversi siti VPN, ad esempio vpnbook.com , estrazione dei ca, certei keydati dai file ovpn, e l'aggiornamento dei file opvn così i CERT deve solo importare per te. Potrebbe essere facilmente modificato per l'uso con altri provider.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.