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

Иногда бывает необходимость закрыть свой реальный ip-адрес в сети Интернет или подставить адрес другой страны или просто иметь один и тот же ip-адрес независимо от того каким интернет соединением вы пользуетесь. Для решениях всех этих задач придет на помощь OpenVPN, который устанавливается на VPS, VDS или выделенном сервере. В отличии от PPTP технологии, которая использует GRE пакеты для связи с сервером, openvpn использует протоколы TCP/IP или UDP и может использовать любые порты, поэтому openvpn может работать за любыми firewall и NAT.

Лично я для работы OpenVPN использовал VDS с установленной ОС CentOS 5.5 на гипервизоре vmware ESXi. Я устанавливал минимальный набор пакетов, т.к. этот сервер предназначался только как VPN сервер. Не забудьте установить пакеты для компиляции программы, это можно сделать выполнив команду:

Для работы OpenVPN необходим драйвер TAP\TUN, проверить его наличие можно командой:

Если такого не имеется, то вам нужно будет пересобрать ядро, если же все ок, то идем дальше. Скачиваем и устанавливаем пакет LZO для сжатия трафика.:

Далее скачиваем и устанавливаем сам сервер OpenVPN:

После установки нам нужно настроить сервер. Для начала создадим ключи, нам нужно будет зайти в папку с исходниками ~/openvpn-2.1.1/easy-rsa/2.0 и от туда выполнить следующие команды:

Когда будете создавать сертификаты для сервера и клиента, то обратите внимание на строку «Common Name«, она обязательна к заполнению и значение для сервера и клиента должно быть разное.

Создаем ключ DH:

Создаем ключ для tls-аутентификации:

После всех этих команд у нас в папке keys появляются файлы ключей (обратите внимание файл «tls-аутентификации» ta.key будет в папке 2.0, т.е. в ~/openvpn-2.1.1/easy-rsa/2.0).

Нам нужно создать папку openvpn в папке etc и скопировать все файлы из папки keys и файл ta.key в папку /etc/openvpn. Клиенту (т.е. на свой компьютер) нужно будет скопировать файлы: ca.crt, dh1024.pem,client.crt, client.key, ta.key.

Теперь создаем конфигурационный файл openvpn.conf.

следующего содержания:

В этом файле обратите внимание на строки push «dhcp-option DNS 208.67.222.222» и push «dhcp-option DNS 208.67.222.220» здесь DNS оставить лучше такими, т.к. когда я прописывал ДНС своего провайдера, то были проблемы, провайдер разрешал пользоваться ДНС только своим клиентам и запросы из вне не принимал, я долго не мог понять в чем проблема. Так же обратите внимание на эти три строки:

без них у меня была оооочень медленная скорость, решение нашел на просторах интернета, на одном из форумов, сейчас уже не помню на каком. И еще, благодаря строке «duplicate-cn» можно использовать один сертификат для всех клиентов (например дать попользоваться VPN вашим друзьям).

Идем дальше, после написание конфига настраиваем сетевые параметры сервера, разрешаем ip-fowrwarding, для этого открываем файл sysctl.conf:

и изменяем значение net.ipv4.ip_forward на 1, у нас получается:

Сохраняем файл и выполняем команду для применения параметров:

Теперь открываем порт 1194, для этого в CentOS выполняем команду:

Появляется меню и выбираем кнопку «Customize» и в поле «Other ports» пишем: openvpn:tcp openvpn:udp, дальше жмем «ОК», «ОК» и выходим из меню настройки.
Добавляем правила в iptables:

где xxx.xxx.xxx.xxx ip-адрес вашего сервера.
Все готово, теперь осталось запустить наш сервер, для этого в папке с исходниками ~/openvpn-2.1.1/sample-scripts копируем файл openvpn.init в папку /etc/init.d/ и переименовываем в openvpn и запускаем сервер командой:

Сервер готов, теперь осталось настроить клиента под Windows, для этого скачиваем программу http://openvpn.net/release/openvpn-2.1.1-install.exe, устанавливаем и после в папку C:\Program Files\OpenVPN\config перемещаем полученные ранее файлы ключей (ca.crt, dh1024.pem,client.crt, client.key, ta.key) и создаем файл openvpn.ovpn:

где xxx.xxx.xxx.xxx адрес сервера VPN.

После этого запускаем OpenVPN GUI и в трее появляется иконка, жмем по ней правой клавишей мышки и выбираем Connect, после чего проверяем какой у нас ip адрес через сервис 2ip.ru.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">