OpenVPN клиент на Debian 9

Сегодня разберём как подключить Debian к микротику посредствам OpenVPN. Ранее мы уже разбирали как поднять VPN сервер на микротике, поэтому будем разбирать как подключится к нему с Linux.

Установка

Пожалуй на дебиане настройка выполняется самым простым образом. Первоначально нам надо установить пакет. Никаких сложностей, воспользуемся обычным менеджером пакетов, никаких новых репозиториев нам не нужно.

apt install openvpn

apt install openvpn

после установки переходим в каталог /etc/openvpn/client и создаём файлик client.conf следующего содержания:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
proto tcp-client
# в этой строчке мы указываем адрес в интернете нашего микротика
remote 123.123.123.123
dev tap
 
nobind
persist-key
 
tls-client
#указываем имена публичного CA сертификата
ca ca.crt
# публичного сертификата клиента
cert client.crt
# и его закрытый ключ
key  client.key
#каждые 10 секунд проверять туннель, если нет ответа 120 секунд, переподключаться
keepalive 10 120
verb 3 
#проверка сертификата сервера 
#https://openvpn.net/index.php/open-source/documentation/howto.html#mitm 
remote-cert-tls server 
cipher AES-256-CBC 
auth SHA1 
pull 
# эта строка задаёт файл с логином-паролем которые мы прописывали в PPP-Secrets на микротике 
auth-user-pass auth.cfg 
# в этой части мы задаём настройки сетей которые находятся за микротиком, 
# в моём случае 192.168.1.0 с маской 255.255.255.0 это сеть, 
# а 192.168.221.1 это адрес микротика который мы указывали в PPP профиле 
route-delay 2 
route 192.168.1.0 255.255.255.0 192.168.221.1

в этой же папке создаём файл auth.cfg куда записываем логин-пароль

user
123

Сюда же скидываем сертификаты: клиента, CA и секретный ключ клиента. После того как все файлы готовы можно запускать службу. В 9 дебиане это делается через systemd

systemctl start openvpn-client@client

Тут добавлю немножко деталей. openvpn-client – значит запустить конфиг из папки /etc/openvpn/client, а @client значит запустить конфиг с названием client. Соответственно таким же образом мы можем все файлы накидать в папку server и запуститься командой systemctl start openvpn-server@client. В какую именно папку закидывать конфиг и как запускаться зависит только от Вас.

Проверяем всё ли в порядке командой ifconfig, должен появится новый интерфейс
ifconfig tun0
Если интерфейса нет, смотрим лог файлы

tail -n 100 /var/log/syslog
OpenSSL: error:140AB18E:SSL routines:SSL_CTX_use_certificate:ca md too weak

Эта ошибка означает что у вас сгенерирован сертификат с использованием md5, что сейчас считается небезопасным, обновите скрипт который генерировал сертификат и создайте заново всю цепочку ca-server-client. Проверял начиная с 2.4.6 используется sha256, не знаю как более ранние, но более поздние точно нормально генерируют.

Если же всё в порядке добавляем службу в автозапуск

systemctl enable openvpn-client@client

