openvpn tidak dapat mengimpor konfigurasi pada instalasi baru 14,04


20

Sunting: Memperbaikinya kembali saat tambalan diluncurkan dengan menambahkan konfigurasi VPN. Tidak lagi menggunakan Linux / Ubuntu sekarang.

Saya menginstal OpenVPN Network-Manager dengan melakukan sudo apt-get install network-manager-openvpn:, yang juga menginstal paket gnome.

Ini memungkinkan untuk mengimpor konfigurasi di bawah 13.10, tetapi pada instalasi baru saya, saya dapat menunjuk ke .conffile, tetapi setelah mengklik impor, manajer hanya menghilang dan tidak ada koneksi yang ditambahkan.

Saya mencoba mengaturnya secara manual, jenis yang berfungsi, tetapi koneksi saya terus menurun setelah beberapa saat, saya kira karena saya tidak secara manual mengatur setiap detail terakhir dari konfigurasi yang sangat terperinci.

Menghubungkan melalui terminal dengan melakukan: sudo openvpn --config /path/to/openvpn.confmenanyakan nama pengguna, lalu kata sandi, tetapi kemudian tidak terhubung.

Apa yang bisa saya lakukan untuk memperbaikinya? Saya sangat membutuhkan VPN saya, bantuan apa pun sangat kami hargai.

Sunting: Ini bug / 1294899

Untuk membuka kembali antrean: Seseorang memiliki penyelesaian yang sangat baik untuk ini dan ia menggunakan suntingan untuk memasukkan ini, tetapi ini layak untuk jawabannya sendiri: memilih untuk membuka kembali ...


mulai dari baris perintah, lihat apakah ada kesalahan dan cari (atau tambahkan ke pertanyaan ini).
Rinzwind

Jawaban:


26

Anda benar, ini adalah bug manajer jaringan. Tapi saya (dan Anda juga) dapat mengatasinya dengan menjalankan openvpn dari baris perintah. Anda mungkin telah melakukan setidaknya beberapa langkah ini, tetapi untuk berjaga-jaga (dan untuk kepentingan orang lain) saya akan melakukan langkah demi langkah penuh.

Pertama instal paket yang diperlukan

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

Buat File File-file ini harus disimpan aman dan pribadi setiap saat

  1. Buat direktori bernama openvpn di direktori home Anda. Salin file klien VPN Anda (beri nama client.ovpn) ke dalam direktori openvpn
  2. Opsional: Simpan salinan asli file tersebut - sebut saja client.ovpn.orig
  3. Selanjutnya kita akan membuat 4 file di bawah direktori openvpn.
  4. Lihat bagian bawah file ini untuk cara mengotomatiskan langkah-langkah berikut
  5. Buka file client.ovpn dalam editor teks.
  6. Buat file bernama ca.crt - salin teks antara <ca>dan </ca>dari client.ovpn ke file ini
  7. Buat file bernama client.crt - salin teks antara <cert>dan </cert>dari client.ovpn ke file ini
  8. Buat file bernama client.key - salin teks antara <key>dan </key>dari client.ovpn ke file ini
  9. Buat file bernama ta.key - salin teks antara <tls-auth>dan </tls-auth>dari client.ovpn ke file ini. Pada titik ini saya memiliki total 6 file di bawah direktori openvpn saya (termasuk file cadangan)

5-9 Saya baru saja mengetahui cara melakukan bash script. Whoop Salin yang berikut ke dalam file teks:

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

Saya menyimpan file sebagai openvpnconvert di folder openvpn bersama dengan file client.ovpn. Membuatnya dapat dieksekusi dengan perintah chmod a + x:

chmod a+x openvpnconvert

Dan kemudian menjalankannya:

./openvpnconvert

Ubah file client.ovpn

Tepat sebelum garis ## —–MULAI TANDA RSA —– tambahkan baris di bawah ini dan simpan

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

Terakhir, Anda perlu menjalankan openvpn dari Command Line Interface (CLI)

cd ke folder openvpn

cd openvpn

Jalankan openvpn, jika Anda menggunakan nama file yang saya tentukan, lihat di bawah, jika tidak gunakan nama file Anda.

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

Saat ini saya sedang menjalankan OpenVPN, yang saya setel menggunakan persis langkah-langkah ini. Semoga ini bekerja dengan baik untuk orang lain.

Sumber:

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

Lari dari Baris Perintah - http://ubuntuforums.org/showthread.php?t=2206811


terima kasih, ini sangat bagus. Saya sebenarnya memiliki konfigurasi .ovpn untuk android. sayangnya itu tidak berfungsi dengan saya, karena nama pengguna / kata sandi kombo tidak diterima oleh sistem openvpn, bug yang dikonfirmasi juga, untuk konfigurasi spesifik saya. benar-benar sangat bodoh dan frustasi, membuatku satu-satunya harapan, bahwa ini akan segera diperbaiki, semoga.
vaioonbuntu

