Skip to main content

Інструкція користувача

Клієнт і сервер OpenVPN

OpenVPN є одним з найпопулярніших протоколів для підключення до VPN. Його можна використовувати для створення віртуальної приватної мережі або для з'єднання локальних мереж. OpenVPN є протоколом з відкритим кодом і розповсюджується безкоштовно під Ліцензією GNU GPL. Він забезпечує більш високу швидкість з'єднання, ніж інші протоколи VPN. Крім того, OpenVPN можна назвати одним з найбезпечніших протоколів. Всі передані дані надійно захищені шифруванням OpenSSL та протоколами SSLv3/TLSv1 , що забезпечує високу безпеку і анонімність.

Маршрутизатор Keenetic підтримує TCP і UDP режими для OpenVPN з'єднання, TLS автентифікацію, використання сертифікатів та ключів шифрування для підвищення безпеки VPN-з'єднання.

Важливо

Маршрутизатор Keenetic, який буде Сервером OpenVPN, повинен бути підключений до Інтернету за допомогою публічної IP-адреси, а при використанні доменного імені KeenDNS, воно повинно бути налаштоване в режимі Прямого доступу. Якщо будь-яка з перерахованих умов не буде виконана, підключитися до такого сервера з Інтернету не вдасться.

Для налаштування підключення OpenVPN необхідно встановити системний компонент 'Клієнт і сервер OpenVPN'. За допомогою цього компонента ви можете використовувати як клієнт, так і сервер OpenVPN у вашому Keenetic. Ви можете встановити системний компонент на сторінці 'Параметри системи' у розділі 'KeeneticOS Оновлення та параметри компонентів', натиснувши 'Змінити набір компонентів'.

openvpn-server1-en.png

Режим роботи OpenVPN (клієнт або сервер) в основному визначається його файлом конфігурації.

Важливо

Вимоги до конфігурації OpenVPN для використання в Keenetic:

  • Конфігурація повинна бути в одному файлі.

  • У цей файл повинні бути включені сертифікати, ключі тощо.

  • У конфігурації слід використовувати тільки ті параметри, що перераховані в документі: OpenVPN 2.4 ManPage.

  • Деякі з описаних вище опцій можуть не підтримуватися. Наприклад, наша реалізація OpenVPN не підтримує параметри, пов'язані з IPv6.

  • Порядок параметрів, включених сертифікатів і ключів не має значення.

  • OpenSSL ключі повинні бути встановлені без пароля, оскільки інтерфейс Keenetic не має можливості ввести його.

  • OpenVPN конфігурація не зберігається у файлі конфігурації startup-config. Щоб мати резервну копію налаштувань інтерфейсу OpenVPN , необхідно зберегти її окремо.

For KN-1110, 1210, 1310, 1410, 1510, 1610, 1710, 1810 and 1910 models the number of client connections is limited by the allocated service memory partition size of 24 Kbytes for storing VPN configurations. This is especially important for OpenVPN connections because the total size of their configurations must not exceed 24 Kbytes. For modern Keenetic models with KN-XXXX index the size of the storage, where the startup-config configuration file and environment variables (including keys) are placed in compressed form, has been increased and ranges from 260 Kbytes to 2 Mbytes (depending on the model).

Розглянемо приклад підключення OpenVPN типу 'site-to-site'.

openvpn-server2-en.png

Підключимо Keenetic #2 у якості клієнта (Домашній сегмент 192.168.2.0/24, адреса тунелю: 10.1.0.2) до серверу на Keenetic #1 (Домашній сегмент 192.168.1.0/24, адреса тунелю: 10.1.0.1)

  • Для початку давайте розглянемо найпростішу конфігурацію з використанням спільного секретного ключа.

    1. Мінімальна конфігурація OpenVPN сервера для Keenetic #1:

      dev tun
      ifconfig 10.1.0.1 10.1.0.2
      cipher AES-128-CBC
      <secret>
        <--insert the secret key here
      </secret>
      verb 3
      route 192.168.2.0 255.255.255.0
    2. Мінімальна конфігурація OpenVPN клієнта для Keenetic #2:

      dev tun
      remote KEENETIC-1.mykeenetic.net <-- server's domain name or IP address
      ifconfig 10.1.0.2 10.1.0.1
      cipher AES-128-CBC
      <secret>
        <--insert the secret key here
      </secret>
      verb 3
      route 192.168.1.0 255.255.255.0
      or
      redirect-gateway def1
      or
      route 0.0.0.0 0.0.0.0 <-- if it's neccessary to route all the traffic in the tunnel
    3. Створіть спільний секретний ключ. Для цього завантажте та встановіть OpenVPN звідси: openvpn.net/завантаження.html

      У цьому прикладі ми будемо використовувати версію 2.4.6-I602  для Windows.

      Після установки програмного забезпечення перезавантажте комп'ютер.

      За замовчуванням програма буде встановлена в C:\Program folder.

      Запустіть командний рядок Windows від імені адміністратора. Перейти до C:\Program Files\OpenVPN\bin і виконайте команду:

      openvpn.exe --genkey --secret static.key
      openvpn-server3-en.png
    4. Відкрийте згенерований static.key файл із загальним секретним ключем у будь-якому текстовому редакторі (наприклад, Блокноті), скопіюйте його вміст у буфер обміну (Ctrl-A, Ctrl-C) і вставте (Ctrl-V) у відповідні місця файлів конфігурації клієнта та сервера.

      Приклади файлів конфігурації для Keenetic#1 static-server.ovpn static-server.ovpn і для Keenetic#2 static-client.ovpn static-client.ovpn із загальним секретним ключем додаються в кінці цієї статті. У цих файлах є закоментовані налаштування OpenVPN (рядки починаються ';'), які можуть бути використані пізніше, якщо це необхідно. Ви можете використовувати ці файли конфігурації для перевірки, замінивши доменне ім'я KEENETIC-1.mykeenetic.net в static-client.ovpn доменним іменем вашого Keenetic #1 або його загальнодоступною IP-адресою, та той спільний секретний ключ, що ви згенерували, в обох файлах.

    5. Перейти до сторінки 'Інші з'єднання' у вебінтерфейсі Keenetic #1, у розділ VPN - підключення і натисніть 'Додати підключення' У вікні 'Параметри VPN-підключення', виберіть'OpenVPN'в полі 'Тип (протокол)'.

      Потім введіть назву з'єднання в полі 'Ім'я підключення', і вставте вміст файлу конфігурації static-server.ovpn в поле 'Конфігурація OpenVPN'. Збережіть налаштування.

      openvpn-server4-en.png

      Важливо

      Починаючи з KeeneticOS 3.4.1 сервер працює лише тоді, коли в полі 'Підключатися через' вибрано 'Будь-яке Інтернет-з'єднання'.

    6. Таким же чином створіть OpenVPN підключення у вебінтерфейсі Keenetic #2, але з конфігурацією static-client.ovpn:

      openvpn-server5-en.png
    7. Крім того, на Keenetic #1, (серверна) сторона, потрібно буде виконати наступні команди через інтерфейс командного рядка(CLI) маршрутизатора:

      interface OpenVPN0 no ip global
      interface OpenVPN0 security-level private

      Щоб дозволити трафік між інтерфейсами Home і OpenVPN0, які мають приватний рівень безпеки, виконують команду:

      no isolate-private

      Якщо ви плануєте використовувати цей сервер і для підключення клієнта до Інтернету, виконайте команду:

      ip nat 10.1.0.2 255.255.255.255

      збережіть налаштування командою:

      system configuration save
      openvpn-server6-en.png
    8. Також необхідно відкрити порт для OpenVPN з'єднання. Порт за замовчуванням UDP/1194. Для цього на сторінці Міжмережевий екран створіть правило для інтерфейсу 'ISP', або для інтерфейсу, який використовується для доступу до Інтернету (на додаток до інтерфейсу 'ISP', це можуть бути інтерфейси PPPoE, L2TP або PPTP).

      openvpn-server7-en.png

      У вікні 'Правило міжмережевого екрану', виберіть 'Дозволити' в полі 'Дія', 'UDP' в полі 'Протокол' і Дорівнює 1194' в полі 'Порт призначення'.

      Після створення з'єднання встановіть перемикач на Увімкнено.

      openvpn-server-05-en.png

      На цьому конфігурація тунелю OpenVPN завершена. На сторінці 'Інші з'єднання' відображатимуться стан з'єднання та статистика.

      Спробуйте для перевірки зробити пінг на обидва кінці тунелю:

      ping 10.1.0.1
      ping 10.1.0.2

      а потім віддалені підмережі:

      ping 192.168.1.1
      ping 192.168.2.1

Примітка

  1. Клієнти OpenVPN, підключені до сервера, відображатимуться на сторінці 'Списки клієнтів' у списку 'Незареєстровані клієнти'. Якщо ви вибрали для незареєстрованих клієнтів політику доступу 'Без доступу до Інтернету', не забудьте зареєструвати клієнтів OpenVPN, якщо вам потрібно надати їм доступ до Інтернету.

  2. Конфігурація інтерфейсу OpenVPN не зберігається у файлі startup-config. Для резервного копіювання рекомендуємо створити резервну копію налаштувань OpenVPN в окремому файлі.

  3. Якщо підключення OpenVPN потрібно використовувати для виходу в Інтернет, призначте цьому з'єднанню найвищий пріоритет. Інформацію про пріоритети ви знайдете в статті 'Пріоритети підключень'.

  4. У деяких випадках в конфігурації OpenVPN необхідно вказати логін і пароль для аутентифікації при підключенні VPN-тунелю. Для цього необхідно додати в файл конфігурації розділ auth-user-pass, вказавши значення логіна і пароля. Наприклад:

    <auth-user-pass>
    vpnclient     # login
    r3d23xs87     # password
    </auth-user-pass>
  5. Приклад створення ключів та сертифікатів у Windows для підключення до сервера OpenVPN показаний у статті 'Конфігурація OpenVPN за допомогою двосторонньої автентифікації TLS'.

Типові помилки та рішення:

  1. auth-user-pass without inline credentials data is not supported

    Файл конфігурації містить рядок для введення логіну/пароля, який Keenetic не підтримує. Помилка у файлі журналу Keenetic:

    OpenVPN0 auth-user-pass without inline credentials data is not supported
    OpenVPN0 Exiting due to fatal error

    Видаліть або закоментуйте всі рядки такого роду:

    auth-user-pass

  2. Block-outside-dns помилка

    block-outside-dns опція налаштована на Сервері OpenVPN, вона правильно обробляється тільки в Windows. Помилка у файлі журналу Keenetic:

    OpenVPN0 Unrecognized option or missing or extra parameter(s) in configuration: (line X): block-outside-dns (2.4.4)
    OpenVPN0 Exiting due to fatal error

    Додайте рядок до файлу конфігурації OpenVPN клієнта:

    pull-filter ignore "block-outside-dns"

  3. Помилка при підключенні до серверів PrivateTunnel

    Виводиться помилка при спробі підключення:

    OpenVPN0 Unrecognized option or missing or extra parameter(s) in configuration: (line 3): client-ip (2.4.4)

    Додайте рядок до файлу конфігурації клієнта OpenVPN:

    ignore-unknown-option client-ip block-ipv6

  4. Виникає помилка при використанні опції /storage/key.txt:

    Error: private key password verification failed

    Це обмеження поточної реалізації OpenVPN в Keenetic. Ви можете використовувати тільки ключ без пароля або з фіксованим паролем: 'password'.

  5. Після оновлення маршрутизатора до KeeneticOS 3.9.1, тунель VPN до серверів OpenVPN для певних постачальників VPN більше не може бути встановлений. У системному журналі можна побачити такі повідомлення:

    W [Dec 15 16:52:58] OpenVPN6: DEPRECATED OPTION: --cipher set to 'AES-128-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305). 
    OpenVPN ignores --cipher for cipher negotiations.
    Error: private key password verification failed

    Проблема в застарілому форматі шифрування BF-CBC, який не підтримується, починаючи з клієнтської версії ОpenVPN2.5.0 (KeeneticOS 3.9 використовує версію клієнта OpenVPN2.6.0).

    Примітка

    BF-CBC шифр більше не підтримується в конфігурації за замовчуванням. Версія OpenVPN2.5.0 підтримує шифри AES-256-GCMіAES-128-GCM за замовчуванням. Ви можете змінити цю поведінку за допомогою опції data-ciphers, наприклад, вказавши в налаштуваннях data-ciphers AES-256-GCM:AES-128-GCM:BF-CBC. Для підтримки дуже старих вузлів OpenVPN, які не підтримують узгодження шифрів (режим "--cipher«), можна вказати data-ciphers-fallback BF-CBC.

    При оновленні до нової версії OpenVPN налаштування 'cipher BF-CBC' в старих файлах конфігурації буде перетворене з додаванням BF-CBC до data-ciphers сету. Крім того, буде увімкнений режим data-ciphers-fallback.

    Для успішної установки тунелю потрібно змінити директиву:

    cipher AES-128-CBC на data-ciphers AES-128-CBC або на data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305

    Якщо не працює, то змініть директиву:

    cipher AES-128-CBC на data-ciphers-fallback AES-128-CBC

    Для максимальної сумісності узгодження шифрів з віддаленим сервером вкажіть наступні директиви:

    data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305

    data-ciphers-fallback AES-128-CBC

    або

    data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305

    data-ciphers-fallback AES-256-CBC

    Важливо

    Шифрування залежить від віддаленого сервера OpenVPN. Перед зміною директиви cipher, будь ласка, подивіться системний журнал.

  6. Якщо в журналі записана наступна помилка розміру ключа:

    [E] Dec 16 19:01:38 OpenVPN0: Unrecognized option or missing or extra parameter(s) in configuration: (line 22): keysize (2.6_git)
    [E] Dec 16 19:01:38 OpenVPN0: Exiting due to fatal error
    [E] Dec 16 19:01:38 ndm: Service: "OpenVPN0": unexpectedly stopped.Error: private key password verification failed

    Тоді в конфігурації тунелю потрібно прибрати директиву опції keysize 256, яка застаріла для оновленого клієнта Опен-VPN 2.6.0, і ще раз перевірити підключення тунелю.

    Ви можете знайти детальну інформацію про опцію 'keysize' за цим посиланням.

Рекомендуємо ознайомитися з наступною інформацією: