openvpn не може імпортувати конфігурації на новій установці 14.04


20

Редагувати: виправлено його тоді, коли патч розгорнуто з додаванням конфігурації VPN. Більше не використовуйте Linux / Ubuntu.

Я встановив OpenVPN Network-Manager, виконавши:, sudo apt-get install network-manager-openvpnякий також встановлює пакет gnome.

Це дало можливість імпортувати конфігурації під 13.10, але при моїй новій установці я можу вказати на .confфайли, але після натискання на імпорт менеджер просто відключається, і з'єднання не додається.

Я намагався налаштувати його вручну, який тип роботи працював, але моє з'єднання через деякий час припиняється, напевно, тому що я не вручну встановлював кожну останню деталь дуже детальної конфігурації.

Підключення через термінал виконуючи: sudo openvpn --config /path/to/openvpn.confзапитав мене ім’я користувача, потім пароль, але потім не підключався.

Що я можу зробити, щоб це виправити? Мені дуже потрібна моя VPN, будь-яка допомога вдячна.

Редагувати: це помилка / 1294899

Для повторної відкритої черги: хтось має надзвичайно хорошу обробку для цього, і він використав правку, щоб поставити це, але це гідно власної відповіді: голосування за повторне відкриття ...


запустіть його з командного рядка, подивіться, чи з’являється помилка та знайдіть її (або додайте її до цього питання).
Rinzwind

Відповіді:


26

Ви маєте рацію, це помилка менеджера мережі. Але я (і ви теж) можу обійти його, запустивши openvpn з командного рядка. Ви, мабуть, зробили принаймні кілька цих кроків, але про всяк випадок (і на користь інших) я зроблю повний крок за кроком.

Спочатку встановіть необхідні пакети

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

Створення файлів Ці файли повинні зберігатись у безпечному та приватному режимі

  1. Створіть у своєму домашньому каталозі каталог з назвою openvpn Скопіюйте клієнтський файл VPN (перейменований client.ovpn) у каталог openvpn
  2. Необов’язково. Зберігайте оригінальну копію файлу - називайте його client.ovpn.orig
  3. Далі ми створимо 4 файли під каталогом openvpn.
  4. Див. Нижню частину цього файлу щодо автоматизації наступних кроків
  5. Відкрийте файл client.ovpn у текстовому редакторі.
  6. Створіть файл під назвою ca.crt - скопіюйте текст між клієнтом <ca>та </ca>клієнтом у цей файл
  7. Створіть файл під назвою client.crt - скопіюйте текст між клієнтом <cert>і </cert>клієнтом .ovpn у цей файл
  8. Створіть файл, який називається client.key - скопіюйте текст між клієнтом <key>і </key>з client.ovpn у цей файл
  9. Створіть файл під назвою ta.key - скопіюйте текст між клієнтом <tls-auth>і </tls-auth>з client.ovpn у цей файл. На даний момент у моєму каталозі openvpn (у тому числі резервного файлу) у мене є 6 файлів.

5-9 Я тільки що розробив, як робити скрипт bash. Вигук Скопіюйте наступний текст в текстовий файл:

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

Я зберег файл як openvpnconvert у папці openvpn разом із файлом client.ovpn. Зробив його виконуваним за допомогою команди chmod a + x:

chmod a+x openvpnconvert

А потім побіг:

./openvpnconvert

Змініть файл client.ovpn

Незадовго до рядка ## —– ЗАПИСИТИ RSA PIGNATURE—– додайте рядки нижче та збережіть

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

Нарешті, вам потрібно запустити openvpn з інтерфейсу командного рядка (CLI)

CD у папку openvpn

cd openvpn

Запустіть openvpn, якщо ви використовуєте вказані нами імена файлів, див. Нижче, інакше використовуйте свої назви файлів.

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

На даний момент я працюю на OpenVPN, який я налаштував, використовуючи саме ці кроки. Сподіваюся, це працює однаково добре для інших.

Джерела:

Створення файлів - http://naveensnayak.wordpress.com/2013/03/04/ubuntu-openvpn-with-ovpn-file/

Запуск з командного рядка - http://ubuntuforums.org/showthread.php?t=2206811


дякую, це дійсно приємно. у мене фактично є .ovpn конфігурація для android. на жаль, це не працює з моєю, оскільки комбінований ім'я користувача / пароль не приймається системою openvpn, і підтверджена помилка для моєї конкретної конфігурації. дійсно дуже дурний і розчаровує, залишає на мене єдину надію, що це скоро виправиться, сподіваємось.
vaioonbuntu

