Виртуальная локалка на базе OpenVPN

Однажды возникла необходимость заиметь свою виртуальную локальную сеть. Долго выбирал основу для реализации. Кандидатами были PPTPD  и OpenVPN. Несмотря на то, что для OpenVPN нет клиентов из коробки ни в одном из дистров, выбрал его.

openvpn

OpenVPN

Установка в ОС Debian проще простого. Достаточно выполнить всего одну команду

sudo aptitude install openvpn

Далее нам необходимо создать сертификаты сервера. В этом нам помогут утилиты Easy-RSA которые в Debian лежат в папке /usr/share/doc/openvpn/examples/easy-rsa/2.0. Мне удобнее работать со скриптами из папки /etc/openvpn, поэтому я скопировал туда утилитки.

sudo cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn

Переходим в /etc/openvpn. Далее нам необходимо отредактировать файл vars, указывая желаемые данные для генерируемых сертификатов. Для этого открываем его в любом текстовом редакторе и изменяем KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG,  KEY_EMAIL. После чего устанавливаем необходимые переменный окружения командой:

. ./vars

Теперь надо создать ключи нашего сервера

./clean-all # Убиваем старые ключи, если они были.
openvpn --genkey --secret ta.key # Ключ TLS-auth
mv ./ta.key ./keys/
 ./build-dh #Ключ Диффи-Хеллмана.
./pkitool --initca # Certificate Authority для сервера.
./pkitool --server homevpn # Сертификат сервера.

И создаем ключ для нашего клиента

./pkitool vpnclient # Сертификат клиента.

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

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

mode server
tls-server
port 1194
proto udp
dev tap
tls-auth /etc/openvpn/keys/ta.key 0
ca keys/ca.crt
cert keys/homevpn.crt
key keys/homevpn.key
dh keys/dh1024.pem
ifconfig 192.168.3.1 255.255.255.0 # Внутренний IP сервера
ifconfig-pool 192.168.3.2 192.168.3.254 # Пул адресов.
#server 192.168.2.0 255.255.255.0
client-config-dir ccd
push "dhcp-option DNS 192.168.1.1"
push "redirect-gateway def1"
push "route-gateway 192.168.3.1"
keepalive 10 120
duplicate-cn
verb 3
cipher DES-EDE3-CBC # Тип шифрования.
persist-key
log-append /var/log/openvpn.log # Лог-файл.
persist-tun
comp-lzo

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

sudo /etc/init.d/openvpn  start

Если возникнут проблемы, подробности можно прочитать в log-файле.

Чтобы наши VPN клиенты могли выходить в Интернет через сервер, необходимо включить поддержку IP forwarding:

sysctl net.ipv4.ip_forward=1
echo "sysctl net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

Добавим правило, для маскировки ip в цепочку POSTROUTING таблицы nat

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

eth0 меняем на имя вашего интерфейса, смотрящего в ИНТЕРНЕТ.

На этом настройка нашего сервера закончена. Перейдем к настройке нашего клиента под Windows. Скачиваем программу клиент с официального сайта проекта.

Установка не вызывает ничего сложного. Можно просто жать ДАЛЕЕ.

После того, как программа установлена. Необходимо получить ключи нашего клиента и сертификат сервера. Для этого из папки /etc/openvpn/keys сервера забираем ключи

  • ca.crt и ta.key
  • vpnclient.crt,  vpnclient.key и vpnclient.csr

И помещаем их в папку C:\Program Files\OpenVPN\config на клиентской машине. Далее в этой же папке созадем конфигурационный файл нашего клиента client.ovpn:

tls-client
proto udp
remote X.X.X.X
dev tap
port 1194
pull
tls-auth ta.key 1
ca ca.crt
cert vpnclient.crt
key vpnclient.key
cipher DES-EDE3-CBC
comp-lzo

Вместо X.X.X.X указываем адрес вашего VPN сервера. Запускаем и подключаемся. При успешном соединении мы  увидим следующую картинку

OpenVPN Клиент

OpenVPN Клиент соединение

Вот и все. Приятного использования частных виртуальных сетей.

Поделиться в соц. сетях

Share to Google Buzz
Share to Google Plus
Share to LiveJournal
Share to MyWorld
Share to Odnoklassniki
This entry was posted in Компьютерное. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*