Быстрая установка OpenVPN на VDS с Debian

Written by elwood

Недавно решил снова поднять OpenVPN на дешевом VDS от minivds.com, дабы не париться в случае бана IP на всяких файловых помойках типа ifolder.ru или rapidshare.com. Для этого пришлось заказать отдельный виртуальный сервер на дебиане, потому что виртуальные сети, реализованные в FreeBSD, поддерживаются хостером minivds.com криво, не позволяя устанавливать OpenVPN (администрация хостинга обещает, что к моменту перехода на FreeBSD 7, в которой реализована поддержка виртуальных сетей, ситуация улучшится, но пока остается пользоваться доступным дебиановским вариантом). Убив воскресенье на это, я решил написать краткий мануал по инсталляции OpenVPN на Debian’e, с учетом специфики minivds. Итак, приступим.

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

apt-get install openvpn

На момент публикации в дебиан-пакете была версия 2.0.9.

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

Генерация ключей.

Ищем папку с утилитами для генерации ключей (easy-rsa). В моем случае это было здесь :

/usr/share/doc/openvpn/examples/easy-rsa/2.0/

и последовательно выполняем команды:
./vars
(необходимо для того, чтобы следующие команды знали, что они работают с директорией /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ )

./clean-all
(инициализация директории с ключами – должна появиться та самая keys/ )

./build-ca
(создает ca.crt – файл главного Certificate Authority сертификата)

./pkitool --server server
(генерирует X.509 сертификат для сервера – пару файлов server.crt и server.key)

./pkitool client
(генерирует такой же серт для юзера – client.crt и client.key)

./build-dh
(генерирует ключ Диффи-Хельмана – dh1024.pem)

openvpn --genkey --secret keys/ta.key
(генерирует ключ для TLS-аутентификации)

Здесь приведены размеры и параметры ключей по умолчанию (1024 бита), естественно, при желании, можно сделать ключи разной длины, просто добавьте параметры)

Назначение полученных файлов хорошо описано в статье
Настройка VPN на основе OpenVPN :

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

Закидываем файлы, необходимые для сервера, в /etc/openvpn/
Туда же кидаем файл openvpn.config примерно следующего содержания:
(конфиг берем аналогичный рассмотренному в той же статье, мой выглядел так)

daemon
proto udp
local 82.146.57.24 # сюда ставим IP адрес нашего VDS-сервера.
dev tap
port 5278 # по этому порту будут происходить клиентские коннекты.
tls-server
tls-auth /etc/openvpn/ta.key 0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
mode server
server 10.7.0.0 255.255.255.0 # маска подсети, в которой будут виртуализироваться клиенты и сервер.
push "dhcp-option DNS 82.146.51.164" # здесь пишем IP одного из ns-сервером, указанных нам при регистрации VDS.
duplicate-cn
cipher DES-EDE3-CBC
#cipher none
user root
group root
persist-tun
persist-key
comp-lzo
keepalive 10 120
verb 3
client-to-client

3. Итак, сервер OpenVPN у нас готов к запуску, однако нам еще необходимо позаботиться о том, чтобы можно было из виртуальной локальной сети, в которую мы попадаем при подключении к VPN-серверу, достучаться до внешней части Инторнета. Перед настройкой придется обратиться за помощью в техподдержку minivds для того, чтобы они включили интерфейсы tun и tap, необходимые для работы OpenVPN, и включили NAT (иначе мы не сможем прописать роутинг). После того, как добрый и отзывчивый сапорт поможет нам и сообщит о том, что все включено и готово к действию, мы должны добавить одну запись в таблицу nat iptables:

iptables -t nat -A POSTROUTING -s 10.7.0.0/24 -o venet0 -j SNAT --to-source 82.146.57.24

Проверить, добавлена ли цепочка в роутинг, можно следующей командой:

iptables -t nat -L

4. Ок, теперь мы можем запустить OpenVPN командой

openvpn /etc/openvpn/openvpn.config

Осталось настроить клиент.

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

Загружаем дистр клиента OpenVPN для Windows (если у вас Windows Vista, то лучше пробовать самые последние версии, счс например, 2.1), при инсталляции долго не думаем, жмем везде на Next и OK, оставляя все значения дефолтными. Допустим, мы установили клиент в C:\Program Files\OpenVPN\.

Берем файлы, необходимые для клиента, закидываем в директорию C:\Program Files\OpenVPN\config. И добавляем туда еще 1 файл – с расширением .ovpn – этот файл будет содержать конфиг клиента. Если таких файлов в директории несколько, то OpenVpnGUI будет предоставлять вам выбор, к какому серверу подключаться (точнее, какой из имеющихся конфигов использовать).

File MyVpnConfig.ovpn:

client #указываем OpenVPN, что необходимо работать в режиме клиента
proto udp #указываем, что сервер работает через udp
remote 82.146.57.24 #хост, к которому присоединяемся
port 5278 #порт к которому следует подключатся
dev tun #используемый тип устройства 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 #включаем шифрацию пакетов
#cipher none
comp-lzo #Включить сжатие траффика
verb 3 #Уровень информации для отладки
dev tap

При использовании Windows XP далее проблем уже быть не должно, все должно прекрасно работать и шифроваться, достаточно лишь запустить OpenVPN-GUI и наслаждаться.

Если же у вас Windows Vista, то, во-первых, вам придется добавить в конец конфига 2 строчки:

route-method exe
route-delay 2

И запускать OpenVPN-GUI от имени Администратора (контекстное меню – Run As Administrator).
После этих манипуляций, Vista у меня перестала ругаться на невозможность изменения роута, и все заработало, как и следовало.

Всем удачи в начинаниях !

Материал частично взят из статьи
Настройка VPN на основе OpenVPN

Еще ссылки по теме:
http://www.netlly.ru/?q=node/23/
http://dedicatesupport.com/archives/8
http://help.mirhosting.com/?documentId=49
http://dedicatesupport.com/archives/32
http://www.opennet.ru/openforum/vsluhforumID10/3564.html#1