Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Security —> OpenVPN

Openvpn + FreeBSD

Автор: UA.


Имеем: FreeBSD 6.2, инет
Надо: ВПН-сервер для доступа из внешнего мира к корпоративной сети


В данной статье пошагово расписана настройка Openvpn-сервера (со статическими ключами и сертификатами) и Windows-клиента (Openvpn-gui)

Исходные данные:
Свежеустановленая FreeBSD 6.2,
rl0=22.22.22.22/30 - сетевая карта смотрящая к провайдеру (маска произвольная)
rl1=192.168.1.1/24 - сетевая смотрящая внутрь локальной сети за FreeBSD 6.2
(всё необходимое для работы потянется из репозитария)

1. Устанавливаем и конфигурируем OpenVPN


наиболее простой и "правильный" метод  - ставим всё из портов
#cd /usr/ports/security/openvpn
#make 
#make install

Всё необходимое поставлено, переходим к конфигурированию.Необходимо создать сертефикаты и ключи.Заходим в /usr/local/share/doc/openvpn/easy-rsa/ и изменяем файл vars.Лично я оставил все параметры дефолтовыми, кроме директории куда складывать сгенерированное "добро" - изменил в этом файле строку export KEY_DIR=$D/keys на export KEY_DIR=$D/keys/server, соответственно создав такую же дирректорию /usr/local/share/doc openvpn/easy-rsa/keys/server. Собственно создаём "ДОБРО" - сертификаты и ключи
# cd /usr/local/share/doc/openvpn/easy-rsa/
# (в этом файлике изменяете путь к ключам)
#ee ./vars
# меняем строку KEY_DIR=$D/keys на KEY_DIR=$D/keys/server 

Внимание! Если у вас по умолчанию не баш, то перед следующими операциями нужно набрать в консоли "sh", советую для "100-%-ного" результата всё же наверняка сделайте это, даже если у вас шелл sh. Загружаем переменные в оболочку:

#sh
#. ./vars

Очищаем от старых сертификатов и ключей папку keys/server и создаем серийный и индексные файлы для новых ключей
#./clean-all

Создаём сертификат. При создании сертификата вводим необходимую инф-цию (настоятельно рекомендую делать как тут, а потом уже разбиратся что к чему - большинство проблемм(!) связанно именно с именами при конфигурировании на первом этапе)
Привожу листинг с консоли
#./build-ca (Создаем Certificate Authority для сервера)
Generating a 1024 bit RSA private key
....................++++++
...++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
#Страна
Country Name (2 letter code) [UA]:UA
#Провинция
State or Province Name (full name) [Kiev]:Kiev
#Город
Locality Name (eg, city) [Kiev]:Kiev
#Название компании(!)
Organization Name (eg, company) [x]:server
#Отделение компании
Organizational Unit Name (eg, section) []:server
#ВОТ ТУТ ВНИМАТЕЛЬНО - ЭТО ИМЯ МАШИНЫ ДЛЯ КОТОРОЙ
# ГЕНЕРИРУЕМ СЕРТИФИКАТ (имя не в полном смысле
# -имя как идентификатор)
Common Name (eg, your name or your server's hostname) []:server
#Почт адрес 
Email Address [root@localhost]: 

Не факт что у всех, но встречал подобное: при попытке создать сертификат - была ругня на отсутствующие файлы index.txt и serial. В /usr/local/share/doc/openvpn/easy-rsa/keys/server - создаём файлы (пустой и с "нулевым" содержимым соответственно)

#echo "">/usr/local/share/doc/openvpn/easy-rsa/keys/server/index.txt
#echo "00">/usr/local/share/doc/openvpn/easy-rsa/keys/server/serial

Создаем сертификат X.509 для сервера. Всё аналогично заполняем(точно так же) + cтроки в котрых указываем пароль и имя организации (!)
#./build-key-server server
# Страна
Country Name (2 letter code) [UA]:UA
# Провинция
State or Province Name (full name) [Kiev]:Kiev
# Город
Locality Name (eg, city) [Kiev]:Kiev
# Название компании(!)
Organization Name (eg, company) [x]:server
# Отделение компании
Organizational Unit Name (eg, section) []:server
# ВОТ ТУТ ВНИМАТЕЛЬНО - ЭТО ИМЯ МАШИНЫ
Common Name (eg, your name or your server's hostname) []:server 
# Почт адрес 
Email Address [root@localhost]:
Please enter the following 'extra' attributes
to be sent with your certificate request
# пароль
A challenge password []:123456789
# название организации
# (как и в создании корневого сертификата)
An optional company name []:server

в конце соглашаемся и подписываем сертификат, отвечая "yes" :-)
Создаём ключ для клиента
#./build-key client
Generating a 1024 bit RSA private key
.........++++++
.......++++++
writing new private key to 'client.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:UA
State or Province Name (full name) [Kiev]:Kiev
Locality Name (eg, city) [Kiev]:Kiev
Organization Name (eg, company) [server]:server
Organizational Unit Name (eg, section) []:server
Common Name (eg, your name or your server's hostname) []:client
Email Address [root@localhost]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456789
An optional company name []:client

Будьте внимательны при заполнени данных сертификатов, поле Common Name обязательно к заполнению, причем для сервера оно должно быть одно, а для клиента другое. Например в поле Common Name при генерации сертификата X.509 для сервера можно написать server, а для клиента соотвественно client

Создаем ключ Диффи Хельман(о нем можно почитать здесь: http://www.rsasecurity.com/rsalabs/node.asp?id=2248)
# ./build-dh

Теперь выходим из sh написав команду "exit". И в конце создаем ключ для tls-аутификации
# openvpn --genkey --secret keys/server/ta.key

После всех этих манипуляций в папке keys/server получается много файлов:

  • ca.crt - Главный CA сертификат, этот файл нужен и клиенту и серверу
  • dh1024.pem - ключ Диффи Хельман, этот файл нужен только серверу
  • server.crt - Сертификат сервера, нужен только серверу
  • server.key - Ключ сервера, нужен только серверу (СЕКРЕТНЫЙ файл)
  • client.crt - Сертификат клиента, нужен только клиенту
  • client.key - Ключ клиента, нужен только клиенту (СЕКРЕТНЫЙ файл)
  • ta.key - TLS-ключ, нужен и клиенту и серверу

    Следовально серверу достаются файлы ca.crt, dh1024.pem, server.crt, server.key, ta.key, а клиенту ca.crt, dh1024.pem,client.crt, client.key, ta.key
    Самое сложное позади smile.gif

    2.Настраиваем сервер


    Создаём 3 директории
    /usr/local/etc/openvpn
    /usr/local/etc/openvpn/keys
    /usr/local/etc/openvpn/ccd

    Так же для удобства скопируем все ключи в /usr/local/etc/openvpn/keys (ca.crt, dh1024.pem, server.crt, server.key, ta.key).

    Создаем конфигурационный файл server.conf следующего содержимого:
    
    #порт на котором работает сервер
    port 2000
    # протокол - советую udp
    proto udp
    # - используемый тип устройства и номер 
    dev tun0
    #указываем файл CA
    ca /usr/local/etc/openvpn/keys/ca.crt
    #указываем файл с сертификатом сервера
    cert /usr/local/etc/openvpn/keys/server.crt
    #указываем файл с ключем сервера
    key /usr/local/etc/openvpn/keys/server.key
    #указываем файл Диффи Хельман
    dh /usr/local/etc/openvpn/keys/dh1024.pem
    #задаем IP-адрес сервера и маску подсети
    # (виртуальной сети) - можно произвольную, (я выбрал такую)
    server 10.10.200.0 255.255.255.0
    #задаем МАРШРУТ который передаём клиентту
    # и маску подсети для того чтобы он "видел"
    # сеть за опенвпн сервером (сеть 192.168.1.0/24)
    push "route 192.168.1.0 255.255.255.0"
    # указываем где хранятся файлы с
    # настройками IP-адресов клиентов
    client-config-dir ccd
    # добавляем маршрут сервер-клиент
    route 10.10.200.0 255.255.255.252
    # включаем TLS аутификацию
    tls-server
    # указываем tls-ключ, и указываем 0 для сервера, а 1 для клиента
    tls-auth keys/ta.key 0
    # таймаут до реконекта
    tls-timeout 120 
    auth MD5 #
    # включаем шифрацию пакетов
    cipher BF-CBC
    keepalive 10 120
    # сжатие трафика
    comp-lzo
    # максимум клиентов
    max-clients 100
    user nobody 
    group nobody
    # Не перечитывать ключи после получения
    # SIGUSR1 или ping-restart
    persist-key
    # Не закрывать и переоткрывать TUN\TAP
    # устройство, после получения
    # SIGUSR1 или ping-restart
    persist-tun
    # логгирование (не забудьте создать эту дирректорию /var/log/openvpn/)
    status /var/log/openvpn/openvpn-status.log
    log /var/log/openvpn/openvpn.log
    # Уровень информации для отладки
    verb 3
    

    В дирректории /usr/local/etc/openvpn/ccd создаем файл client (имя файла - имя которому выдан сертификат) следующего содержания
    #echo "ifconfig-push 10.10.200.2 10.10.200.1" > \
    ? /usr/local/etc/openvpn/ccd/client
    

    Сервер готов
    для автостарта при загрузке Openvpn-сервера -внесём в /etc/rc.conf
    openvpn_enable="YES" # YES or NO
    openvpn_if="tun" # driver(s) to load, set to "tun", "tap" or "tun tap"
    openvpn_configfile="/usr/local/etc/openvpn/server.conf" # --config file
    openvpn_dir="/usr/local/etc/openvpn" # --cd directory 
    

    3.Настраиваем клиента под Windows
    качаем клиента для виндозы отсюда http://openvpn.se/files/install_packages/ или из другого места. Создадим конфигурационный файл openvpn.ovpn в папке config (Например C:\Program Files\OpenVPN\config). И скопируем туда же все необходимые ключи для работы (ca.crt, dh1024.pem, client.crt, client.key, ta.key).
    Содержимое файла openvpn.ovpn
    dev tun
    proto udp
    remote 22.22.22.22#(реальный айпи вашего сервера)
    port 2000 #(порт к которому устанавливать соединение
    client
    resolv-retry infinite
    ca ca.crt
    cert client.crt
    key client.key
    tls-client
    tls-auth ta.key 1
    auth MD5
    cipher BF-CBC
    ns-cert-type server
    comp-lzo
    persist-key
    persist-tun
    verb 3
    

    вот и всё - конфиг взят с рабочего сервера + положен человеку у которого всё работет viewtopic.php?f=8&t=5708&start=0&st=0&sk=t&sd=a

    НЬЮАНС!
    В /usr/local/etc/openvpn/ccd при создании файла с настройками для клиента помните:
    ifconfig-push 10.10.200.2 10.10.200.1
    этой сторокой организовуем езернет-тун с сеткой 10.10.200.0, 2-мя тачками с айпишнегами 10.10.200.2 и 10.10.200.1 и бродкастом 10.10.200.3
    соответственно при создании 2-го, 3-го и т.д. клиента - строка должна принимать вид
    ifconfig-push 10.10.200.6 10.10.200.5
    ifconfig-push 10.10.200.10 10.10.200.9
    и т.д


    4.Удаление недействительных сертификатов
    Такая задача может возникнуть, если например, один из сотрудников  работал через  VPN, а потом уволился. Естественно, что ключи остались. Как обеспечить невозможность подключится с этим сертификатом:
    cd /usr/local/share/doc/easy-rsa/
    sh
    . ./vars
    ./revoke-full client1     
    

    # для каждого удаляемого клиента проделываем такую операцию
    eсли будет выдавать ошибку error on line 282 of config file '....openvpn/easy-rsa/openssl.cnf', то комментируем следующие строки в openssl.cnf:
    #[ pkcs11_section ]
    #engine_id = pkcs11
    #dynamic_path = /usr/lib/engines/engine_pkcs11.so
    #MODULE_PATH = $ENV::PKCS11_MODULE_PATH
    #PIN = $ENV::PKCS11_PIN
    #init = 0
    

    и опять выполняем пункт 1.
    Если всё хорошо, то должна появится такая строка
    "Revoking Certificate ... Data Base Updated"
    

    Копируем только что создавшийся crl.pem на место того, который уже есть (путь к нему нужно смотреть в файле server.conf, параметр crl-verify) Если такого параметра нет - то добавляем его и указываем местоположение нового файла
    crl-verify /usr/local/etc/openvpn/crl.pem
    

    После этого ОБЯЗЯТЕЛЬНО ВЫСТАВЛЯЕМ ПРАВА ДЛЯ ФАЙЛА crl.pem 644, иначе работать не будет. openvpn не сможет прочесть этот файл (у меня openvpn работает от юзера nobody).
    Делаем рестарт демона:
    /usr/local/etc/rc.d/openvpn restart
    

    Теперь не смогут подключится те, кого мы удалили из базы.
    Если допустил ошибки - не просите Лиса подправлять



    размещено: 2007-11-14,
    последнее обновление: 2011-06-10,
    автор: UA


    1, 2007-11-16 в 9:22:41

    credo# ./clean-all
    you must define KEY_DIR
    credo#

    o2x, 2007-11-18 в 20:35:17

    В случае tcsh:
    # setenv D `pwd`
    # setenv KEY_CONFIG $D/openssl.cnf
    # setenv KEY_DIR $D/keys/server
    # setenv KEY_SIZE 1024
    # setenv KEY_COUNTRY UA
    # setenv KEY_PROVINCE KIEV_PR
    # setenv KEY_CITY KIEV
    # setenv KEY_ORG "OpenVPN-SERVER"
    # setenv KEY_EMAIL "o2x@server.ua"

    o2x, 2007-11-24 в 0:17:53

    В случае использования файервола ipfw, правила будут:

    # openvpn
    ifconfig="/sbin/ifconfig"
    # port openvpn
    ${fwcmd} add pass udp from any to any 1194
    # масив устройств
    device="`$ifconfig | grep "tun" | awk -F: '{print $1}'`"
    # правила начиная со 1310
    n=1310;
    for i in $device
    do
    $fwcmd $n add allow ip from any to any via $i
    n="`expr $n + 1`";
    done

    mak_v_, 2007-11-26 в 11:21:53

    2o2x,
    1) по поводу vars - наверное будет работать, хотя советовал-бы не отклонятся от официального мана (а вдруг переменные не экспортируются)
    2) по поводу правил фаервола - всё верно (только порт в доке не 1194 а 2000) + номер девайса (TUN) - хорошая практика.
    3) $fwcmd="/sbin/ipfw"

    21
    1)credo# ./clean-all
    you must define KEY_DIR
    credo#
    Видимо товарищ завускаем не из-под sh (поскольку не оглашена переменная KEY_DIR, которая описана в файлеге vars)
    А очищать от сертификатов которые уже созданы я не вижу смысла (если вдруг!!, потеряем ключи и сертификаты - потом откуда возьмём? я не считаю нормальной практикой отзывать сертификат а потом генерить новый, ИМХО)

    Kolesya, 2008-02-04 в 19:18:21

    > o2x, 2007-11-24 в 0:17:53
    >В случае использования файервола ipfw, правила будут:
    ...
    ># правила начиная со 1310
    >n=1310;
    Откуда взялся номер правила 1310 ? :)
    у каждого файер по своему настраивается ...

    o2x, 2008-02-04 в 20:43:45

    to Kolesya
    Как пример. Кто понял, у того вопросов не возникло.

    Сережка, 2008-02-25 в 16:37:05

    [[[credo# ./clean-all
    you must define KEY_DIR
    credo#]]]

    Такая же трабла) Просто все необходимые переменные надо. Заменяем их нужными данными)

    А как сделать так, чтоб один клиент получил ИП 10.0.0.2, второй 10.0.1.1 и т.д.?

    Alucard, 2008-02-28 в 22:32:20

    2Сережка чтобы инициализировать переменные выполни команду . ./vars (именно так, точка впереди)

    Дмитрий, 2008-03-20 в 17:58:05

    Осталась нерешенной проблема с днс, клиенту передаю параменты, при ipconfig все отображается, но не работает

    push "dhcp-option DNS 10.2.70.100"

    vpn, 2008-03-28 в 12:19:18

    ЧТо нужно указать что б произошел реконект ВПН сервера при обрыве соеденения ???

    Михаил Воробьев, 2008-03-29 в 12:59:13

    Народ почитал статью все сделал а он мне ругается openvpn[652] Device busy tun0 что то вродет такого, поставить другой tun? но через tun1 у меня адсл инет работает, помогите

    mak_v_, 2008-03-29 в 14:14:34


    vpn - реконект задаётся опцией ping-restart (точнее-поглядите в примерах)
    Михаил Воробьев - задайте другое название в скрипте запуска или в рц.конф
    Как автор, просю - все вопросы - в форум

    mh, 2008-03-31 в 12:52:15

    Вопрос к гуру: возможно ли такое?
    есть 2 провайдера... подняты например 2 openvpn тунеля между двумя сетями через разных провайдеров... как обеспечить максимально быстрое переключение на другой тунель, в случае падения рабочего? вроди в cisco такое организовано...

    mak_v_, 2008-03-31 в 15:32:48

    ну максимально быстрое -нет - а за минутку получается - скрипт дёргает доступность, если не доступен осн - переключение на резерв, если становится доступным - обратно (скрипт в кроне - раз в минуту)

    mh, 2008-03-31 в 19:09:58

    > - а за минутку получается ...
    терминальные сессии оборвутся... а кроме крона ничего больше не возможно?

    mak_v_, 2008-04-01 в 12:11:50

    В волшебство надо верить....наверное возможно

    245, 2008-04-03 в 13:15:52

    Спасибо, хороша статейка :) Автор молодец.

    avp, 2008-04-12 в 1:49:27

    InventoR, 2007-12-01 в 0:45:42

    Народ всем кто напориться на такую штуку
    Fri Aug 10 07:50:32 2007 Warning: route gateway is not reachable on any active network adapters: 10.8.0.9
    Fri Aug 10 07:50:32 2007 Route addition via IPAPI failed
    Fri Aug 10 07:50:32 2007 route ADD 10.8.0.0 MASK 255.255.255.0 10.8.0.9
    Fri Aug 10 07:50:32 2007 Warning: route gateway is not reachable on any active network adapters: 10.8.0.9
    Fri Aug 10 07:50:32 2007 Route addition via IPAPI failed
    Fri Aug 10 07:50:32 2007 Initialization Sequence Completed With Errors ( see http://openvpn.net/faq.html#dhcpclientserv )
    вырубайте каспера или добавляйте openvpn в доверительную зону


    И КАСПЕРА НЕ ТОЛЬКО ВЫРУБАТЬ НО И СНОСИТЬ, ПО КРАЙНЕЙ МЕРЕ 5 УЖ ТОЧНО

    mirlas, 2008-04-23 в 13:50:36

    Так клиенту нужен dh1024.pem или все же нет? Я думаю что нет :) Тогда надо поправить :)

    jdoe, 2008-09-26 в 20:55:19

    dm, 2008-02-06 в 1:20:05

    Долго промучился с tun ... в итоге подгрузил if_tap.ko с ним проще.


    Под FreeBSD7 действительно есть проблема с udp транспортом, однако используя tcp, тоже поломал голову. Переключил на tcp и все заработало.

    yolkov, 2008-10-22 в 14:52:17

    > openvpn --genkey --secret keys/server/ta.key

    ># указываем tls-ключ, и указываем 0 для сервера, а 1 >для клиента
    >tls-auth keys/ta.key 0

    по моему это лишнее, и без этого все работает!

    mak_v_, 2008-10-22 в 15:50:02

    конечно работает!
    прада без тлс при обмене сертификатами, но то понты - гоняйте в открытом виде, зачем нам излишняя безопасность?

    blizz, 2008-11-18 в 17:15:55

    ./clean-all - Permission denied
    ./build-ca - Permission denied
    у кого была подобная ошибка, делаем:
    cd /usr/local/share/doc/openvpn/easy-rsa/
    chmod +x build-ca #и далее с файлами что отказываються запускаться

    Zerox, 2008-11-27 в 2:29:47

    Мне не помогло
    #echo "00">/usr/local/share/doc/openvpn/easy-rsa/keys/server/serial
    Выскакивала ошибка
    error while loading serial number
    Помогло
    #echo "01">/usr/local/share/doc/openvpn/easy-rsa/keys/server/serial

    advanced, 2008-12-03 в 10:56:16

    Вот такая ерунда выскакивает при попытки подключиться, в чем проблема? Видимо в клиентском сертификате, но делал все как в статье.
    Wed Dec 03 10:53:45 2008 OpenVPN 2.0_rc17 Win32-MinGW [SSL] [LZO] built on Mar 13 2005
    Wed Dec 03 10:53:45 2008 Cannot load certificate file client.crt: error:02001002:system library:fopen:No such file or directory: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
    Wed Dec 03 10:53:45 2008 Exiting

    Zerox, 2008-12-03 в 11:16:37

    У меня нечто подобное было. Пересоздал все сертификаты и заработало.

    CTOPMbI4, 2008-12-17 в 7:44:56

    #make install
    Выдает такое как можно пофиксить?
    ===>  Script "configure" failed unexpectedly.
    Please report the problem to matthias.andree@gmx.de [maintainer] and attach
    the "/usr/ports/security/openvpn/work/openvpn-2.0.6/config.log" including the
    output of the failure of your make command. Also, it might be a good idea to
    provide an overview of all packages installed on your system (e.g. an `ls
    /var/db/pkg`).
    *** Error code 1
    Stop in /usr/ports/security/openvpn.
    *** Error code 1
    Stop in /usr/ports/security/openvpn.

    mak_v_, 2008-12-17 в 12:50:03

    advanced, это у вас с реестром виндовым грабли
    CTOPMbI4, не честный у вас ник в ответе тут, фиксите порты и пакаджи.

    CTOPMbI4, 2008-12-28 в 15:29:57

    не понял о чем вы?
    все заработало пересобрал.
    Еще один момент мне нужно 2 клиента. Мне заново генерить ключ для клиента? а так же создать файл client 02
    В /usr/local/etc/openvpn/ccd ?

    Zerox, 2008-12-28 в 15:45:23

    Да, для другого клиента свой ключ и свой файл настроек, если хотите ему задать настройки, отличные от умолчательных :)

    CTOPMbI4, 2008-12-28 в 21:12:30

    Мне нужно чтобы выдавал другой ип вот и все как это реализовать?

    Zerox, 2008-12-28 в 21:44:04

    В статье же написано:
    "НЬЮАНС!
    В /usr/local/etc/openvpn/ccd при создании файла с настройками для клиента помните:
    ifconfig-push 10.10.200.2 10.10.200.1
    этой сторокой организовуем езернет-тун с сеткой 10.10.200.0, 2-мя тачками с айпишнегами 10.10.200.2 и 10.10.200.1 и бродкастом 10.10.200.3
    соответственно при создании 2-го, 3-го и т.д. клиента - строка должна принимать вид
    ifconfig-push 10.10.200.6 10.10.200.5
    ifconfig-push 10.10.200.10 10.10.200.9
    и т.д"
    В таком случае каждый клиент получает свой статический IP.

    dveiznx gblqzetpi, 2009-01-31 в 16:28:50

    cafx gznkt xoitpsjq wpxa xgklhm btlfye iamzpwdq

    nmecub kbwodcm, 2009-01-31 в 16:29:47

    bvrgkinx kmbuyafpn apnbju bnzaolqvf ehwinjc kapdnx taqyuz http://www.ehnydq.xgztfj.com

    Vadim, 2009-02-14 в 0:43:42

    Товарищщи! Не наступайте на мои грабли! Если у вас часовой пояс на сервере и клиенте отличаются, то опенвпн будет ругаться на проверку сертификата! Проверяйт этот момент (можно даже добавить к статье).

    Sanek, 2009-05-06 в 17:33:35

    Товарищи, мож кто поможет.
    Все настроил по статье, все взлетело, но в локалку за ВПН не могу попасть.
    Где могут быть грабли?

    Ice1374, 2009-05-09 в 17:08:11

    Спасибо, всё получилось =)

    >Все настроил по статье, все взлетело, но в локалку за >ВПН не могу попасть. Где могут быть грабли?
    В локалке в кач-ве шлюза на компах стоит ойпишнег компа, где VPN-сервер? Либо надо маршруты на шлюзе прописывать для виртуальной VPN-сети (10.10.200.x)

    Кури логи фаервола, куда пакеты идут.

    Sanek, 2009-05-13 в 12:28:48

    спс, разобрался.
    добавил в конфиг сервера push "route-gateway 10.8.0.1" и все запрацювало

    phobos, 2009-05-23 в 1:13:31

    капец, сделал все как пишет автор, но моя реальная сеть недоступна :(

    192.168.24.0/23

    %(((

    Sanek, 2009-05-23 в 9:40:39

    У меня тож так было:), сделай на клиенте в качестве шлюза айпи vpn сервера, отключи бранмаузер на клиенте (если XP) и можешь попробывать сделать роутинг между сетью vpn и твоей реальной сетью.
    Есче вариант, настрой сетевое подключение клиента принудительно, а не автоматом с указанием шлюза "айпи сервера" (покрайне мере для теста).
    ...Извинити если некоректно написал (есче не профи в этом деле, токо учусь:))

    phobos, 2009-06-01 в 20:14:04

    Ура Товарищи! Разобрался в файлик ccd/user (файлик должен иметь одинаковое название с хостом когда для клиента генерировали ключ: Common Name). Добавил одну строку и все забегало! приблезительный вид моего файлика настроек для юзера:
    [ANTA] phobos@~/ccd%> cat user
    ifconfig-push 192.168.26.9 192.168.25.10
    iroute 192.168.24.0/23

    Для него генерировал сертификат с Common Name: user
    (Это важно)

    alik, 2009-07-02 в 15:08:08

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

    Zerox, 2009-07-02 в 15:27:58

    Для каждого клиента нужно создавать свой ключ.
    # ./build-key client1
    # ./build-key client2
    # ./build-key client3
    и так далее.

    Alex.RG2Q, 2009-07-02 в 15:41:04

    2alik:
    Вопрос на форуме лучше задавать... Тут по шапке могут дать... а так у тебя должна быть папка на сервере ccd в ней создаешь фаил с именем "common name" что указывал во время генерации сертификата для пользователя... и в файле прописываешь его адрес и параметры для роут таблицы... так же 1-н сертификат для каждого пользователя... Полное решение найдешь на форуме... если что в личку стукни на форуме помогу, ник: phobos

    Garison, 2009-07-08 в 14:33:00

    баг такой смотрим внимательно на пробел в
    первой команде после точки:
    sh
    . vars
    ./clean-all
    тогда все работает

    mak_v_, 2009-07-08 в 15:05:37

    ГарисонГ, смотрим внимательно в текст статьи и не надо "самостоятельных", заметьте НЕПРАВИЛЬНЫХ выводов
    . ./vars - именно так !!!

    валенок, 2009-08-13 в 13:12:47

    пункт 4.Удаление недействительных сертификатов скопипастен с [url=http://skeletor.ho.ua/index.php?name=articles&op=read&art=35&cat=1], о чем стоило бы упомянуть, и не соответствует настройкам-путям-названиям файлов в статье. кусок этого пункта со слов "Data Base Updated" и до "После этого ОБЯЗЯТЕЛЬНО", применительно к описанному в предыдущих пунктах, должен выглядеть так:

    ----8<----

    в результате обновляется файл /usr/local/share/doc/openvpn/easy-rsa/keys/server/crl.pem

    Для того, чтобы openvpn что-то знал об отозванных сертификатах, в конфигурационный файл сервера /usr/local/etc/openvpn/server.conf нужно добавить параметр

    crl-verify путь_к_файлу_crl.pem

    раз уж мы "для удобства" держим ключи серверные ключи в /usr/local/etc/openvpn/keys, то и файл crl.pem будем держать там же - копируем его. следовательно, параметр  в server.conf будет следующим

    # Отозванные сертификаты
    crl-verify /usr/local/etc/openvpn/keys/crl.pem

    ---->8----

    gabell, 2009-11-25 в 14:12:28

    dh1024.pem клиенту не нужен

    winterheart, 2010-02-02 в 15:55:05

    Статья устарела. Я использую Webmin + эту приблуду
    http://www.openit.it/index.php?option=com_content&view=section&id=12&Itemid=88
    90 % телодвижений из статьи, включая генерацию сертификатов, их отзыв, создание конфигов пользователя, делается ею.

    mak_v_, 2010-02-02 в 16:11:06

    winterheart,это конечно может и не кошерно делать через консоль, однако знаешь что и где лежит

    winterheart, 2010-02-03 в 10:57:19

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

    ivan_k, 2010-04-22 в 14:56:41

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

    Wagan, 2010-05-28 в 23:06:34

    Почему-то создаются не сертификаты с расширением .crt, а запросы сертификатов .csr
    Все делалось по описанию, был только один варнинг, может в нем-то и все дело? При билде была ругань на openssl.conf на первую строку (line 1), у меня она пустая

    Talk, 2010-07-21 в 14:08:11

    Спасибо уважаемому mak_v_ за грамотно написанную и подробную статью. Для Wagan, у меня сертификаты для второго пользователя тоже получились запросы сертификатов .csr и, само собой, сертификаты .crt. Я положил все этий файлы в конйигурационный каталог для OpenVPN клиента и все поднялось. Да, и еще. У меня в качестве дефолтового шлюза установлен роутер. Для того, чтобы были доступны машины за OpenVPN сервером, на роутере прописал следующий статический маршрут: ip route 10.10.200.0 (ВПН подсеть для адресов клиентов) 255.255.255.0 (маска ВПН подсети для адресов клиентов) внутренний_IP_опенвпн_шлюза. Так я добился доступа к машинам за шлюзом.

    Talk, 2010-07-21 в 14:09:56

    Вдогонку к предыдущему посту. В качестве дефолтового шлюза для LAN у меня прописан роутер

    Gurov, 2010-08-01 в 14:18:07

    Большое спасибо автору за статью. На данном примере разобрался с настройкой OpenVPN и реализовал на FreeBSD 8.0.

    Patrick, 2010-08-27 в 1:54:27

    настроил по статье, все гуд, кроме того, что не создаются новые тунели, - тобиш один клиент коннектится, получает ип-ку - все ок, прописываю 2-го клиента, - коннектится получает ип с файлика, но реально трафика нет - работает только первый туннель (tun0) - больше туннелей не создается. Да на второй машине получаем ipconfig:
    ip 10.10.200.6 mask 255.255.255.252 gw 10.10.200.1 !!!
    может кто еще стыкался с таким ??

    Да  так статья зачетная спс автору

    mak_v_, 2010-08-27 в 20:12:13

    внимательно читаем и делаем...работает на 95 точках.
    Если уж совсем не в моготу - в аську, за пиво.

    Salimk, 2010-09-29 в 18:16:51

    Автору спс большое, все супер с полпина завелась,
    было проблема с подключением из дома очень долго подкл. или вообще не подключался, менял порты, даже сертификаты по новый создал нифига не работала,
    проблема была решено поменял на сервере и клиенте
    proto udp
    на
    proto tcp
    пошло и даже очень быстро
    видать особенности моего домашнего провайдера блокирует udp вот гад!

    parus, 2010-11-07 в 14:42:34

    После выключения электричества была ошибка: VERIFY ERROR: depth=1, error=certificate is not yet valid:…
    Оказалось часики сбились, и были до создания сертификата:)
    Поэтому на удалённой машине нужно настроить(на всякий случай) ntp. Ну и перед генерацией ключей синхронизировать время...

    pinglost, 2011-05-12 в 9:48:14

    А можно к статье еще поместить таблицы маршрутизации, которые получились в итоге, на сервере и клиенте? а то что-то не видит клиентов сервак ни в какую

    Gman, 2011-09-29 в 8:51:56

    Получается, если я подключаюсь с компа А (удаленного) на комп В, находящийся в сети, то обратно с В на А я залезть не могу? А видит сеть за счет
    push "route 192.168.1.0 255.255.255.0"
    но так как сеть (10.10..), в которую входят все подключенные виртуальная, ее фактически нет и реальная сеть ее не видит. или это можно как-то обойти?

    mak_v_, 2011-09-29 в 10:01:16

    ееё фактически нет, как-бы виртуальная.....что за бред...
    маршрутизацию глядите на КОМПАХ пилять (откуда такое слово комп) и подтягивайте знания.
    Тут место для коментариев, а для обсуждения - форум

    adm, 2011-12-13 в 16:27:15

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

    mak_v_, 2011-12-13 в 16:43:28

    adm, так же не написано, что делать если ссл не установлен и почему именно опенвпн, а не vtun

    dms, 2012-03-15 в 17:03:03

    При попытке подключиться наблюдаю в логах такое:                                              UDPv4: Connection reset by peer (WSAECONNRESET)(code=10054).                               Куда копать?

    dms, 2012-03-19 в 18:59:21

    спасибо разобрался,переустановил

    Devapath, 2013-03-19 в 10:54:06

    OpenVPN+Mikrotik!!!
    Если у вас проблемы со связкой микротика, обновите ОС и прошивку.
    Заработало СТАБИЛЬНО при таком обновлении:
    - MikroTik RouterOS 5.24
    - Current Firmware: 3.02
    Проверял на нестабильном канале :-)
    Особенность, MikroTik работает только с TCP (в OpenVPN) !!! В конфиге укажите:
    proto tcp
    www.youtube.com/watch?v=L45nsdE9220
    www.youtube.com/watch?v=pEUiE0gdX04
    Но в видео есть ошибка, нельзя сохранять в Mikrotik файл ca.key !!!



  •  

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.1452 секунд
    Из них PHP: 59%; SQL: 41%; Число SQL-запросов: 77 шт.
    Исходный размер: 74269; Сжатая: 18216