Saya baru saja melihat kode, dan tampaknya penyedia VPN saya menggunakan konfigurasi jenis kata sandi pengguna juga. Jika mereka memiliki file .ovpn yang dapat Anda unduh, Anda tetap dapat menggunakan teknik di atas. Jari-jari tetap bersilang.
Tamsyn Michael

1
Saya pribadi akan memberikan uang bir kepada siapa pun yang pernah menulis skrip untuk mengonversi file-file ini - sungguh menyebalkan *!
jowan sebastian

@jowansebastian woop, baru mengetahui bagaimana cara melakukannya. Saya akan menambahkannya ke akhir jawaban sebelumnya.
Tamsyn Michael

Saya melakukan ini dan sesuatu tidak bekerja. Saya mendapatkan adaptor tun0 tetapi saya tidak dapat mengakses sumber daya internal apa pun.
Christian Bongiorno


2

Saya tidak pernah mencoba mengimpor data koneksi ini, tetapi saya telah menggunakan yang berikut ini pada kesempatan yang berbeda:

  • tempatkan whatever.confbersama dengan .crtfile dan kredensial di /etc/openvpndan mulai / hentikan koneksi VPN dengansudo service openvpn whatever start|stop

  • buat koneksi VPN melalui NetworkManager dengan memasukkan data koneksi secara manual. File konfigurasi untuk koneksi akan ditempatkan di /etc/NetworkManager/system-connectionsdan dapat diedit nanti.


2

Script Ekstraksi:

Menanggapi jawaban Tamsyn Michael yang membantu saya membuat program kecil untuk mengotomatiskan tugas ekstraksi. Ini menampilkan file yang sesuai yang diperlukan untuk openvpn kemudian menambahkan nama file ini ke file pengaturan asli.

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

Kompilasi & Bangunan:

Anda harus menginstal g ++ untuk membangun ini

sudo apt-get install g++

Kemudian dari terminal

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

Anda sekarang akan memiliki program 'certgrabber' di folder.

Penggunaan Program:

Ekstrak ke nama file default (ca.crt, client.crt, client.key, tls-auth.key)

./certgrabber settings.ovpn

Ekstrak ke nama file khusus

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

Terima kasih. Ini luar biasa. @ user1081275 berhutang uang bir kepada Anda sekarang. =)
Tamsyn Michael

program Anda macet ketika saya memulainya: Segmentasi fault (core
dumped

Saya menggunakan g ++ (GCC) 5.1.1 untuk mengkompilasi. Saya baru saja menguji dan tampaknya tidak ada masalah.
woahguy

1

Masalah dengan MENAMBAH VPN dari file .ovpn yang disimpan masih gagal.

Dimungkinkan untuk menambahkan satu secara manual.

  1. Pilih Indikator Aplikasi NM, -> VPN -> Konfigurasi VPN -> Tambah -> OpenVPN
  2. Beri Nama Koneksi Anda secara manual dan masukkan Alamat IP untuk server Anda
  3. Pilih jenis authntikasi: Bagi saya itu adalah Kata Sandi + Sertifikat
  4. Masukkan nama pengguna dan kata sandi Anda
  5. Pilih sertifikat dan kunci Anda untuk tiga kotak berikutnya.
  6. Pilih Advanced dari bawah
  7. Masukkan PORT (dalam file .ovpn, biasanya di bagian bawah setelah alamat IP di posisi "XX":

    jarak jauh ###. ###. ##. ## XX

  8. Jika VPN Anda adalah TCP, maka centang kotak untuk "Gunakan Koneksi TCP"

  9. Pilih OK dan kemudian Simpan.

Pada titik ini, koneksi VPN harus terdaftar di NM AppIndicator sebagai opsi. Pilih dan uji koneksi Anda. Saya dapat menambahkan jenis koneksi TCP dan UDP, tetapi butuh lebih banyak untuk dilakukan daripada jika file impor .ovpn yang disimpan berfungsi.

Mari kita berharap mereka segera memperbaikinya sehingga saya dapat dengan mudah menambahkan koneksi lain ... tapi setidaknya ini adalah pekerjaan yang seharusnya membantu orang-orang frustrasi seperti saya.


0

Saya membuat script di sini untuk mengotomatisasi kata sandi pengambilan & zip file dari beberapa situs vpn seperti vpnbook.com , penggalian ca, certdan keydata dari file ovpn, dan memperbarui file opvn sehingga sertifikat hanya harus mengimpor untuk Anda. Itu dapat dengan mudah dimodifikasi untuk digunakan dengan penyedia lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.