Как настроить смартфоны и ПК. Информационный портал

OpenVPN: создание полноценного openVPN gateway. Область применения и преимущества OpenVPN

Итак, дорогой друг, сегодня мы с тобой научимся создавать шифрованные соединения между различными сетями на базе OpenVPN. Для начала дуй на
http://openvpn.net/ и тащи от туда свеженький исходник (как всегда для гурманов) или бинарник (для любителей Windows). Те, кто не любит особо заморачиваться с компилированием в ручную могут дуть /usr/ports/security/openvpn (FreeBSD ports) и устанавливать из портов.
Если ты, как и я, дома работаешь с Windows (он все же удобнее и поиграться можно, когда работа до смерти надоедает 😉), то советую тебе зайти еще и суда:
http://openvpn.net/gui.html
— это GUI для виндовой версии, для MacOS там по-моему тоже что-то было. Итак, скачали, поставили под Win, устанавливаем под FreeBSD. Для тех, кто впервые решил собрать что-то ручками, напоминаю традиционные команды.

#tar –zxvf openvpn-2.0_rc21.tar.gz
#cd openvpn-2.0_rc21
#./configure
#make
#make install
#make clean

Если для успешной сборки не хватает каких-нибудь пакетиков, или попробуй указать их через опции в./configure. Для удобной работы с конфигуратором, я обычно использую либо два терминала либо две сессии Putty. На одном запускаю:

#./configure –help | less

А на другом набиваю различные флаги. Так, с установкой вроде бы разобрались… Переходим к куда более интересной и сложной части, а именно созданию конфигурационных файлов и различного рода ключей.

Модификация BSD

Для того чтобы все заработало, необходимо пересобрать ядро со следующими опциями:

options IPSEC
options IPSEC_ESP

Редактим конфиг

Для работы серверной части нам понадобится совсем не много. Если хочешь почитать дополнительную инфу:

Если хочется поскорее рваться в бой, то просто повторяй за мной! Ух ты, уже в рифму писать начал! Так вот, редактируем конфиг:

#vi /usr/local/etc/openvpn/office.conf

Прописываем туда следующее:

daemon openvpn # просим наш openvpn сервер стать демоном, советую вставить эту #строчку только после того как все заработает.

dev tun # используем этот интерфейс

server 10.1.0.0 255.255.255.0 #укажем ip сервера в vpn сети

push «route 10.1.0.0 255.255.255.0» #– эта штука добавит маршрут vpn сети
push «route 194.1.1.0 255.255.255.0» #– эта добавит клиентам маршут сетки за vpn сервером
push «route 192.168.0.0 255.255.255.0» #- это маршрут до твоей домашней сети

client-to-client #закомментируй это, если не хочешь, чтобы vpn клиенты видели друг друга

tls-server #указываем, что это серверная конфигурация

dh /etc/ssl/dh2048.pem # это сертификат для шифровки установки соединения
ca /etc/ssl/CA_cert.pem # Это серверные сертификаты
cert /etc/ssl/certs/Cserv.pem #
key /etc/ssl/keys/Kserv.pem #

proto tcp-server #Скажем серверу работать по TCP протоколу
port 5000 # На порту 5000

user nobody #Пользователь, из-под которого стартует vpn сервер (не ставь root!)
group nobody #Ну а это группа

comp-lzo #Включаем сжатие

persist-tun #Использование тех же интерфейса и ключа при рестарте сервера
persist-key

tls-auth /etc/ssl/ta.key 0 # Защита от DOS атак
keepalive 10 120 # Время жизни неактивной сессии

verb 4 # Количество отладочной информации (от 0 до 9)

Так, все. С сервером закончили. Переходим к клиенту. Про ключи и сертификаты не волнуйся, создадим их попозже.

Windows OpenVPN client

Знаешь, этой штукой можно пользоваться даже на dialup-ом соединении, что для меня не маловажно! Скинул ключи да установщик на Flash-ку и не беспокойся больше, даже если ты в гостях у друга пьешь пиво и ешь мясо, а тут начальник позвонит и начнет ругаться, что у них что-то не работает, поднимаешь клиента у друга, только не догадайся копировать ключи ему на жестак. Конфиг скопируй, а пути поменяй до клиентских ключей на флешке, вот. Ах, да… Поехали дальше.

Жмешь ПУСК-Программы-OpenVPN… Входи в папку с конфигурационными файлами. Создай home.ovpn и напиши или скопируй туда этот конфиг:

client #Говорим, чтобы клиент забирал информацию о маршрутизации с сервера (вспомни # push опции)

remote ip-a #Вместо ip-a впиши реальный ip своего видимого в интернете сервера

tls-client # Это клиентская конфигурация

ns-cert-type server #Это еще одна защита, на этот раз от «man in the middle» атаки.

ca «H:\\config openVPN\\CA_cert.pem» # Это как раз пути ключей (Они у меня на флешке)

cert «H:\\config openVPN\\chome.pem»

key «H:\\config openVPN\\khome.pem»

tls-auth «H:\\config openVPN\\ta.key» 1 #Защита от DOS. Здесь в отличии от сервера стоит #единичка. Не перепутай, Кутузов! 😉

proto tcp-client #Клиент работает по TCP
port 5000 #Соединяется с 5000 портом

comp-lzo # Это ты уже знаешь

tun-mtu 1500 #Просто скопируй, если не знаешь сетей, я не смогу рассказать об этом в #двух строчках
tun-mtu-extra 32
mssfix 1450

Так, конфиг готов. Перейдем к более интересному занятию, генерации ключей и сертификатов.

OpenSSL рулит

Топай в /etc/ssl. Там создай 2 файла: index.txt и serial. Теперь запишем кое-что в serial:

#cd /etc/ssl
#touch index.txt
#touch serial
#echo “01” > ./serial

Теперь, создадим пару папок:

#mkdir certs
#mkdir keys
#mkdir crl

А теперь, немножко позаботимся о безопасности и изменим свой openssl.cnf. Я понимаю, что у тебя очумелые ручки, поэтому не забудь сделать копию этого файла, так, на всякий пожарный. 😉

#cp ./openssl.cnf ./ openssl.cnf.backup
#vi openssl.cnf

Найди параметр «default_days» и выставь его равным 9125 (это кол-во дней до того, как наши сертификаты перестанут работать). И в самый конец конфига подпиши вот что:
[ server ]
basicConstraints =CA:FALSE
nsCertType =server

После того, как ты создашь сертификаты, эта штука не даст всяким читающим этот журнал парнишкам провести простую «man in the middle» атаку. Если забудешь это прописать настройка «ns-cert-type server» в конфигурационном файле работать не будет.

Еще чуток терпения и ты сделаешь то, чего так долго ждал. ТЫ СДЕЛАЕШЬ ЭТО!

Вернемся на пути истинные:

#openssl req –new –x509 –keyout private/CA_key.pem –out CA_cert.pem

Введи пароль и не забудь его.

#openssl req –new –nodes –keyout keys/Kserv.pem –out req/Rserv.pem

Для этой строки важно, чтобы параметр Organization Name совпадал с тем, что ты указал при генерации CA_cert.pem.

#openssl ca -extfile /etc/ssl/openssl.cnf –extensions server –out certs/Cserv.pem –infiles req/Rserv.pem

Тебя зададут пару вопросов, на которые не думая долго отвечай «y».
Это было для сервера. Теперь повторим все то же самое, но для клиента.

#openssl req –new –keyout keys/Khome.pem –out req/Rhome.pem
#openssl ca –out certs/Chome.pem –infiles req/Rhome.pem

Не забудем про ta.key:

#openvpn —genkey —secret ta.key

Так, и на последок создаем Diffie-Hellman (фиг знает как это по-русски написать) файл

#openssl dhparam –out dh2048.pem 2048

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

Забираем наши сертификаты

Все, принимай мои поздравления, ты все сделал! Теперь осталось только забрать с собой:
— CA_cert.pem
— Chome.pem
— Khome.pem
— ta.key

Для этого либо копируем на дискетку:

#mkdir /mnt/floppy
#mount -t msdos /dev/fd0a /mnt/floppy
# cp /etc/ssl/certs/Cnode.pem /mnt/floppy
#cp /etc/ssl/keys/Knode.pem /mnt/floppy
#cp /etc/ssl/CA_cert.pem /mnt/floppy
#cp etc/ssl/ta.key /mnt/floppy
#umount –f /dev/fd0a

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

Ракета пошла

Теперь запускаешь OpenVPN сервер:

#openvpn –config /usr/local/etc/openvpn/office.conf

Создай небольшой openvpn.sh в /usr/local/etc/rc.d для автоматического запуска при перезагрузках:

case «$1» in
start)
echo -n «OpenVPN2 Starting… «
/usr/local/sbin/openvpn || exit 1
;;
stop)
echo -n «Shutting down OpenVPN2… «
/usr/bin/killall openvpn &>/dev/null || exit 1
;;
reload|restart)
$0 stop && sleep 1 && $0 start || exit 1
;;
*)
echo «Usage: $0 {start|stop|reload|restart}»
exit 1
esac

Фаервол

Прописываешь правило для ipfw, чтобы разрешить коннекты на наш с тобой демон:

#ipfw –q add pass tcp from any to me 5000
#ipfw –q add pass tcp from any to any via tun0

Так же можешь добавить это к своему фаервол скрипту.

Последний штрих

Для коннекта с Windows-клиента используешь GUI, как прописать его в автозагрузку для удобства, думаю, и сам разберешься.

Подведем итоги

Итак, ты только что настроил соединение между сервером-маршрутизатором, защищающим твою сетку где-то там и своей домашней сетью. Это великий шаг. Ты на еще один левел поднял свое искусство администрирования. Еще раз не поскуплюсь и поздравлю тебя. Знаешь, есть умные люди, которые не советуют таким образом создавать соединения между сетями. Мы добавили с тобой правило только позволяющее подключаться к твоему серверу и беспрепятственно бегать между двумя сетями. Если ты решишь увеличить число клиентов OpenVPN сервера, тебе придется дополнительно настроить и фаерволинг с безопастность, а чем больше интерфейсов на маршрутизаторе, тем сложнее за этим следить. Кроме того, ты только что выполнил расширение адресного пространства своих сетей. Этого как раз и не любят эти грамотные в вопросах безопасности дяди. Ну да ладно, это уже философские байки, раз хочешь, пользуйся. И напоследок, отправляю тебя на
http://openvpn.net/ , там много документации, с которой я бы на твоем месте ознакомился. Ну все, мне пора. Если что, адрес все тот же:
. Жду отзывов и предложений.

Чем больше государства пытаются контролировать интернет и устанавливать там свою цензуру, тем больше набирают популярности различные сервисы обхода. Одно из свободных решений для организации частных виртуальных систем - это OpenVPN. Вы можете использовать один из уже развернутых в сети серверов или же развернуть программное обеспечение в своей системе.

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

Вы уже знаете что программа организовывает виртуальную сеть между компьютерами и все данные в этой сети шифруются и недоступны для пользователей вне нее. Для достижения этой цели программа создает в системе виртуальное устройство tun0. Это такой же интерфейс, как и eth0 или wlan0, он имеет свой ip адрес. Весь трафик, который передается на этот интерфейс шифруется и передается в виртуальную сеть.

Поэтому для передачи трафика через OpenVPN будет достаточно добавить в несколько правил, которые будут заставлять трафик идти через интерфейс tun0.

Как пользоваться OpenVPN в Linux

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

sudo openvpn ~/Загрузки/config.ovpn

После этого окно терминала закрывать нельзя и если OpenVPN сервер был настроен правильно, то он уже передал на машину правильные маршруты и ваш трафик идет через виртуальную сеть. Давайте посмотрим маршруты:

Здесь стоит обратить внимание на две строки:

0.0.0.0/1 via 192.168.243.1 dev tun0
169.254.0.0/16 dev enp2s0 scope link metric 1000

Первая направляет весь трафик системы на интерфейс tun0, а вторая более интересная, она разворачивает трафик ip сети 169.254.0.0 на реальный интерфейс. Если ее не будет, то весь трафик будет идти на tun0, в том числе и трафик от программы OpenVPN, который уже прошел этот интерфейс и получиться петля. Чтобы разорвать подключение в таком варианте достаточно нажать Ctrl+C в терминале, где вы запустили openvpn.

Второй способ использовать OpenVPN в Linux - это установить плагин openvpn для NetworkManager и подключатся с помощью него. Для установки этого пакета в Ubuntu выполните такую команду:

sudo apt-get install network-manager-openvpn

Теперь откройте апплет Network Manager, разверните "Соединение VPN" и выберите "Настроить соединение" :

В открывшемся окне нажмите кнопку "+" :

Затем выберите надпись "VPN" .

Снова смотрим таблицу маршрутизации:

В целом, NetworkManager создает другие правила, но они работают так же. Настройка клиента openvpn на ubuntu завершена.

Использование OpenVPN в Android

Вы можете пользоваться OpenVPN на любой платформе, в том числе и на Android. Для устройств было выпущено официальное приложение OpenVPN Connect. С помощью него вы можете подключиться к сети, как и в предыдущем варианте, с помощью ovpn файла. Вы можете установить это приложение из Google Play:

Откройте приложение, нажмите на кнопку меню, затем выберите "Import" -> "Import profile from SDCard" :

Выберите нужный файл и нажмите "Select" :

Затем осталось нажать "Connect" для подключения к сети:

Настройка клиента openvpn включает только импорт конфигурационного файла, больше ничего не нужно. Дальше ваш трафик будет направлен через VPN, здесь тоже вы можете посмотреть таблицу маршрутизации, если установлен эмулятор терминала:

Правда, здесь мы не увидим такой ситуации, как в Linux, маршрутизация на VPN в Android осуществляется немного по-другому.

Как пользоваться OpenVPN в Windows

Нельзя было не рассказать в этой статье как пользоваться OpenVPN GUI в Windows, тем более что это ненамного сложнее чем в Android. Нам нужно установить клиент OpenVPN. Вы можете скачать его на официальном сайте:

После загрузки запустите программу от имени администратора и пройдите все шаги мастера:





3. Войдите в и загрузите архив файлов конфигурации.

4. Разархивируйте архив с файлами конфигурации.

5. Запустите ярлык программы OpenVPN GUI с рабочего стола.

6. В трее Windows (в левом нижнем углу рабочего стола) найдите иконку программы OpenVPN GUI (монитор с замком). Возможно понадобится развернуть весь список приложений в трее.

7. Правой кнопкой мыши нажмите на иконку OpenVPN GUI и выберите пункт “Импорт конфигурации”.

8. Импортируйте разархивированные файлы конфигурации по одному. Файлы конфигурации с окончанием _udp – это протокол UDP, скорость выше, а пинг ниже.

9. Кликните правой кнопкой мыши на иконку OpenVPN GUI в трее, выберите нужный сервер и нажмите подключиться.

10. Желтая иконка OpenVPN GUI говорит о процессе подключения, зеленая иконка говорит о удачном подключении и защите.

11. Для выбора другого сервера, нужно сначала отключиться от подключенного и только после этого выбрать и подключиться к другому серверу.

12. Для отключения от сервера кликните иконку OpenVPN GUI в трее, выберите выделенный сервер, затем выберите “отключиться”.

13. Если необходимо удалить файлы конфигурации найти их можно по пусти: C:\Users\***имя пользователя***\OpenVPN\config

В сущности, Open vpn представляет собой весьма интересную программу, работающую под Virtual Private Network разновидности точка-точка, причем, менять FireWall-настройки для её использования не требуется. Это программа приходит на помощь, когда необходимо подключиться к приватной виртуальной сети, например, присоединиться к домашней сети или офисной VPN.