Я щойно переглянув код, і, здається, мій постачальник VPN також використовує конфігурацію типу пароля користувача. Якщо у них є файл .ovpn, який ви можете завантажити, ви все-таки зможете скористатися описаною вище технікою. Пальці все одно схрестилися.
Тамсін Майкл

1
Я особисто дам гроші на пиво тому, хто коли-небудь пише сценарій для перетворення цих файлів - який біль у *!
jowan sebastian

@jowansebastian woop, тільки що розробив, як це зробити. Я додам його до кінця попередньої відповіді.
Тамсін Майкл

Я зробив саме це, і щось не працює. Я отримую адаптер tun0, але не можу отримати доступ до жодних внутрішніх ресурсів.
Крістіан Бонгіорно,

5

Я думав, що варіант відсутній, але він просто перемістився. Спочатку виберіть додавання з'єднання, а потім замість вибору OpenVPN (як я це робив), прокрутіть униз і виберіть останній варіант "імпортувати збережений vpn ..."

введіть тут опис зображення

знайшов відповідь тут - http://torguard.net/knowledgebase.php?action=displayarticle&id=53


Це просто спрацювало, дякую! Це має бути прийнятою відповіддю.
Вінченцо Пій

2

Я ніколи не намагався імпортувати ці дані про з'єднання, але в різних випадках використовував таке:

  • розмістіть whatever.confразом із .crtфайлом та обліковими записами /etc/openvpnта запустити / зупинити з'єднання VPNsudo service openvpn whatever start|stop

  • створити VPN-з'єднання через NetworkManager, ввівши дані про з'єднання вручну. Конфігураційний файл для з'єднання буде розміщений у /etc/NetworkManager/system-connectionsта може бути відредагований пізніше.


2

Сценарій вилучення:

У відповідь на корисну відповідь Тамсіна Майкла я створив невеличку програму для автоматизації видобутку. Він виводить відповідні файли, необхідні для openvpn, після чого додає ці файли до оригінального файлу налаштувань.

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

Компіляція та побудова:

Для цього потрібно встановити g ++

sudo apt-get install g++

Потім з терміналу

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

Тепер у вас буде програма "certgrabber" у папці.

Використання програми:

Витягнути до назви файлів за замовчуванням (ca.crt, client.crt, client.key, tls-auth.key)

./certgrabber settings.ovpn

Витяг до власних імен файлів

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

Дякую. Це круто. @ user1081275 заборгував вам гроші на пиво. =)
Тамсін Майкл

ваша програма виходить з ладу, коли я її запускаю: Несправність сегментації (ядро скинуто)
Dieter Pisarewski

Я використовую g ++ (GCC) 5.1.1 для компіляції. Я тільки тестував, і, здавалося, проблем не було.
woahguy

1

Проблема з додаванням VPN із збереженого файлу .ovpn все ще не вдається.

Можна додати одне вручну.

  1. Виберіть індикатор програми NM, -> VPN -> Налаштування VPN -> Додати -> OpenVPN
  2. Вручну назвіть ваше з'єднання та введіть IP-адресу свого сервера
  3. Виберіть тип аутентифікації: для мене це пароль + сертифікати
  4. Введіть своє ім’я користувача та пароль
  5. Виберіть свої сертифікати та ключі для наступних трьох полів.
  6. Виберіть Додатково знизу
  7. Введіть ПОРТ (у файлі .ovpn, як правило, внизу після IP-адреси у позиції "XX":

    віддалений ###. ###. ##. ## XX

  8. Якщо ваша VPN - TCP, встановіть прапорець "Використовувати підключення TCP"

  9. Виберіть Добре, а потім Зберегти.

На цьому етапі з'єднання VPN повинно бути вказане у програмі NM AppIndicator як опція. Виберіть і протестуйте своє з'єднання. Мені вдалося додати TCP і UDP-тип з'єднання, але потрібно було зробити набагато більше, ніж це було б, якби справний файл імпорту .ovpn працював.

Давайте сподіваємось, що вони виправлять це незабаром, щоб я міг легко додати інший зв’язок ... але принаймні це робота навколо, яка повинна допомогти людям розчаруватися, як я.


0

Я створив скрипт тут для автоматизації вибірки пароля і поштові файли з декількох VPN - сайтів , такі як vpnbook.com , екстракції ca, certі keyданих з OVPN файлів і оновлень opvn файлів так просто повинні сертифікати імпортувати для вас. Його можна легко змінити для використання з іншими постачальниками.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.