На этом всё.
Как и прежде любые вопросы или пожелания можно оставлять ниже в комментариях.

  • http://vk.com/id2844437 Владимир Стародубцев

    Добрый день. Делал все по инструкции (на винде работает хорошо ovpn), но интерфейс tap не создается. В чем может быть проблема, из лога видно, как будто он не понимает сертификатов? Попробовал изменить права на сертификаты, выставил 600, не помогло.

    В конфиге у вас тоже dev tap, но в проверке вы пишите, что должен появиться tun0, просто опечатка?

    • http://vk.com/id3942838 Алексей Варич

      ну так а лог то где, или погадать на кофейной гуще предлагаете?
      картинка от другого конфига )
      я tap не настраиваю почти никогда, это самый просто и самый негибкий вариант.

      • http://vk.com/id2844437 Владимир Стародубцев

        Вот лог:
        Mon Oct 1 22:04:31 2018 WARNING: Ignoring option ‘dh’ in tls-client mode, please only include this in your server configuration
        Mon Oct 1 22:04:31 2018 WARNING: file ‘/etc/openvpn/client-keys/admin.key’ is group or others accessible
        Mon Oct 1 22:04:31 2018 WARNING: file ‘/etc/openvpn/client-keys/ta.key’ is group or others accessible
        Mon Oct 1 22:04:31 2018 OpenVPN 2.4.6 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 30 2018
        Mon Oct 1 22:04:31 2018 library versions: OpenSSL 1.1.0h 27 Mar 2018, LZO 2.08
        Mon Oct 1 22:04:31 2018 OpenSSL: error:140AB18E:SSL routines:SSL_CTX_use_certificate:ca md too weak
        Mon Oct 1 22:04:31 2018 Cannot load certificate file /etc/openvpn/client-keys/admin.crt
        Mon Oct 1 22:04:31 2018 Exiting due to fatal error

        Если вы не настраиваете tap, то как перенастроить через tun?

        • http://vk.com/id3942838 Алексей Варич

          а файл то /etc/openvpn/client-keys/admin.crt вообще существует?

          • http://vk.com/id2844437 Владимир Стародубцев

            Конечно существует. Этот же файл используется на винде.

          • http://vk.com/id3942838 Алексей Варич

            давайте конфиг тогда на https://pastebin.com, и сюда ссылку, посмотрим что там,
            и туда же ls -lh в папке /etc/openvpn/client-keys/
            и сам серт cat /etc/openvpn/client-keys/admin.crt.
            на ошибку is group or others accessible можно не обращать особо внимания.

          • http://vk.com/id2844437 Владимир Стародубцев

            https://pastebin.com/RTh3neEN

            Вот новый лог:

            Fri Oct 5 17:24:11 2018 WARNING: Ignoring option ‘dh’ in tls-client mode, please only include this in your server configuration
            Fri Oct 5 17:24:11 2018 WARNING: cannot stat file ‘/etc/openvpn/client-keys/ta.key’: No such file or directory (errno=2)
            Options error: –tls-auth fails with ‘/etc/openvpn/client-keys/ta.key’: No such file or directory (errno=2)
            Options error: Please correct these errors.
            Use –help for more information.

            А вот лог, если добавить в папку с ключами файл ta.key

            Fri Oct 5 17:33:17 2018 WARNING: Ignoring option ‘dh’ in tls-client mode, please only include this in your server configuration
            Fri Oct 5 17:33:17 2018 OpenVPN 2.4.6 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 30 2018
            Fri Oct 5 17:33:17 2018 library versions: OpenSSL 1.1.0h 27 Mar 2018, LZO 2.10
            Fri Oct 5 17:33:17 2018 OpenSSL: error:140AB18E:SSL routines:SSL_CTX_use_certificate:ca md too weak
            Fri Oct 5 17:33:17 2018 Cannot load certificate file /etc/openvpn/client-keys/admin.crt
            Fri Oct 5 17:33:17 2018 Exiting due to fatal error

            Запуск произвожу через команду:
            systemctl start openvpn-client@client

          • http://vk.com/id3942838 Алексей Варич

            у вас сертификат использует md5 вместо sha1 если я всё правильно понимаю, это считается не секурно, вот он и жалуется, можно исправить, но если есть возможность лучше сертификаты перегенерировать под sha1

          • http://vk.com/id2844437 Владимир Стародубцев

            Сертификаты делал по статье https://trustore.ru/article/complex/sozdanie-samopodpisnyh-sertifikatov.html
            Как их переделать под sha1?

          • http://vk.com/id3942838 Алексей Варич

            а какая версия ovpn была? по идее во всех новых версиях md5 уже само по себе не должно использоваться

          • http://vk.com/id2844437 Владимир Стародубцев

            Делал на версии OpenVPN 2.3.8 (в настройках “о программе” GUI 11.7.0.0)

          • http://vk.com/id3942838 Алексей Варич

            пропустил коммент, в потоке писем
            специально сделал тестовые сертификаты на 2.4.6 – там всё отлично, вместо md5 используется sha1
            сейчас на md5 даже клиент на винде ругается, так что сертификаты конечно лучше переделать., что бы в будущем проблем меньше было.