Установка и использование OpenVPN

Тема в разделе "Администрирование серверов", создана пользователем nanovirus, 1 фев 2008.

Статус темы:
Закрыта.
Модераторы: mefish, stooper
  1. nanovirus

    nanovirus Создатель

    Регистр.:
    22 сен 2007
    Сообщения:
    33
    Симпатии:
    10
    Установка и использование OpenVPN

    Один из самых лучших способов, если не самый лучший способ скрыть свой реальный IP-адрес в интернете, это использование VPN(Virtual Private Network). На данный момент существует много разных сервисов предоставляющих доступ к VPN, но берут за это не малые деньги, которые достаются потом и кровью.
    Можно конечно купить VPN-аккаунт у одного из таких сервисов, а можно и купить шелл и самому поставить VPN сервер, и так же сидеть анонимно в интернете. А если нет разницы, то зачем платить больше?
    В данной статье я расскажу о том, как можно легко и быстро установить VPN-сервер на linux box, и сделать мобильный клиент для Windows, на базе OpenVPN

    Конечно для некоторых это может показаться долгим и утомительным процессом, но этот процесс надо будет выполнить один раз, а следом он себя быстро оправдает. Начнем с сервера:
    - Скачивание и установка OpenVPN
    - Создание сертификатов и ключей
    - Настройка серверной части OpenVPN

    Подготовка к установке сервера:
    Необходимо проверить чтобы в ядре был был драйвер TAP\TUN:
    # gzcat /proc/config.gz | egrep tun
    или
    # modprobe tun;lsmod | grep tun
    Если такового не имеется, то устанавливаем:
    # cd /usr/src/linux
    # make menuconfig
    в нем выбираем: Device Drivers ---> Networking support ---> Universal TUN/TAP device driver support (Тут можете по желанию выбрать модуль или в ядро, я лично предпочитаю модулем)
    # make; make install; make modules_install
    Далее проверяем что получилось:
    # modprobe tun;lsmod | grep tun
    Так же необходимо проверить чтобы был установлен LZO, для комперессии траффика:
    Например:
    # locate lzo.so
    Если такового нету, то ставим:
    # wget http://www.oberhumer.com/opensource/...zo-2.02.tar.gz
    # tar xvzf ./lzo-2.02.tar.gz
    # cd ./lzo-2.02
    # ./configure
    # make
    # make install

    1. И так, скачиваем сервер распаковываем, конфигурируем и устанавливаем.
    # wget http://openvpn.net/release/openvpn-2.0.7.tar.gz
    # tar xvzf ./openvpn-2.0.7.tar.gz
    # cd ./openvpn-2.0.7
    # ./configure
    # make
    # make install

    2. после успешного завершения всех операций необходимо создать сертефикаты и ключи

    Заходим в папку с исходниками OpenVPN и в ней:
    # cd ./easy-rsa
    # vi ./vars (в этом файлике внизу изменяете данные для подписи ключей под себя)
    # . ./vars (загружаем эти переменные в оболочку)
    # ./clean-all (отчищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей)
    # ./build-ca (Создаем Certificate Authority для сервера)
    # ./build-key-server server (Создаем сертификат X.509 для сервера)
    # ./build-key client (Создаем сертификат X.509 для клиента)

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

    Создаем ключ Диффи Хельман(о нем можно почитать тут)
    # ./build-dh

    И в конце создаем ключ для tls-аутификации
    # openvpn --genkey --secret ta.key

    После всех этих манипуляций в папке keys получается много файлов:
    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

    3. Теперь настало время настройки сервера.

    Файл конфигурации можно разместить где угодно, например в /etc/openvpn, так же для удобства скопируем туда все ключи(ca.crt, dh1024.pem, server.crt, server.key, ta.key).
    Создаем конфигурационный файл openvpn.conf следующего содержимого:
    Код:
    proto udp #Сервер слушает только udp-порт
    dev tap #используемый тип устройства tap
    port 1194 #используемый порт 1194
    tls-server #включаем TLS аутификацию
    tls-auth ta.key 0 #указываем tls-ключ, и указываем 0 для сервера, а 1 для клиента
    ca ca.crt #указываем файл CA
    cert server.crt #указываем файл с сертификатом сервера
    key server.key #указываем файл с ключем сервера
    dh dh1024.pem #указываем файл Диффи Хельман
    mode server #включаем режим сервера
    ifconfig 192.168.231.5 255.255.255.0 #задаем IP-адрес сервера и маску подсети виртуальной сети
    ifconfig-pool 192.168.231.10 192.168.231.20 #задаем диапазон IP-адресов выдаваемых клиентам
    push "route-gateway 192.168.231.5" #отправляем клиентам строку, с указанием шлюза
    push "hcp-option DNS 192.168.231.5" #Указываем DNS сервер, можно локальный, если он там поднят, <br>Lлибо какой-нибуть другой
    duplicate-cn #ВАЖНО! разрешаем пользоватся одним и тем же ключем, нескольким клиентам одновременно,<br> иначе прийдется для всех клиентов генерировать отдельные сертификаты.
    cipher DES-EDE3-CBC  #включаем шифрацию пакетов Triple-DES
    user nobody #устанавливаем OpenVPN-демону права пользователя nobody
    group nobody
    persist-tun #Не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
    persist-key #Не перечитывать ключи после получения SIGUSR1 или ping-restart
    comp-lzo #Включить сжатие траффика
    keepalive 10 120 #Проверка жизни клиента каждые 10 секунд, если в течении 120 секунд не пришел ответ,<br> то закрывается соединение
    verb 3 #Уровень информации для отладки
    4. так же необходимо настроить ip-fowrwarding:

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

    5. Настроим фаервол:
    # iptables -I FORWARD 1 -i tap0 -p tcp -j ACCEPT

    Всё, сервер настроен, теперь мы его запускаем:

    Из папки с исходниками OpenVPN/sample-scripts переименовываем файл openvpn.init в openvpn и копируем в /etc/init.d/

    Далее запускаем сервер:
    # /etc/init.d/openvpn start

    Особый момент: данный скрипт запускает отдельный процесс для каждого файла .conf в папке /etc/openvpn.

    И так приступим к инсталяции клиента под Windows.

    1. Скачиваем клиента по ссылке _http://openvpn.se/files/install_packages/openvpn-2.0.7-gui-1.0.3-install.exe

    2. Устанавливаем необходимые компоненты

    OpenVPN User-Space Components
    OpenVPN GUI
    OpenSSL DLLs
    TAP-Win32 Virtual Ethernet Adapter
    3. Теперь приступим к настройке клиента. Создадим конфигурационный файл openvpn.ovpn в папке config (Например C:\Program Files\OpenVPN\config). И скопируем туда же все необходимые ключи для работы (ca.crt, dh1024.pem, client.crt, client.key, ta.key).

    Содержимое файла openvpn.ovpn:
    Код:
    client #указываем OpenVPN, что необходимо работать в режиме клиента
    proto udp #указываем, что сервер работает через udp
    remote x.x.x.x #хост, к которому присоединяемся
    port 1194 #порт к которому следует подключатся
    dev tap #используемый тип устройства tap
    resolv-retry infinite #количество повторов соединения
    redirect-gateway #ВАЖНО! переназначить стандартный шлюз на шлюз VPN
    persist-tun #Не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
    persist-key #Не перечитывать ключи после получения SIGUSR1 или ping-restart
    tls-client #указываем, что подключение осуществляется по средствам tls-ключа
    tls-auth ta.key 1 #указываем tls-ключ, и указываем 0 для сервера, а 1 для клиента
    dh dh1024.pem #указываем файл Диффи Хельман
    ca ca.crt #указываем файл CA
    cert client.crt #указываем файл с сертификатом клиента
    key client.key #указываем файл с ключем клиента
    cipher DES-EDE3-CBC  # Triple-DES #включаем шифрацию пакетов
    comp-lzo #Включить сжатие траффика
    verb 3 #Уровень информации для отладки
    Теперь можно проверить работу клиента.
    Нажимаем правой кнопкой мышки по значку в трее. и выбираем Connect

    Сначала вылезет вот такое окошко:[​IMG]

    Следом если пройдет все хорошо, то в трее загорится зеленый значек с ip-адресом виртуального VPN соединения.

    Отключаемся тем же путем что и соединялись только выбрав Disonnect.
    Теперь приступим к мобилизации нашего OpenVPN дистрибутива.
    Для начала скопируем на переносной носитель информации всю папку OpenVPN (C:\Program Files\OpenVPN)
    Далее создадим в корне переносного носителя три VB-скрипта:

    InstallVPN.vbs:
    Код:
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    set a = createobject("Scripting.FileSystemObject")
    set f = a.getfolder(".")
    
    WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\OpenVPN",f.path & "OpenVPN", "REG_SZ"
    WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\OpenVPN\config_dir",f.path & "OpenVPN\config", "REG_SZ"
    WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\OpenVPN\config_ext","ovpn", "REG_SZ"
    WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\OpenVPN\exe_path",f.path & "OpenVPN\bin\openvpn.exe", "REG_SZ"
    WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\OpenVPN\log_dir",f.path & "OpenVPN\log", "REG_SZ"
    WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\OpenVPN\priority","NORMAL_PRIORITY_CLASS","REG_SZ"
    WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\OpenVPN\log_append",0, "REG_SZ"
    aScript = WSHShell.run("OpenVPN\bin\tapinstall.exe install OpenVPN\driver\OemWin2k.inf tap0801")
    UninstallVPN.vbs:

    Код:
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    aScript = WSHShell.run("OpenVPN\bin\tapinstall.exe remove tap0801")
    WshShell.RegDelete "HKEY_LOCAL_MACHINE\Software\OpenVPN\"
    WshShell.RegDelete "HKEY_LOCAL_MACHINE\Software\OpenVPN-GUI\"
    RunVPN.vbs:
    Теперь, когда нам необходимо восользоватся VPN, вставляем переносной носитель информации, и запускаем файл InstallVPN.vbs.
    Дожидаемся установки драйвера TUN-TAP Win32, далее запускаем RunVPN.vbs.
    После запуска OpenVPN GUI, выбираем Connect, и насдаждаемся мобильным VPN.
    После окончания работы не забываем удалить все следы присутствия VPN, выключив OpenVPN-GUI и запустив скрипт UninstallVPN.vbs

    Отдельное спасибо System, за помощь с vb-скриптами.

    (c) KaDaBRa
     
    alfaexpert, Weetal, cmanprof и 4 другим нравится это.
  2. abrvalkin

    abrvalkin Создатель

    Регистр.:
    1 фев 2008
    Сообщения:
    11
    Симпатии:
    0
    Вот ещё чуть - чуть от wiki _http://ru.wikipedia.org/wiki/VPN
     
  3. flaer

    flaer Создатель

    Регистр.:
    21 янв 2008
    Сообщения:
    26
    Симпатии:
    3
    _http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz

    вот полный линк на скачивание верхнего пакета для компрессии
     
  4. Krik

    Krik Постоялец

    Регистр.:
    10 авг 2007
    Сообщения:
    55
    Симпатии:
    15
    фух :) еле терпения хватило дочитать)) спасибо! сейчас поставлю, очень полезная статья!
     
  5. wespire

    wespire Постоялец

    Регистр.:
    18 мар 2008
    Сообщения:
    55
    Симпатии:
    6
    хочу посоветовать использовать клиентский ключ p12. на мой взгляд чем меньше файлов - тем удобнее

    вместо build-key client
    нужно использовать build-key-pkcs12
     
  6. barslg

    barslg Постоялец

    Регистр.:
    17 ноя 2007
    Сообщения:
    52
    Симпатии:
    16
    хостеры часто пишут, что сделаем вам "а-на-на" если будете проксю и ВПН юзать - осторожно ;)
     
  7. wespire

    wespire Постоялец

    Регистр.:
    18 мар 2008
    Сообщения:
    55
    Симпатии:
    6
    рекомендую для установки openvpn сервера использовать дешевые linux-vds, за 10-20$ в месяц. такие и потерять не жалко в случае абузы.
     
  8. vlad_v

    vlad_v

    Регистр.:
    30 июн 2006
    Сообщения:
    444
    Симпатии:
    67
    :bc:
    Возможно ли поставить VPN на shared хостинг, если на этом хостинге есть выделенный IP и shell доступ ???
     
  9. unixman

    unixman

    Регистр.:
    6 сен 2006
    Сообщения:
    688
    Симпатии:
    61
    Нет, запуск требует root доступа для tun/tap устройства
     
  10. cmanprof

    cmanprof Писатель

    Регистр.:
    7 апр 2008
    Сообщения:
    9
    Симпатии:
    5
    Вот неплохая wiki-статья на тему установки OpenVPN сервера на базе дебиана, для новичков гораздо проще организовать, чем в инструкции выше :)

    http://wiki.firstvds.ru/index.php/Установка_OpenVPN
     
Статус темы:
Закрыта.