OpenVPN клиент на CentOS 6

Ранее я уже описывал как поднять сервер VPN на микротике, в этой статье я опишу как настроить centos для подключения к микротику.

установка

Итак первым делом нам потребуется установить пакет

yum install openvpn

у меня он был в дистрибутиве…
yum install openvpn
и… во-первых: очень старый

во-вторых: писал в лог вот такую ошибку

Jan 16 13:47:17 localhost openvpn[5618]: OpenVPN 2.0.9 x86_64-redhat-linux-gnu [SSL] [LZO] [EPOLL] built on Nov 12 2010
Jan 16 13:47:17 localhost openvpn[5618]: Sorry, ‘Auth’ password cannot be read from a file
Jan 16 13:47:17 localhost openvpn[5618]: Exiting

Ну и конечно отказывался стартовать.

В общем, мало того что старая версия, так ещё и собрана без поддержки логина-пароля, а на микротике без этого никак. Но проблема очень просто решается, надо добавить репозиторий EPEL

yum install epel-release

либо

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

centos add epel

а затем снова набираем

yum install openvpn

ovpn centos yum install

 

настройка, конфиг файл

После установки нормальной версии openvpn мы перекидываем публичные сертификаты CA и клиента, и закрытый ключ клиента в /etc/openvpn/ и там же создаём файл auth.cfg вида

1
2
user
123

Процесс по созданию сертификатов описан здесь.
Следующим этапом создаём файл client.conf

nano /etc/openvpn/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

после того как конфиг файл сохранён, можно запускать службу

service openvpn start

 

Должен появится новый интерфейс в системе, проверяем командой ifconfig

service openvpn start

Если интерфейс не появился – смотрим ошибки в логах:

tail -n 100 /var/log/messages
При получении ошибки:
VERIFY ERROR: depth=0, error=certificate signature failure:
OpenSSL: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
TLS_ERROR: BIO read tls_read_plaintext error
TLS Error: TLS object -> incoming plaintext read error
TLS Error: TLS handshake failed
необходимо включить поддержку md5, выполнив команду:
echo -e “LegacySigningMDs md2 md5\nMinimumDHBits 512\n” >> /etc/pki/tls/legacy-settings

Добавить сервис в автозапуск можно например с помощью Webmin или командой:

chkconfig  --level 35 openvpn on

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

  • http://vk.com/id138764665 Сергей Кузьмин

    День добрый подскажите пожалуйста с ОС windows подключаемся без проблем а вот с CentOS не могу.Выкладываю конфиг и лог.

    proto tcp-client
    remote ***********************
    dev tap

    nobind
    persist-key

    tls-client
    ca poligon_ca.crt
    cert poligon_client.crt
    key poligon_client.key
    ping 10
    verb 3
    ns-cert-type server
    cipher AES-256-CBC
    auth SHA1
    pull

    auth-user-pass auth.cfg

    route-delay 2
    route 192.168.1.0 255.255.255.0 10.5.0.1
    status openvpn-status.log
    log-append openvpn.log

    • Алексей

      К микротику же идёт подключение? IP адресов в пуле хватает?

      • http://vk.com/id138764665 Сергей Кузьмин

        Да конечно хватает я же с OS windows подключаюсь

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

          у меня конфиг 1 в 1 и всё работает, значит проблема не на линуксе.
          проверьте пул айпи адрсесов на миркотие, логин пароль на мироктике, шифрование (aes-256 и sha1).
          ну и собственно в логе микротика должна быть ошибка, что он пишет?

          • http://vk.com/id138764665 Сергей Кузьмин

            Вот как то так

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

            http://prntscr.com/79yxvn
            вот так сделайте в system-logging и потом скиньте лог из микротика
            лог подобный вашему у меня воспроизводится только если пара-логин пароль неверная.

          • http://vk.com/id138764665 Сергей Кузьмин

            Спасибо дело было в нем.не знаю почему но файл auth.cfg при копировании с OC Windows на CentOS в логине появились непонятные символы.Убрал все работает вообще огонь спасибо вам большое!

          • http://vk.com/id138764665 Сергей Кузьмин

            Есть идеи?

      • http://vk.com/id138764665 Сергей Кузьмин

        Конфиг вроде правильный в логах то же ошибок не вижу

  • http://vk.com/id138764665 Сергей Кузьмин

    Thu May 21 13:35:06 2015 OpenVPN 2.3.6 i686-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 2 2014
    Thu May 21 13:35:06 2015 library versions: OpenSSL 1.0.1e-fips 11 Feb 2013, LZO 2.03
    Thu May 21 13:35:06 2015 WARNING: file ‘auth.cfg’ is group or others accessible
    Thu May 21 13:35:06 2015 WARNING: –ping should normally be used with –ping-restart or –ping-exit
    Thu May 21 13:35:06 2015 WARNING: file ‘poligon_client.key’ is group or others accessible
    Thu May 21 13:35:06 2015 Socket Buffers: R=[87380->131072] S=[16384->131072]
    Thu May 21 13:35:06 2015 Attempting to establish TCP connection with [AF_INET]*****************:1194 [nonblock]
    Thu May 21 13:35:07 2015 TCP connection established with [AF_INET]******************:1194
    Thu May 21 13:35:07 2015 TCPv4_CLIENT link local: [undef]
    Thu May 21 13:35:07 2015 TCPv4_CLIENT link remote: [AF_INET]***************:1194
    Thu May 21 13:35:07 2015 TLS: Initial packet from [AF_INET]**************:1194, sid=cba633f3 75042291
    Thu May 21 13:35:07 2015 WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
    Thu May 21 13:35:07 2015 VERIFY OK: depth=1, C=ru, ST=to, L=Tomsk, O=Bitrum, OU=inzh, CN=server, name=1, emailAddress=revenger77@list.ru
    Thu May 21 13:35:07 2015 VERIFY OK: nsCertType=SERVER
    Thu May 21 13:35:07 2015 VERIFY OK: depth=0, C=ru, ST=to, L=Tomsk, O=Bitrum, OU=inzg, CN=troshin_server, name=tva, emailAddress=revenger77@list.ru
    Thu May 21 13:35:07 2015 Connection reset, restarting [0]
    Thu May 21 13:35:07 2015 SIGUSR1[soft,connection-reset] received, process restarting
    Thu May 21 13:35:07 2015 Restart pause, 5 second(s)