Данная программа нередко выступает в роли универсального клиента, который дает возможность без проблем замаскировать свое пребывание в интернете, в два счета установив связь со сторонним сервером «мимо» вашего провайдера. Именно это делает open vpn популярной в среде анонимных VPN сервисов.

Что можно отнести к базовым преимуществам подобной модели?

  • Экономия траффика: все качественно сжимается lzo.
  • Легкость настройки: на все про всё уходит меньше часа, а разобраться сможет даже новичок или человек без специальных знаний.
  • Впечатляющая безопасность: шифруется весь траффик без исключения, при этом каждый клиент обособлен.
  • Клиент не нуждается в установке дополнительного оборудования.
  • Наконец, стабильность работы и достаточно приличная скорость.

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

Что представляет собой подключение через открытый VPN?

Для того чтобы гарантировать соединению и вашим данным полную безопасность, применяется библиотека OpenSSL. Это открывает программе максимальный доступ к имеющимся в сборке шифровочным алгоритмам. Дополнительно может применяться HMAC - это обеспечивает усиленное шифрование данных в тот момент, когда информация обрабатывается или передается.

  • В каких операционных системах может использоваться OpenVPN клиент? Во всех основных ОС, к числу которых принадлежит Windows, MAC OS, FreeBSD.
  • Через какие порты OpenVPN производит все сетевые операции и перемещения? UDP или TCP, более того, возможна работа через HTTP, NAT и др.

Так что, если вы собираетесь приобрести доступ к vpn server, думается, технология open vpn определенно вас заинтересует. Десятки исследований и попыток скрупулезно сравнить OpenVPN и PPTP выстроили четкую картину: улучшенные алгоритмы шифрования данных делают клиента в разы более эффективным в вопросах безопасности. Легкость обслуживания вносит дополнительные баллы в его пользу. Удачной вам работы!

1) На сайте openvpn.net переходим в раздел Community . Во вкладке Downloads нажимаем на Community Downloads .

2) Выбираем установочный файл в соответствии с разрядностью ОС (32bit /64bit ), установленной на и скачиваем его.

3) Запускаем установочный файл и выполняем шаги установки.

5) В процессе установки OpenVPN программа может запросить подтверждение установки TAP -драйвера. Данный запрос необходимо подтвердить нажатием на кнопку Установить .

6) На этом процесс установки завершается.

Настройка на стороне сервера

Рассмотрим пример настройки OpenVPN-соединения с использованием самоподписанного SSL-сертификата.

1) Запускаем командную строку.

Пуск (Start) -> Выполнить (Run) -> cmd

2) Переходим в директорию C:\Program Files\OpenVPN\easy-rsa при помощи команды:

Cd \Program Files\OpenVPN\easy-rsa

3) Запускаем файл init-config.bat в командной строке:

Init-config.bat

После запуска файла будет создан файл vars.bat .

4) Файл vars.bat необходимо открыть в текстовом редакторе (блокнот или Wordpad) и изменить данные для подписи ключей на свои личные. Отредактировать можно информацию в следующих строках:

Set KEY_COUNTRY=US #Страна set KEY_PROVINCE=CA #Область set KEY_CITY=SanFrancisco #Город set KEY_ORG=OpenVPN #Название компании set [email protected] #Контактный e-mail

Также, в случае отсутствия записи вида:

Set OPENSSL_CONF=C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf

необходимо её добавить под строкой:

Set KEY_CONFIG=openssl-1.0.0.cnf

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

5) Для создания index и serial файлов, выполняем поочередно следующие команды в командной строке:

Vars clean-all

6) Следующей командой создается СА-ключ, которым будет подписываться будущий SSL-сертификат. После запуска команды будут запрошены значения параметров. Если до этого вы внесли корректировки в файл vars.bat , то на параметры, указанные в 4-м шаге можно отвечать путём нажатия Enter . Исключением является параметр – Common Name . В нём необходимо ввести хостнейм сервера, либо доменное имя.

