openvpn không thể nhập cấu hình trên bản cài đặt 14.04 mới


20

Chỉnh sửa: Đã sửa lỗi sau đó khi bản vá được tung ra với thêm cấu hình VPN. Không còn sử dụng Linux / Ubuntu nữa.

Tôi đã cài đặt OpenVPN Network-Manager bằng cách thực hiện : sudo apt-get install network-manager-openvpn, cũng cài đặt gói gnome.

Điều này cho phép nhập các cấu hình dưới 13.10, nhưng trên bản cài đặt mới của tôi, tôi có thể trỏ đến các .conftệp, nhưng sau khi nhấp vào nhập, trình quản lý chỉ biến mất và không có kết nối nào được thêm vào.

Tôi đã thử cài đặt thủ công, loại nào hoạt động, nhưng kết nối của tôi liên tục bị rớt sau một thời gian, tôi đoán vì tôi không cài đặt thủ công từng chi tiết cuối cùng của cấu hình rất chi tiết.

Kết nối thông qua thiết bị đầu cuối bằng cách thực hiện: sudo openvpn --config /path/to/openvpn.confhỏi tôi tên người dùng, sau đó mật khẩu, nhưng sau đó không kết nối.

Tôi có thể làm gì để sữa nó? Tôi thực sự cần VPN của tôi, bất kỳ trợ giúp đều được đánh giá cao.

Chỉnh sửa: Đó là một lỗi / 1294899

Đối với hàng đợi mở lại: Ai đó có một công việc cực kỳ tốt cho việc này và anh ta đã sử dụng một chỉnh sửa để đưa nó vào, nhưng điều này xứng đáng với câu trả lời của chính nó: bỏ phiếu để mở lại ...


bắt đầu từ dòng lệnh, xem nếu có lỗi xuất hiện và tìm kiếm nó (hoặc thêm nó vào câu hỏi này).
Rinzwind

Câu trả lời:


26

Bạn nói đúng, đó là một lỗi quản lý mạng. Nhưng tôi (và bạn cũng vậy) có thể khắc phục nó bằng cách chạy openvpn từ dòng lệnh. Có lẽ bạn đã thực hiện ít nhất một vài trong số các bước này, nhưng chỉ trong trường hợp (và vì lợi ích của người khác) tôi sẽ thực hiện từng bước đầy đủ.

Đầu tiên cài đặt các gói cần thiết

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

Tạo tập tin Những tập tin này phải được giữ an toàn và riêng tư mọi lúc

  1. Tạo một thư mục có tên openvpn trong thư mục chính của bạn Sao chép tệp khách hàng VPN của bạn (được đổi tên thành client.ovpn) vào thư mục openvpn
  2. Tùy chọn: Giữ một bản sao gốc của tệp - gọi nó là client.ovpn.orig
  3. Tiếp theo chúng ta sẽ tạo 4 tệp trong thư mục openvpn.
  4. Xem phần dưới cùng của tệp này để biết cách tự động hóa các bước sau
  5. Mở tệp client.ovpn trong trình soạn thảo văn bản.
  6. Tạo một tệp có tên ca.crt - sao chép văn bản giữa <ca></ca>từ client.ovpn vào tệp này
  7. Tạo một tệp có tên client.crt - sao chép văn bản giữa <cert></cert>từ client.ovpn vào tệp này
  8. Tạo một tệp có tên client.key - sao chép văn bản giữa <key></key>từ client.ovpn vào tệp này
  9. Tạo một tệp có tên ta.key - sao chép văn bản giữa <tls-auth></tls-auth>từ client.ovpn vào tệp này Tại thời điểm này tôi có tổng cộng 6 tệp trong thư mục openvpn của mình (bao gồm cả tệp sao lưu)

5-9 Tôi vừa tìm ra cách làm bash script. Whoop Sao chép phần sau vào tệp văn bản:

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

Tôi đã lưu tệp dưới dạng openvpnconvert trong thư mục openvpn cùng với tệp client.ovpn. Làm cho nó có thể thực thi được bằng lệnh chmod a + x:

chmod a+x openvpnconvert

Và sau đó chạy nó:

./openvpnconvert

Sửa đổi tệp client.ovpn

Ngay trước dòng chữ ## Đợi, BẮT ĐẦU RSA RSA, hãy thêm các dòng dưới đây và lưu lại

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

Cuối cùng, bạn cần chạy openvpn từ Giao diện dòng lệnh (CLI)

cd vào thư mục openvpn

cd openvpn

Chạy openvpn, nếu bạn đang sử dụng tên tệp tôi đã chỉ định, xem bên dưới, nếu không hãy sử dụng tên tệp của bạn.

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

Tôi hiện đang chạy OpenVPN, mà tôi đã thiết lập bằng cách sử dụng chính xác các bước này. Hy vọng nó hoạt động tốt như nhau cho những người khác.

Nguồn:

Tạo tập tin - http://naveensnayak.wordpress.com/2013/03/04/ubfox-openvpn-with-ovpn-file/

Chạy từ Dòng lệnh - http://ubuntuforums.org/showthread.php?t=2206811


cảm ơn bạn, điều này thực sự tốt đẹp Tôi thực sự có một cấu hình .ovpn cho Android. thật đáng buồn, nó không hoạt động với tôi, vì kết hợp tên người dùng / mật khẩu không được hệ thống openvpn chấp nhận, một lỗi đã được xác nhận, đối với cấu hình cụ thể của tôi. thực sự thực sự ngu ngốc và bực bội, để lại cho tôi hy vọng duy nhất, rằng điều này sẽ được khắc phục sớm, hy vọng.
vaioonbfox

