Установка и настройка OpenVPN в CentOS 4

Я не знаю кому как, а лично мне очень не нравится когда мою болтовню по асе, мою почту, да и вообще весь мой трафик может перехватить мой провайдер и еще куча всяческих очень любопытных граждан :-). Кроме того, иногда просто необходимо иметь ip адрес не свой родной, а иностранный.
Выходом из такого положения может служить такая технология как Virtual Private Network. Реализаций под linux есть масса: это и Poptop и решения на базе IPsec и OpenVPN и многие другие.
Не буду обсуждать то или иное решение, скажу только, что я остановился на OpenVPN. Причин несколько:

  • относительная простота установки;
  • для создания туннеля используется только один TCP или UDP порт;
  • работа туннеля через NAT - очень немаловажная штука для меня;
  • аутентификация пользователей и шифрование трафика с использованием библиотеки OpenSSL;
  • сжатие трафика - тоже немаловажно :-)

  • Итак, сегодня мы рассмотрим установку и настройку очень полезного пакета OpenVPN.
    заходим на наш сервер, переходим в каталог /usr/local/src и качаем последние исходники:
    cd /usr/local/src
    wget http://openvpn.net/release/openvpn-2.0.7.tar.gz
    распаковываем:
    tar zxvf openvpn-2.0.7.tar.gz
    и запускаем инсталляцию:
    cd openvpn-2.0.7
    ./configure
    После чего получаем ошибку такого вида:
    LZO library available from http://www.oberhumer.com/opensource/lzo/
    configure: error: Or try ./configure –disable-lzo

    Это значит что у нас в системе нет библиотеки lzo с помощью которой происходит компрессия и декомпрессия нашего трафика в реальном режиме времени. лезем на соответствующий сайт, качаем библиотеку и ставим:
    cd ..
    wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz
    tar zxvf lzo-2.02.tar.gz
    cd lzo-2.02
    ./configure
    make
    make install
    После чего возвращяемся в каталог openvpn-2.0.7 и продолжаем установку
    cd ../openvpn-2.0.7
    ./configure
    make
    make install
    На этом этап инсталляции пакета закончен. Теперь приступим к настройке.
    Генерируем master CA сертификат/ключ
    cd easy-rsa
    . ./vars
    ./clean-all
    ./build-ca

    при генерации жмем везде Enter за исключением одной строки:
    Common Name (eg, your name or your server’s hostname) []: OpenVPN-CA
    Это у нас имя CA сертификата.
    Дальше генерируем сертификат и ключ для сервера:
    ./build-key-server server
    Также жмем Enter на вопросы за исключением
    Common Name (eg, your name or your server’s hostname) []: server
    На вопросы где есть выбор y/n отвечаем y
    Дальше генерируем ключи клиентов, я делаю два:
    ./build-key client1
    ./build-key client2

    также как и в предыдущем случае при вопросе Common Name отвечаем соответственно client1, client2 и два вопроса где есть выбор y/n жмем y

    Дальше генерируем параметры Diffie Hellman
    ./build-dh
    На этом с генерацией покончено.
    Теперь создаем каталог /etc/openvpn и переписываем туда сгенерированные ключи и конфигурационный файл нашего сервера:
    mkdir /etc/openvpn cp ../sample-config-files/server.conf /etc/openvpn/ Открываем на редактирование конфиг сервера:
    vi /etc/openvpn/server.conf
    ищем строку
    ;push “redirect-gateway”
    меняем на
    push “redirect-gateway def1″
    ;push “dhcp-option DNS 10.8.0.1″
    меняем на
    push “dhcp-option DNS 10.8.0.1″
    ;max-clients 100
    меняем на
    max-clients 10 потому как 100 клиентов мы не хотим, нам 2 надо но на будущее сделаем запас
    строки
    ;user nobody
    ;group nobody

    раскомментируем в
    user nobody
    group nobody строку
    verb 3
    меняем на
    verb 0 потому как мы не хотим чтобы лог велся подробный
    переписываем скрипт старта сервера и добавляем его в автоматический старт при загрузке

    cp /usr/local/src/openvpn-2.0.7/sample-scripts/openvpn.init /etc/rc.d/init.d/openvpn

    chkconfig --add openvpn

    запускаем openvpn
    service openvpn start
    Еще один этап завершили. Но это еще не все.
    Теперь нужно настроить наш выделенный сервер чтобы все наше хозяйство работало.
    Для начала включаем форвардинг пакетов:
    vi /etc/sysctl.conf
    находим строку
    net.ipv4.ip_forward = 0
    и меняем ее на
    net.ipv4.ip_forward = 1
    эта строка у нас говорит ядру включить форвардинг пакетов. Но этот параметр сработает только после перезагрузки сервера, а нам естественно нужно чтобы система заработала прямо сейчас.
    Для этого также есть хитрая команда:

    echo "1" > /proc/sys/net/ipv4/ip_forward

    Теперь нам надо включить трансляцию адресов (NAT) чтобы пакеты от клиентской машины попадая на наш выделенный сервер могли уйти в Интренет, ну и соответственно возвращались назад.
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    Теперь нам надо сохранить наши настройки таблицы iptables:
    iptables-save > /etc/sysconfig/iptables
    Теперь при перезагрузке нашего сервера правила iptables будут загружаться автоматически (конечно при условии что на нашем выделенном сервере выбран автоматический старт службы iptables). Проверить это можно командой:

    chkconfig --list iptables

    Результат вывода такой:
    iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    Это значит, что для уровня запуска 3 старт службы iptables разрешен.

    Все! На этом настройка нашего OpenVPN сервера закончена. Но это еще не все!

    Теперь нам нужно настроить клиентскую часть OpenVPN. Рассмотрим самый простой вариант инсталляции клиентской части OpenVPN под Windows XP.
    Mathias Sundman разработал очень полезный продукт OpenVPN GUI for Windows для упрощения нам жизни :-). Лезем к нему на сайт, качаем и инсталируем http://openvpn.se/files/install_packages/openvpn-2.0.7-gui-1.0.3-install.exe
    После инсталляции пакета в System Tray появляется соответствующий значек, похожий на значек удаленного доступа по модему.
    Вернемся к вопросу настройки нашего OpenVPN сервера. Помните, мы там генерировали ключи. Так вот именно сейчас они нам и понадобятся. А именно для клиента client1 нам нужны следующие файлы:
    ca.crt
    client1.crt
    client1.key

    На нашем сервер они лежат в папке /etc/openvpn. Копируем их оттуда любым способом на свою клиентскую машину. На сайте OpenVPN на эту тему написано, что копировать ключи очень рекомендуется через защищенные каналы свзи, например с помощью scp или sftp из пакета OpenSSH. Это верно. Но в крайнем случае, можно их и по почте послать и по ftp скачать. Дело Ваше.
    Далее создаем для примера на нашем диске С папку vpn и копируем туда наши ключи. Затем из папки C:\Program Files\OpenVPN\sample-config\ копируем файл client.ovpn в папку C:\Program Files\OpenVPN\config\ и открываем его на редактирование. Ищем строку
    remote my-server-1 1194
    Меняем на
    remote xxx.xxx.xxx.xxx 1194 где xxx.xxx.xxx.xxx это ip адрес нашего выделенного сервера.
    Ищем строки
    ca ca.crt
    cert client.crt
    key client.key

    и меняем для нашего случая на
    ca с:\\vpn\\ca.crt
    cert с:\\vpn\\client1.crt
    key с:\\vpn\\client1.key

    Сохраняемся, потом жмем правой кнопкой мыши на значке OpenVPN в System Tray и выбираем Connect.
    В общем на этом все. Теперь Вы в сети Интернет работаете от ip адреса Вашего выделенного сервера, причем канал между Вами и сервером шифруется с помощью SSL и трафик сжимается с помощью LZO real-time compression library.

    Некоторые дополнения к теме OpenVPN.

    Для проверки шифрования канала можно воспользоваться утилитой tcpdump и послушать, что именно проходит через наши интерфейсы например запустив ping -t google.com с клиентской (в нашем случае windows машины):
    tcpdump -i tun0 -lenx для прослушивания интерфейса tun0:

    07:35:39.039836 > ip 76: IP 64.233.167.99 > 10.8.0.6: icmp 40: echo reply seq 52992
    0×0000: 4500 003c 5024 0000 f501 8342 40e9 a763 E..

    0×0010: 0a08 0006 0000 825b 0400 cf00 6162 6364 …….[….abcd
    0×0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
    0×0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghi
    07:35:39.935597 < ip 76: IP 10.8.0.6 > 64.233.167.99: icmp 40: echo request seq 53248
    0×0000: 4500 003c 502d 0000 8001 f839 0a08 0006 E.. 0×0010: 40e9 a763 0800 795b 0400 d000 6162 6364 @..c..y[….abcd
    0×0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
    0×0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghi
    07:35:40.039872 > ip 76: IP 64.233.167.99 > 10.8.0.6: icmp 40: echo reply seq 53248
    0×0000: 4500 003c 502d 0000 f501 8339 40e9 a763 E.. 0×0010: 0a08 0006 0000 815b 0400 d000 6162 6364 …….[….abcd
    0×0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
    0×0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghiВидим, что пакеты не шифрованы, но ведь так и надо для этого интерфейса :-)
    Теперь посмотрим как шифруется канал между клиентской машиной и нашим сервером по интерфейсу eth0:

    tcpdump -i eth0 udp port 1194 -lenx смотрим

    07:49:27.636106 00:13:8f:a3:3c:bf > 00:0c:db:b6:21:00, ethertype IPv4 (0×0800),
    length 143: IP ss.ss.ss.ss.1194 > cc.cc.cc.cc.4286: UDP, length 101
    0×0000: 4500 0081 acc4 4000 4011 2e6d 5995 c3a1 E…..@.@..mY…
    0×0010: 52d1 ef32 0bd6 10be 006d 2773 3022 cd46 R..2…..m’s0″.F
    0×0020: fdbe bd8e eb73 1d90 ff19 14a3 f2a6 a484 …..s……….
    0×0030: b34d 227c 0dc8 3115 f6bd 9f68 04b4 5b6d .M”|..1….h..[m
    0×0040: 9f9e 5ff1 f8a0 e8de 5963 f8de 41fc 66ac .._…..Yc..A.f.
    0×0050: f652
    07:49:28.647961 00:13:8f:a3:3c:bf > 00:0c:db:b6:21:00, ethertype IPv4 (0×0800),
    length 143: IP ss.ss.ss.ss.1194 > cc.cc.cc.cc.4286: UDP, length 101
    0×0000: 4500 0081 acc5 4000 4011 2e6c 5995 c3a1 E…..@.@..lY…
    0×0010: 52d1 ef32 0bd6 10be 006d 3ee2 3001 88d0 R..2…..m>.0…
    0×0020: 19de 5eb9 6ece ee5f 4088 16a0 7ccb fed4 ..^.n.._@…|…
    0×0030: c097 7c7e c546 9cd5 3c88 960e d87d dfdf ..|~.F..< ….}..
    0×0040: 931f d1b5 b620 9fd1 6e70 898e 9753 aaeb ……..np…S..
    0×0050: 2337

    где ss.ss.ss.ss адрес нашего сервера, а cc.cc.cc.cc адрес нашего клиента.
    Как видно из дампа наш канал зашифрован.

    Рейтинг@Mail.ru

    железные металлические двери; www hoodia

    Народная медицина на Сайте Советов - sitesovetov.ru
    Ищете где купить электрику? выключатели ABB со складов в Москве

    86 Comments


    1. А почему бы просто не поставить openvpn из rpm пакета?

      Quote | Posted September 1, 2006, 1:08 pm

    2. А потому что его во первых я стараюсь писать вещи подходящие для наибольшего количества версий linux, а во вторых потому что в стандартной поставке CentOS 4 его нет. :-)

      Quote | Posted September 1, 2006, 1:40 pm

    3. Открой для себя DAG репозитарий, узнаешь много нового ;)

      Quote | Posted September 2, 2006, 12:12 pm

    4. Огромное спасибо Вам за упоминание о репозитарии DAG. Должен признаться, что о нем до сегодняшнего дня ничего не слышал, в основном пользовался Freshrpms и Livna. Действительно, в DAG есть пакеты, которых нет в Freshrpms и Livna. Еще раз спасибо.

      Quote | Posted September 4, 2006, 8:08 am

    5. Отличная статья получилась.
      Ставил на Дебиан. Все работает.
      как бы самого себя посниффить чтобы убедиться в шифровке данных?

      Quote | Posted September 10, 2006, 1:40 am

    6. Спасибо за положительный отзыв к моей статье! А насчет снифинга - если в логе openvpn нет никаких ошибок - то канал точно шифруется :-). А вообще можно воспользоваться утилитой tcpdump для перехвата трафика по порту 1194, и последующего его анализа.

      Quote | Posted September 11, 2006, 9:14 am

    7. [root@server easy-rsa]# ./vars
      NOTE: when you run ./clean-all, I will be doing a rm -rf on /usr/local/src/openvpn-2.0.7/easy-rsa/keys
      [root@server easy-rsa]# ./clean-all
      you must defne KEY_DIR
      [root@server easy-rsa]# ./build-ca
      you must define KEY_DIR

      что-то я запутался :( создаю директорию keys результат тотже

      Quote | Posted October 8, 2006, 3:53 pm

    8. Пробовал еще, не получается, что-то гдето упустилось :( помогите советом.

      Quote | Posted October 16, 2006, 3:31 pm

    9. Andrey!
      не ./vars
      а
      . ./vars
      Попробуй так.

      Quote | Posted October 17, 2006, 8:27 am

    10. the article is good, in fact i’ve installed it by myself using a doc from the openvpn site. but if i had found it before i would have use it. one comment:
      it’s better to use openvpn-2.0.9-gui-1.0.3-install.exe from http://openvpn.se/download.html because this client is free from old vulnerabilitys.

      Quote | Posted October 22, 2006, 6:19 am

    11. Спасибо, получилось :)

      Quote | Posted October 30, 2006, 7:16 pm

    12. Увы, у меня не выходит :(
      # ../vars
      ../vars: Команда не найдена.
      оболочка - tcsh
      в чем проблемма? Подскажите пожалуйста.

      Quote | Posted December 9, 2006, 11:23 pm

    13. А ты просто в первой строке измени на тот шелл,который у тебя в наличии, а то там по умолчанию стоит #!/bin/bash

      Quote | Posted December 25, 2006, 2:48 pm

    14. Всё откомпилировал, создал все ключи, настроил конфиг. При попытке запустить — FAILED.
      Заметил такую странную вещь: когда файл конфига удаляю из /etc/openvpn , то запускается OK (как при этом работает не проверял, т. к. очевидно что запустить надо всё же с конфигом). Думал может ошибка в конфиге, закомментил его весь — всё равно не запускается. Удалил из него всё (сделал файл нулевого размера) — такая же хрень. Стоит удалить его вообще — опять запускается OK. Чтобы это всё могло означать?

      Quote | Posted January 25, 2007, 5:16 pm

    15. To Lexx:
      Вероятнее всего команда ./configure выдала ошибку и поэтому сам конфиг и не создался. Соответственно команда make и имеет такой вывод. Посмотри внимательно что тебе выдает ./configure и исправь ошибки.

      Quote | Posted January 27, 2007, 10:16 am

    16. To Anton:
      В этом случае сложно что-то сказать наверняка. Надо смотреть логи, конфиг сам и так далее. Так что tail /var/log/messages для начала.

      Quote | Posted January 27, 2007, 10:21 am

    17. Cannot open dh1024.pem
      Посмотри у тебя такой файл dh1024.pem есть? Правильно ли прописан путь до него.

      Quote | Posted January 27, 2007, 12:25 pm

    18. Все прекрасно, осталось толко TLS подключить
      вот статья получше
      http://www.zloy.org/news_n918_desc-Nastroika-VPN-na-osnove-OpenVPN.html

      Quote | Posted February 2, 2007, 3:42 pm

    19. Долго я искал такую статью!
      Все понятно расписано афтару спасибо!

      Quote | Posted February 6, 2007, 4:42 pm

    20. аналогично:
      [root@122 easy-rsa]# ../vars
      -bash: ../vars: is a directory

      в чем проблема? =(

      Quote | Posted March 22, 2007, 6:20 pm

    21. получилось сгенерировать ключи, а вот стартануть процесс не получается =(
      service openvpn start
      Starting openvpn: [FAILED]

      Quote | Posted March 23, 2007, 10:46 am

    22. Обнаружил причину:
      Fri Mar 23 05:04:59 2007 Cannot load certificate file server.crt: error:0906D06C:PEM routines:PEM_read_bio:no start line: error:140AD009:SSL routines:SSL_CTX_use_certificate_file:PEM lib
      Заново генерить серты чтоль?

      Quote | Posted March 23, 2007, 4:05 pm

    23. Я думаю что проблема либо в сертификатах, либо в их местоположении.

      Quote | Posted March 23, 2007, 5:45 pm

    24. Именно, сгенерировал заново сертификаты, теперь вот такое выдает при старте: TCP/UDP: Socket bind failed on local address 100.100.100.100:1194: Cannot assign requested address

      Quote | Posted March 24, 2007, 1:00 pm

    25. […] Vpn - это хорошо. Но частенько пользователям не хочется заморачиваться с настройками клиентской части, ин необходимо просто посерфить по сети или, к примеру, подключить свою аську скрыв свой реальный ip. Для анонимной работы в сети и предназначен socks сервер. В своем браузере, в настройках подключения, Вы указываете адрес socks сервера, его порт, и все. Весь трафик от Вашего браузера проходит через socks сервер, посещение страниц таким образом идет от ip адреса сервера. Таким образом можно скривать свой ip адрес от других, а также посещать ресурсы, которые закрыты к посещению для руссих, белорусов, украинцев и так далее. Например участвовать в американских опросах общественного мнения. Что-то вступление затянулось, приступим к установке socks сервера dante. […]

      Quote | Posted June 14, 2007, 2:49 pm

    26. статья получилась универсальная.
      ставил себе на Debian Sarge.
      особо в детали не вникал, но все сразу заработала.
      автору +1

      Quote | Posted June 16, 2007, 3:41 pm

    27. Спасибо Вам olege за положительный отзыв о моей статье. Вашими отзывами в общем-то и живу. Частенько руки опускаются и кажется что моя писанина совершенно никому не нужна. Но после таких отзывов просто становится приятно и вновь появляются силы, чтобы написать еще что-нибудь необходимое.

      Quote | Posted June 16, 2007, 4:29 pm

    28. Привет, Admin.
      Я так и не понял, что такое “def1″ в строке push “redirect-gateway def1″ ?

      Quote | Posted June 28, 2007, 5:34 pm

    29. +1
      Чувак респект и уважуха тебе. Поднял на Slack 11
      Все прекрасно работает
      еШо раз респект!!!

      Quote | Posted July 6, 2007, 10:48 am

    30. Да пожалуйста! Заходи почаще :-)

      Quote | Posted July 6, 2007, 10:54 am

    31. статья конечно очень поездатая =)

      но есть вопрос: как сделать так чтоб вместо копирования клиенту 3 файлов с ключами, обходиться тока одним .p12 файлом ???

      —————————————————————–
      сервис vpnservice.ru высылает юзерам тока один файл
      и конфиг для openVPN GUI выглядит так
      —————————————————————–
      remote vpnservice.ru 1194
      client
      dev tap
      ping 10
      proto tcp-client
      tls-client
      pkcs12 X:\\progra~1\\openvpn\\config\\d7645464546.p12
      verb 5
      pull
      —————————————————————–

      Quote | Posted July 31, 2007, 9:34 pm

    32. Хороший вопрос. Надо будет посмотреть. Как то не рыл в ту сторону.

      Quote | Posted August 12, 2007, 9:12 pm

    33. […] В одной из предыдущих заметок я описал простую установку OpenVPV. Судя по количеству комментарие…тут […]

      Quote | Posted August 19, 2007, 10:13 pm

    34. нахожусь в директории easy-rsa, запускаю . ./vars или ./vars или ../vars не один вариант не работает, bash находится в /bin/bash
      иногда пишет bash: no such file or directory, а также bash: access denied, иногда
      NOTE: when you run ./clean-all, i will be doing a rm -rf on
      /usr/local/src/openvpn-2.0.7/easy-rsa/keys

      потому что потом при запуске ./clean-all
      you must define KEY_DIR
      все равно
      что делать?

      Quote | Posted August 21, 2007, 4:06 pm

    35. правишь ./vars
      делаешь ’source ./vars’ - тада из ./vars в переменные окружения возмутся дефолтные значения
      потом ‘build-ca’ и тд

      Quote | Posted August 22, 2007, 10:17 am

    36. Да там проблема в другом была. Там надо было во первых выйти с Midnight Commander а во вторых запускать правильно в смысле набирать “точка пробел точка слеш vars” :-)

      Quote | Posted August 22, 2007, 10:25 am

    37. Отличные статьи, есть одно замечание и одна просьба…
      Замечание: В форме ответа (где я сейчас пишу) в поле ввода ника буквы преобразуются в верхний регистр. Фтопку! Чуть капс не сломал :)

      Просьба: как то же самое сделать для проброса одного из реальных айпи с сервера на клиента? Т.е. чтобы запустив на клиентской машине скажем фтп сервер - он был виден из инета без проброса портов. Спасибо :)

      Quote | Posted September 6, 2007, 6:42 pm

    38. Здравствуйте! По поводу того чтобы выставить порт наружу. Мне кажется что смысла использовать для этих целей OpenVPN нет. Чем Вам так не угодил iptables не знаю. Там это делается двумя командами. В теории такое сделать конечно можно, но вопрос зачем ТАК извращаться. но все равно без iptables не обойтись.

      По поводу больших букв. Спасибо. Подумаю. Может шаблон сменю. Может в коде поправлю.

      Quote | Posted September 7, 2007, 10:11 am

    39. Ммм… вы меня наверное неправильно поняли… я хочу на клиентскую машину “притащить” одну (несколько) реальных айпи с дедика. Т.е. чтобы клиент был не за маскарадом (нат), а имел реальный адрес. Мне делали подобную фичу при помощи линуксовой машины (через одну сетевушку она соединялась с инетом, впн клиент “забирал” небольшую подсеть и “вешал” её на вторую сетевушку, к которой в свою очередь были присоединены ещё несколько компов, причем у каждого был реальный айпи. Такую конфигурацию я скорее всего даже сумею настроить… интересует как сделать подобное без промежуточного рутера. Т.е. чтобы сетевушка впн-клиента сразу получала реальный адрес… и по этому адресу пинговался уже не дедик, а именно клиент (снаружи).

      Quote | Posted September 7, 2007, 2:53 pm

    40. Понял. Вопрос хороший на самом деле. :-) К сожалению такого никогда не делал. Думаю что если указать ип адрес не из сети 10.0.0.0 а реальный выделенный для этого сервера но не привязанный к сетевой карте, то такой механизм возможно реализовать. Но точно сказать не могу. Надо экспериментировать, а времени к сожалению нет.

      Quote | Posted September 7, 2007, 3:01 pm

    41. Делал всё по инструкции, проблемы с ключами:

      Tue Sep 18 15:29:34 2007 Cannot load certificate file с:\vpn\client1.crt: error:02001003:system library:fopen:No such process: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib

      Tue Sep 18 15:29:34 2007 Exiting

      Я даже конфигурил и полностью собирал опять, генерил 2 раза уже ключи, и всё равно опять тоже самое. Что может быть? ):

      Quote | Posted September 18, 2007, 3:37 pm

    42. Скорее всего неверно прописан путь до ключей.
      В Вашем случае скорее всего писать надо в конфиге
      ca с:\\vpn\\client.crt
      То есть я не опечатался когда писал две косых а не одну в пути. Так надо.

      Quote | Posted September 18, 2007, 3:44 pm

    43. Я сделал проще, просто закинул в папку configs. Не указывал путь всё запустилось лог из клиента:

      Tue Sep 18 20:45:54 2007 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
      Tue Sep 18 20:45:54 2007 TLS Error: TLS handshake failed
      Tue Sep 18 20:45:54 2007 TCP/UDP: Closing socket
      Tue Sep 18 20:45:54 2007 SIGUSR1[soft,tls-error] received, process restarting
      Tue Sep 18 20:45:54 2007 Restart pause, 2 second(s)
      Tue Sep 18 20:45:56 2007 IMPORTANT: OpenVPN’s default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
      Tue Sep 18 20:45:56 2007 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
      Tue Sep 18 20:45:56 2007 Re-using SSL/TLS context
      Tue Sep 18 20:45:56 2007 LZO compression initialized
      Tue Sep 18 20:45:56 2007 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
      Tue Sep 18 20:45:56 2007 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
      Tue Sep 18 20:45:56 2007 Local Options hash (VER=V4): ‘41690919′
      Tue Sep 18 20:45:56 2007 Expected Remote Options hash (VER=V4): ‘530fdded’
      Tue Sep 18 20:45:56 2007 UDPv4 link local: [undef]
      Tue Sep 18 20:45:56 2007 UDPv4 link remote: 195.222.70.230:1194

      Только мне не совсем ясно, почему мне не выдался IP и какой IP будет внутри сети у моего сервера?

      ipconfig /all

      {5758962B-3975-4CE8-9211-E5E7B4B316BE} - Ethernet адаптер:

      Состояние сети . . . . . . . . . : сеть отключена
      Описание . . . . . . . . . . . . : TAP-Win32 Adapter V8 - Минипорт план
      ировщика пакетов
      Физический адрес. . . . . . . . . : 00-FF-57-58-96-2B

      Quote | Posted September 18, 2007, 8:47 pm

    44. Хорошая статья:) Вопрос у меня такой:
      Достался мне в наследство уже настроеный openvpn. Кинулся я делать ключи для клиентов и обнаружил, что ca.crt у меня есть, а вот ca.key нет……
      Он вообще участие при подключении пользователей принимает или только в создании сертификатов?
      Можно ли как-то сформировать новый сa.key так что бы старые клиентские ключи продолжали действовать?

      Quote | Posted September 27, 2007, 3:12 pm

    45. ca.key не требуется для клиентов, он нужен только для сервера, но без него сгенерировать новые ключи никак не получится. А если сгенерировать новый ca.key, то опять же сгенерится новый ca.crt, который нужен всем. Вот такой замкнутый круг. :( Поэтому, если клиентов немного, то лучше все сгенерировать по новой.

      Quote | Posted September 28, 2007, 8:50 am

    46. Действительно “замкнутый круг”:) Придется генерить заново. Спасибо за ответ!

      Quote | Posted September 28, 2007, 1:26 pm

    47. Всегда пожалуйста! :)

      Quote | Posted September 28, 2007, 1:28 pm

    48. […] одной из предыдущих заметок я описал простую установку OpenVPV. Судя по количеству комментариев - заметка реально […]

      Quote | Posted October 12, 2007, 3:36 pm

    49. Возможно, не совсем в тему, но у меня в ходе выполнения установки по этому сценарию возникла проблема: сервер не стартует. Система centos. В чем может быть проблема?
      dmesg |grep -i openvpn
      ничего не выдает

      пробовал ставить socks-сервер, но он при инсталяции ругается на отсутствие libsocket в системе. Может ли в этом быть причина проблемы с openvpn?

      Quote | Posted October 17, 2007, 9:25 pm

    50. Что то страное. Вроде все поставилось, служба в линухе запускается, опенвпн-гуи присоединяется к серверу, но ни один сайт не грузится.

      Quote | Posted October 21, 2007, 3:09 pm

    51. Такая проблема часто возникает когда на сервера не настроен bind. Попробуйте после установки соединения пропинговать сначала собственный сервер а потом к примеру google.com по одному из его ip адресов. Например:
      ping 72.14.207.99
      Если пинги проходят, то проблема явно в настройке bind на сервере. Если же нет, то проблема скорее всего в маршрутизации.

      Quote | Posted October 21, 2007, 8:13 pm

    52. Поставил OpenVPN на Linux Mandriva соединение есть, файлики передаёт. только одна проблема, скорость подключения показывает 10Мб/с, при этом скорость скачивания файлов 94 кб/с. При такой скорости 1С вообще отказывается работать. Подскажите как увеличить скорость!

      Quote | Posted October 25, 2007, 10:48 am

    53. Сложно судить почему скорость маловата. Вариантов много. Например слабый компьютер.
      Для примерной оценки скорости работы openvpn можно сделать следующее:
      на сервере где установлен openvpn сервер выполняем команду:
      openssl speed bf-cbc
      где bf-cbc - это метод шифрования. По умолчанию шифрование производится с помощью blowfish алгоритма.
      По результатам теста можно оценить максимальную скорость.
      Это один из вариантов.

      Quote | Posted October 25, 2007, 12:33 pm

    54. причём скорость 10 мб/с показывает на виндовых машинах у TAP-WIN32 virtual ethernet adapter-a, на linuxe сетевая реалтек 8139 встроенная

      Quote | Posted October 25, 2007, 3:44 pm

    55. Смотрите тогда клиентские машины. С других машин не пробовали подключаться? Возможно на клиентской стороне проблема.

      Quote | Posted October 25, 2007, 3:53 pm

    56. у меня стоят 6 машин виндовых, на всех пробовал… всё равно пишет 10 мб/с. Ну не может чтобы на всех клиентах одинаково было. А можно каким нить образом изменить скорость tap0 адаптера. Если конектить две машины кабелем на одной скорость 10/100 а на второй 10/100/1000, то сеть будет максимум 100, так что я думаю дело не в виндовых клиентах. В инете находил намёки на это, но видимо это было на старые версии опенвпн. Там повышали скорость до гб.

      З.Ы. sever.conf выучил наизусть, только вот про скорость там ничего нет. openvpn брал 2.0.9 и 2.1_rс4 ставил из rpm пакетов т.к. мандрива упоно не хотела переваривать исходники. Может посоветуешь систему какую нить на которой эта штука работает.

      Quote | Posted October 25, 2007, 4:32 pm

    57. На CentOS 4.x ставиться на ура без проблем. Людям на debian ставил тоже без проблем. А винды какие? XP или 2000?

      Quote | Posted October 25, 2007, 4:39 pm

    58. винды XP-шные. Лан попробую сёня выкачать CentOS 4.
      А ты на CentOS 5 не пробовал ставить?

      Quote | Posted October 25, 2007, 4:49 pm

    59. на XP

      Quote | Posted October 26, 2007, 7:54 am

    60. А у меня такой вопрос: А если сервер не подключен, то клиент постоянно будет пытаться достучаться до него?? и тратить много трафика?? (клиентов мне надо поставить на машины с gprs модемами)

      Quote | Posted November 5, 2007, 9:32 pm

    61. И еще. У меня обратная ситуация. Т.е. серв. надо ставить на Windows, а клиент на Linux. Может поможете чем??? А то здесь все конечно подробно написано, но в моем случае я все таки без помощи обойтись не смогу)))

      Quote | Posted November 5, 2007, 9:38 pm

    62. млин не получается с xp зайти , на сервере все гуд установилось а вот дома не подключен кабель пишет ))) наверно ip какието неправильно вписал… не получается

      Quote | Posted December 18, 2007, 3:42 pm

    63. У меня для настройки IPTables стоит Firehol, то есть ручные правила для IPTables он игнорирует.
      Достаточно ли одного этого правила
      [b]iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE[/b]
      для того чтобы пакеты от клиентской машины попадая на наш выделенный сервер
      могли уйти в Интренет и соответственно возвращались назад.
      Может кто знает как это правило правильно прописать в FIREHOL?
      А то у меня коннект проходит, IP выдается, а запросы через сервер не идут.

      Quote | Posted December 21, 2007, 5:54 am

    64. К сожалению с Firehol не разбирался. Поэтому не смогу Вам помочь. :-(

      Quote | Posted December 28, 2007, 1:50 pm

    65. Не совсем понял описанную хронологию установки:

      > ./configure
      > После чего получаем ошибку такого вида:
      > LZO library available from http://www.oberhumer.com/opensource/lzo/
      > configure: error: Or try ./configure –disable-lzo
      > Это значит что у нас в системе нет библиотеки lzo с помощью которой происходит компрессия и декомпрессия нашего > трафика в реальном режиме времени. лезем на соответствующий сайт, качаем библиотеку и ставим:

      Т.е сначала нужно добиться указаной ошибки, а потом ставить по нормальному, или как?

      Quote | Posted January 1, 2008, 4:44 am

    66. Конечно же нет. Я указываю какие ошибки могут возникнуть при инсталляции наиболее часто. И как их решать.

      Quote | Posted January 1, 2008, 9:44 pm

    67. [root@serv src]# cd openvpn-2.0.7
      [root@serv openvpn-2.0.7]# ./configure
      checking for ifconfig… /sbin/ifconfig
      checking for ip… /sbin/ip
      checking for route… /sbin/route
      checking build system type… i686-pc-linuxoldld
      checking host system type… i686-pc-linuxoldld
      checking target system type… i686-pc-linuxoldld
      checking for a BSD-compatible install… /usr/bin/install -c
      checking whether build environment is sane… yes
      checking for gawk… gawk
      checking whether make sets $(MAKE)… no
      checking for gcc… no
      checking for cc… no
      checking for cc… no
      checking for cl… no
      configure: error: no acceptable C compiler found in $PATH
      See `config.log’ for more details.
      [root@serv openvpn-2.0.7]# make
      -bash: make: command not found

      в чем у меня может быть проблема?

      Quote | Posted January 3, 2008, 2:33 am

    68. У вас не установлен компилятор языка C. Его необходимо поставить командой:
      yum install gcc gcc-c++

      Quote | Posted January 3, 2008, 9:20 pm

    69. TCP/UDP: Socket bind failed on local address 100.100.100.100:1194: Cannot assign requested address

      при запуске выдает такую вот ошибку.
      уже задавали вопрос.. никто так и не объяснит? как это лечить

      Quote | Posted January 4, 2008, 4:20 pm

    70. очень хорошая, доходчивая статья. а я вот спросить хотел, мож кто посоветует где можно купить недорого дедик.

      Quote | Posted January 8, 2008, 1:15 pm

    71. Хорошая статьтья. Спасибо!

      Плохо только, что автор не дотянул статью до инструкции, а написал наполовину обзорную. :-)

      Опишу грабли на которые наступил я. Тем самым отвечу на несколько вопросов которые задавались выше:
      1. Примеры минимальных конфигов:

      1.1 Сервер:
      dev tap
      proto tcp
      server 10.0.3.0 255.255.255.0
      dh /etc/openvpn/dh1024.pem
      ca /etc/openvpn/ca.crt
      cert /etc/openvpn/server.crt
      key /etc/openvpn/server.key
      proto tcp
      port 15000
      user openvpn
      group openvpn
      comp-lzo
      verb 5

      1.2 Клиент:
      dev tap
      proto tcp
      remote 194.44.44.32
      port 15000
      client
      dh “C:\\Program Files\\OpenVPN\\config\\ dh1024.pem ”
      ca “C:\\Program Files\\OpenVPN\\config\\ca.crt”
      cert “C:\\Program Files\\OpenVPN\\config\\client2.crt”
      key “C:\\Program Files\\OpenVPN\\config\\client2.key”
      comp-lzo
      verb 3

      2. Грабли 1 !!! - server 10.0.3.0 255.255.255.0 , последняя цифра IP адреса 0.
      Иначе сервер не стартует! Следовательно IP сервера будет 10.0.3.1 клиентов последующие.

      3. Грабли 2!!! - Конфиг в линксе server.conf Если он отсутствует в директории /etc/openvpn, либо случайно назван как на виндовом сервере server.ovpn, сервер при старте (service openvpn start) говорит ОК, но на самом деле он не стартует!
      У меня при рабочем сервере –
      [root@web openvpn]# service openvpn status
      Status written to /var/log/messages

      4. Грабли 3!!! Указание пути в винде вот в таком формате - “C:\\Program Files\\OpenVPN\\config\\client2.key”

      5. Габли 4!!! Скрипты для генерации ключей тут - ./usr/share/openvpn/easy-rsa/2.0/, для вервии openvpn 2.09.

      6. Єто уже для облегчени жизни. Добаляем в авто загрузку -
      /sbin/chkconfig –level 345 openvpn on (Rad Hat, Fedora Core).

      7. Если сервер не стартует. Смотрим tail –f /var/log/messages

      8. Хорошая статья, но найти удалось только в кеш Гугла.
      http://209.85.129.104/search?q=cache:1TqBAdRF7L0J:https://zloy.org/news_n918_desc-Nastroika-VPN-na-osnove-OpenVPN.html+news_n918_desc-Nastroika-VPN-na-osnove-OpenVPN&hl=uk&ct=clnk&cd=1&gl=ru

      Вот пожалуй и все. Всем удачи.

      Quote | Posted January 9, 2008, 6:46 pm

    72. У меня такая проблема, когда запускаю VPN:
      Sat Jan 19 07:42:38 2008 Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
      Sat Jan 19 07:42:38 2008 Cannot allocate TUN/TAP dev dynamically

      Когда modprobe tun вот что:
      FATAL: Could not load /lib/modules/2.6.9-023stab040.1-smp/modules.dep: No such file or directory

      Что делать??????

      Quote | Posted January 19, 2008, 4:15 pm

    73. Уважаемый dr.gopher !!!
      Меня очень радует что на мой сайт заходят такие люди как Вы!!! Я горд этим! Побольше бы таких посетителей! Спасибо Вам за ценные и совершенно верные дополнения к моей заметке.

      Quote | Posted January 22, 2008, 9:33 pm

    74. каждый пятый пакет теряется. что бы это могло быть?

      XP - моя машинка,
      server - openvpn-сервер на Linux,
      host - удаленная тачка за сервером

      —— ping ——

      1. XP -> host = пакет теряется
      2. XP -> server = все ОК!
      3. server -> host = все ОК!

      —— tcpdump (при пинге 3) ——

      tap0 - интерфейс на меня
      xxx0 - интерфейс на инет

      XP -1-> tap0 -2-> xxx0 -3-> host

      host -4-> xxx0 -5-> tap0 -6-> XP

      из 10 пакетов 2 (всегда!) не фиксируются в точке 6.
      т.е. уходят ВСЕ пакеты, на обратном пути теряется пакет в точке 5.

      openvpn и свою тачку перегружал, фаервол на себе выключал - ниче не помогает.

      в kern.log при этом появляется:

      kernel: [5113008.397000] Inbound IN=xxx0 OUT=tap0 SRC=host DST=172.10.10.4 LEN=60 TOS=0×00 PREC=0×00 TTL=251 ID=16518 PROTO=ICMP TYPE=0 CODE=0 ID=512 SEQ=46082

      Quote | Posted March 13, 2008, 8:29 pm

    75. Добрый день!

      Когда следует ожидать решения упомянутого выше подхода?

      > “…как сделать так чтоб вместо копирования клиенту 3 файлов с ключами, обходиться тока одним .p12 файлом?… “

      Quote | Posted April 13, 2008, 12:24 pm

    76. Тут кто-то есть вообще?

      Quote | Posted April 16, 2008, 9:42 pm

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

      Quote | Posted April 18, 2008, 7:55 am

    78. den says:

      каждый пятый пакет теряется. что бы это могло быть?

      Возможно надо поиграться с tun-mtu 1500.
      1. Цифра на сервере и на клиенте должна совпадать.
      2. Проконсультируйтесь у провайдера, какой mtu лучше поставить. Как правило они называют рату тройку нужных вариантов.
      Удачи.

      Quote | Posted May 12, 2008, 1:16 pm

    79. при генерации ключа ./build-key client получается файл client.crt размером 0 байт
      вроде так не должно быть?
      и при попытке запустить пишет что не может загругить этот сертификат.

      Quote | Posted July 3, 2008, 4:47 pm

    80. спасибо, всё работает!

      а вот если я куплю дополнительный IP к своей vps, то можно вся организовать так, чтобы я к впн коннектился на один IP, а на сайтах везде светился второй?

      Quote | Posted July 13, 2008, 11:34 pm

    81. А для UNIX-VPS какие настройки не подскажите?

      Quote | Posted July 14, 2008, 9:08 am

    82. Ставлю все это богатсво на дебиане/ статья классная? но наступил я на грабли/ Уже второй раз и на разные/ Первый раз был когда в своем дебиане в следствии своей новичковости я поставил опенвпн как написано в этой статье make install и т/д надо было apt-get юзфть а то ничего не запускается!!! так как ручками не умею чистить а make uninstall не проканало решил переставить систему благо нечего было терять кроме 3-4 часов :) теперь вот така я трабла!
      SERVER5:/etc# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
      SERVER5:/etc# iptables-save > /etc/sysconfig/iptables
      bash: /etc/sysconfig/iptables: No such file or directory
      Ну нету у меня такой папки::( да и chkconfig –list iptables не канает/+ в начале chkconfig –add openvpn тж не сканало!!! ПРи этом все время пишет что нет такой кманды chkconfig какие будут предложения!!! Буду оч признателен

      Quote | Posted July 21, 2008, 8:44 am

    83. Статья удачная ! !! Ставил на Mandrive и на SUSE все нормально стало, но наткнулся на проблемку: каждый клиент при конекте к серверу получает 1 и тот же IP и либо первого выкидует, либо второй войти неможет.
      Подскажите в какую сторону смотреть
      klient.log
      Thu Jul 31 14:25:17 2008 [rud] Peer Connection Initiated with 111.111.111.111:5190
      Thu Jul 31 14:25:18 2008 SENT CONTROL [rud]: ‘PUSH_REQUEST’ (status=1)
      Thu Jul 31 14:25:18 2008 PUSH: Received control message: ‘PUSH_REPLY,route 10.10.10.0 255.255.255.0,redirect-gateway def1,dhcp-option DNS,route 10.10.10.0 255.255.255.0,ping 10,ping-restart 120,ifconfig 10.10.10.6 172.16.1.5′
      Thu Jul 31 14:25:18 2008 Options error: –dhcp-option: unknown option type ‘DNS’ or missing parameter
      Thu Jul 31 14:25:18 2008 OPTIONS IMPORT: timers and/or timeouts modified
      Thu Jul 31 14:25:18 2008 OPTIONS IMPORT: –ifconfig/up options modified
      Thu Jul 31 14:25:18 2008 OPTIONS IMPORT: route options modified
      Thu Jul 31 14:25:18 2008 OPTIONS IMPORT: –ip-win32 and/or –dhcp-option options modified
      Thu Jul 31 14:25:18 2008 netsh interface ip set address “VPN” static 10.10.10.6 255.255.255.252

      Quote | Posted July 31, 2008, 2:55 pm

    84. Салют, хорошая статья, хотя я всё сделал сам, но есть одно но! всё красиво коннектится, но когда я проверяю IP, то мне показывают IP моей тачки, а не сервака. Я так понял проблемы где то в NAT настройках, хотя как мог всё настроил. Может есть какие нить мысли по этому поводу?

      Quote | Posted August 10, 2008, 11:47 am

    85. Отличная статья, спасибо, установил с Вашей помощью ВПН-сервер на WinXP.
      Правда, не могу понять, почему получается в итоге такая низкая скорость между компами - без ВПН скорость минимум 200кб/сек, а через ВПН - не более 40кб/сек(.
      Производительность компов неплохая, на процессорах Core2Duo…

      Quote | Posted October 14, 2008, 12:19 pm

    86. Очень хорошая статья, автору +1.
      Настроил openvpn сервер на Mandriva 2009, клиенты коннектятся с виндовых машин. Очень пригодились дополнения dr.gopher’а. Правда есть одна небольшая проблема низкая скорость, но это позже…

      Quote | Posted November 9, 2008, 1:51 am

    Leave a reply

    *
    To prove that you're not a bot, enter this code
    Anti-Spam Image