Build-ca

7) Создаем ключ Диффи-Хельмана.

Build-key-server <имя_сервера>

В нашем случае будет следующая команда:

Build-key-server server

Заполнение производится по аналогии 6-го шага. В поле Common Name в нашем случае указываем server . На оба вопроса «Sign the certificate? » и «1 out of 1 certificate requests certified, commit? » отвечаем согласием путём ввода «y «, и затем нажимаем Enter .

9) Cоздаем отдельный ключ для каждого клиента:

Build-key client1

Вводим необходимые контактные данные. В Common Name указываем client1 .

Переносим файлы из папки /keys в папку /config .

10) Из папки /sample-config копируем файл server.ovpn в папку /config

Настройка файервола

Убеждаемся в том, что порты 5194 и 1194 не заблокированы файерволом, иначе добавляем разрешающие правила на входящий и исходящий трафик:

11) Переходим в Start (Пуск) -> All programs -> Administrative Tools -> Windows Firewall with Advanced Security .

12) Нажимаем в левой части окна на Inbound Rules и в разделе Actions нажимаем на New rule . В результате должен появиться мастер создания правил.

13) Предложенные 5 шагов заполняем следующим образом:

Шаг 1 — Rule type: Port;

Шаг 2 — Protocol and Ports: По умолчанию в настройках OpenVPN сервера используется UDP-протокол. Если данная конфигурация не изменялась, то выбираем в данном шаге UDP . В противном случае — TCP . В поле Specific local ports указываем 5194 .

Шаг 3 – Action: Allow the connection;

Шаг 4 – Profile: Оставляем галочки включенными.

Шаг 5 – Name: Указываем название правила на своё усмотрение и нажимаем Finish .

14) Аналогичным образом добавляем правило для порта 1194 , после чего переходим в Outbound Rules и создаем два правила, идентичные тем, которые были созданы в Inbound .

Запуск сервера

15) Запускаем сервер OpenVPN путём нажатия правой кнопкой мыши на файле server.ovpn Sarting OpenVPN on this config file .

16) В результате появится командная строка, в которой будет отображен процесс запуска VPN-сервера. Если по окончанию будет выведена строка Initialization Sequence Completed , значит запуск прошел успешно.

Настройка на стороне клиента

Следующие шаги предполагают наличие уже установленного OpenVPN-клиента.

1) Из папки /sample-config на сервере скачиваем на компьютер файл client.ovpn в папку OpenVPN/config/

2) Из папки /config на сервере скачиваем файлы ca.crt , client1.crt , client1.key на компьютер в папку OpenVPN/config/

3) Открываем скачанный файл client.ovpn в текстовом редакторе и вносим следующие корректировки:

В записи remote my-server-1 1194 заменяем my-server-1 на IP-адрес сервера. В cert client.crt изменяем client.crt на client1.crt В key client.key изменяем client.key на client1.key

После этого сохраняем изменения.

4) Запускаем OPENVPN-GUI . В системном трее нажимаем правой кнопкой на иконке OpenVPN и в контекстном меню выбираем пункт Edit config .

Если открывшаяся конфигурация не соответствует файлу client.ovpn , то приводим настройки в соответствующий вид. Если соответствует, то закрываем редактор, вновь нажимаем правой кнопкой на иконке в системном трее и выбираем пункт Connect . Если в появившемся окне процесса соединения отобразятся строки:

Initialization Sequence Completed MANAGEMENT: >STATE: ********,CONNECTED,SUCCESS

Возможные ошибки

failed to update database TXT_DB error number 2

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

Решение: указание другой контактной информации.

WARNING: can"t open config file: /etc/ssl/openssl.cnf

Причина: некорректно установленный путь в переменной окружения OPENSSL_CONF .

Решение: необходимо объявить данную переменную в файле vars.bat , как указано в шаге 4 настройки на стороне сервера.

Лучшие статьи по теме