Tôi vừa xem qua mã và có vẻ như nhà cung cấp VPN của tôi cũng sử dụng cấu hình loại mật khẩu tên người dùng. Nếu họ có tệp .ovpn bạn có thể tải xuống, bạn vẫn có thể sử dụng kỹ thuật trên. Ngón tay nào cũng vượt qua.
Tamsyn Michael

1
Cá nhân tôi sẽ đưa tiền bia cho những ai từng viết kịch bản để chuyển đổi các tệp này - thật là một nỗi đau trong *!
jowan sebastian

@jowansebastian woop, chỉ cần làm việc để làm điều đó. Tôi sẽ thêm nó vào cuối câu trả lời trước.
Tamsyn Michael

Tôi đã làm chính xác điều này và một cái gì đó không hoạt động. Tôi nhận được bộ điều hợp tun0 nhưng tôi không thể truy cập bất kỳ tài nguyên nội bộ nào.
Christian Bongiorno

5

Tôi nghĩ rằng tùy chọn bị thiếu, nhưng nó chỉ di chuyển. Trước tiên, chọn thêm kết nối, sau đó thay vì chọn OpenVPN (như tôi đang làm), hãy cuộn xuống xa hơn và chọn tùy chọn cuối cùng "nhập vpn đã lưu ..."

nhập mô tả hình ảnh ở đây

đã tìm thấy câu trả lời ở đây - http://torguard.net/ledgeledridease.php?action=displayarticle&id=53


Nó chỉ hoạt động, cảm ơn! Đây phải là câu trả lời được chấp nhận.
Vincenzo Pii

2

Tôi chưa bao giờ thử nhập các dữ liệu kết nối này, nhưng tôi đã sử dụng những điều sau đây vào các dịp khác nhau:

  • đặt whatever.confcùng với .crttệp và thông tin đăng nhập /etc/openvpnvà bắt đầu / dừng kết nối VPN vớisudo service openvpn whatever start|stop

  • tạo kết nối VPN thông qua Trình quản lý mạng bằng cách nhập dữ liệu kết nối theo cách thủ công. Tệp cấu hình cho kết nối sẽ được đặt tại /etc/NetworkManager/system-connectionsvà có thể được chỉnh sửa sau.


2

Trích xuất tập lệnh:

Để đáp lại câu trả lời hữu ích của Tamsyn Michael, tôi đã tạo một chương trình nhỏ để tự động hóa nhiệm vụ trích xuất. Nó xuất ra các tệp thích hợp cần thiết cho openvpn sau đó nối các tên tệp này vào tệp cài đặt gốc.

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

Biên soạn & Xây dựng:

Bạn sẽ cần cài đặt g ++ để xây dựng cái này

sudo apt-get install g++

Sau đó từ thiết bị đầu cuối

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

Bây giờ bạn sẽ có chương trình 'certgrabber' trong thư mục.

Sử dụng chương trình:

Trích xuất tên tệp mặc định (ca.crt, client.crt, client.key, tls-auth.key)

./certgrabber settings.ovpn

Trích xuất tên tập tin tùy chỉnh

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

Cảm ơn bạn. Điều này thật tuyệt. @ user1081275 nợ bạn tiền bia ngay bây giờ. =)
Tamsyn Michael

chương trình của bạn gặp sự cố khi tôi khởi động nó: Lỗi phân đoạn (bị đổ lõi)
Dieter Pisarewski

Tôi đang sử dụng g ++ (GCC) 5.1.1 để biên dịch. Tôi chỉ thử nghiệm và dường như không có vấn đề gì.
woahguy

1

Sự cố với THÊM VPN từ tệp .ovpn đã lưu vẫn không thành công.

Có thể THÊM một cách thủ công.

  1. Chọn Chỉ báo ứng dụng NM, -> VPN -> Cấu hình VPN -> Thêm -> OpenVPN
  2. Đặt tên thủ công cho kết nối của bạn và nhập Địa chỉ IP cho máy chủ của bạn
  3. Chọn loại xác thực: Đối với tôi, đó là Mật khẩu + Chứng chỉ
  4. Nhập tên người dùng và mật khẩu của bạn
  5. Chọn chứng chỉ và khóa của bạn cho ba hộp tiếp theo.
  6. Chọn Nâng cao từ dưới lên
  7. Nhập PORT (trong tệp .ovpn, thường ở dưới cùng sau địa chỉ IP ở vị trí "XX":

    từ xa ###. ###. ##. ## XX

  8. Nếu VPN của bạn là TCP, thì hãy chọn hộp kiểm "Sử dụng kết nối TCP"

  9. Chọn OK và sau đó lưu.

Tại thời điểm này, kết nối VPN phải được liệt kê trong NM AppIndicator dưới dạng tùy chọn. Chọn và kiểm tra kết nối của bạn. Tôi đã có thể thêm TCP và loại kết nối UDP, nhưng phải mất rất nhiều việc phải làm nếu tệp nhập .ovpn đã hoạt động.

Hãy hy vọng họ sẽ khắc phục điều này sớm để tôi có thể dễ dàng thêm kết nối khác ... nhưng ít nhất đây là một công việc xung quanh sẽ giúp mọi người thất vọng như tôi.


0

Tôi tạo ra một kịch bản ở đây để tự động hóa mật khẩu quyến rũ & nén tập tin từ một số trang web vpn như vpnbook.com , chiết xuất ca, certkeydữ liệu từ các tập tin ovpn, và cập nhật các tệp opvn nên Certs chỉ nên nhập khẩu cho bạn. Nó có thể dễ dàng được sửa đổi để sử dụng với các nhà cung cấp khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.