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

Статус
В этой теме нельзя размещать новые ответы.

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 Для просмотра ссылки Войди или Зарегистрируйся
# tar xvzf ./lzo-2.02.tar.gz
# cd ./lzo-2.02
# ./configure
# make
# make install

1. И так, скачиваем сервер распаковываем, конфигурируем и устанавливаем.
# wget Для просмотра ссылки Войди или Зарегистрируйся
# 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

Сначала вылезет вот такое окошко:
777no1.jpg


Следом если пройдет все хорошо, то в трее загорится зеленый значек с 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:
Set WSHShell = WScript.CreateObject("WScript.Shell")
aScript = WSHShell.run("OpenVPN\bin\openvpn-gui.exe")

Теперь, когда нам необходимо восользоватся VPN, вставляем переносной носитель информации, и запускаем файл InstallVPN.vbs.
Дожидаемся установки драйвера TUN-TAP Win32, далее запускаем RunVPN.vbs.
После запуска OpenVPN GUI, выбираем Connect, и насдаждаемся мобильным VPN.
После окончания работы не забываем удалить все следы присутствия VPN, выключив OpenVPN-GUI и запустив скрипт UninstallVPN.vbs

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

(c) KaDaBRa
 
Вот ещё чуть - чуть от wiki _http://ru.wikipedia.org/wiki/VPN
 
_http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz

вот полный линк на скачивание верхнего пакета для компрессии
 
фух :) еле терпения хватило дочитать)) спасибо! сейчас поставлю, очень полезная статья!
 
хочу посоветовать использовать клиентский ключ p12. на мой взгляд чем меньше файлов - тем удобнее

вместо build-key client
нужно использовать build-key-pkcs12
 
хостеры часто пишут, что сделаем вам "а-на-на" если будете проксю и ВПН юзать - осторожно ;)
 
хостеры часто пишут, что сделаем вам "а-на-на" если будете проксю и ВПН юзать - осторожно ;)

рекомендую для установки openvpn сервера использовать дешевые linux-vds, за 10-20$ в месяц. такие и потерять не жалко в случае абузы.
 
:bc:
Возможно ли поставить VPN на shared хостинг, если на этом хостинге есть выделенный IP и shell доступ ???
 
Нет, запуск требует root доступа для tun/tap устройства
 
Вот неплохая wiki-статья на тему установки OpenVPN сервера на базе дебиана, для новичков гораздо проще организовать, чем в инструкции выше :)

 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху