HOWTO Создание шифрованных туннелей с помощью OpenVPN

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск


Это — незавершённая статья. Вы можете помочь проекту, исправив и дополнив материал.


Пожалуйста приведите эту статью в соответствиe с wiki разметкой, и затем удалите {{Wikify}} из текста статьи


Содержание

[править] Введение

[править] Зачем это нужно

Часто в работе администраторов появляются такие задачи как соединение нескольких офисов, расположенных в разных частях города (области,страны,мира), в единую логическую сеть. Если все точки подключены к одному провайдеру,то можно арендовать отдельный VLAN,но если провайдеры разные или точки находятся в разных городах,приходится искать другие варианты. И тут на помощь приходит OpenVPN

[править] Что такое OpenVPN

OpenVPN - это реализация технологии VPN( Virtual Private Network - Виртуальная Частная Сеть),которая позволяет строить одни логические сети поверх других. Другими словами создав VPN, мы сделаем свою сеть,доступ к которой будет только у тех кому будет явно разрешено. Все данные будут защищены с помощью SSL.

[править] Какие задачи можно решить

OpenVPN просто незаменим для решения следующих задач:

  • соединение нескольких удаленных офисов в единую сеть с единой адресацией ( bridging ) или просто связью
  • обеспечение шифрованного канала для безопасной передачи данных
  • обеспечение доступа на сервер не имеющего внешнего IP

[править] Установка и настройка

[править] Установка

Для Gentoo Linux достаточно одной команды emerge openvpn.Emerge любезно скачает самые свежие исходники поставит их для нас.Можно приступать к решению непосредственно самих задач.

[править] Конфигурация

Все конфигурационные файлы openvpn хранятся в каталоге /etc/openvpn.Можно создавать несколько соединений,при этом создавая каталоги вида /etc/openvpn/connectN/.Обязательным условие является наличие файла /etc/openvpn/connectN/local.conf.Скрипт инициализации /etc/init.d/openvpn проверяет наличие файла,и запускает туннель.

[править] Примеры конфигураций

[править] Туннель между двумя компьютерами

[править] Сервер с множественными подключениями

Итак нам нужен сервер который будет принимать множество клиентов,и обслуживать виртуальную сеть.Для этого мы будем использовать SSL/TLS ( прочитать об этом можно например тут [1] ). Для начала нам необходимо создать необходимые ключи для безопасного обмена данными.Для этого есть специальная утилита 'pkitool'. Она лежит в каталоге /usr/share/openvpn/easy-rsa/.Переходим в этот каталог командой cd /usr/share/openvpn/easy-rsa/. Открываем файл /usr/share/openvpn/easy-rsa/vars в любом текстовом редакторе. Там необходимо указать переменную KEY_DIR и указать информацию необходимую для сертификатов.Пример файла vars:

export EASY_RSA="`pwd`"
export KEY_CONFIG="$EASY_RSA/openssl.cnf"
export KEY_DIR="/etc/openvpn/vserver/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="RU"
export KEY_PROVINCE="XX"
export KEY_CITY="MyTown"
export KEY_ORG="MyOrganization"
export KEY_EMAIL="my@mail.jp"

В данном случае конфигурация соединения хранится в /etc/openvpn/vserver/.Последние 5 переменных необходимо заменить на свои.

ВАЖНО: В названиях не должно быть пробелов

После редактирования загружаем переменные командой source ./vars.Генерируем необходимые ключи:

  • ./build-dh - генерация ключа Диффи-Хеллмана [2] .Этот процесс может ненадолго затянуться.
  • ./pkitool --initca - Certificate Authority для сервера
  • ./pkitool --server hydra - генерируем сертификат X.509 [3] для сервера hydra
  • ./pkitool enjoy - генерируем сертификат X.509 для клиента enjoy

Сертифкаты созданы и лежат в каталоге /etc/openvpn/vserver/keys.Теперь открываем конфигурационный файл сервера /etc/openvpn/vserver/local.conf и пишем туда следующее:

#режим сервера 
mode server
#использовать TLS-аутентифкацию
tls-server
#прослушивание по tcp-протоколу
proto tcp-server
#использовать tap устройство
dev tap
#порт 5555
port 5555
#скрипт который будет выполнятся при поднятии впн туннеля
up /etc/openvpn/vserver/upscript.sh
#режим демона.
daemon
#TLS-ключ
tls-auth /etc/openvpn/vserver/keys/auth.key 0
#указываем файд с CA
ca /etc/openvpn/vserver/keys/ca.crt
#сертификат сервера
cert /etc/openvpn/vserver/keys/hydra.crt
#указываем ключ сертификата
key /etc/openvpn/vserver/keys/hydra.key
#файл Диффи-Хеллмана
dh /etc/openvpn/vserver/keys/dh1024.pem
#указываем IP сервера и маску виртуальной сети
ifconfig 10.10.0.1 255.255.255.0
#описываем наш vpn пул.
#IP-адрес через push "ifconfig адрес маска"
ifconfig-pool 10.10.0.2 10.10.0.250
#разрешаем дублирование сертифкатов.
#если упустить эту опцию то на каждого клиента надо 
#генерировать отдельный сертификат с помощью pkitool
duplicate-cn
#включаем режим отладки
verb 3
#алгоритм шифрования.Список алгоритмов можно получить 
#с помощью команды openvpn --show-ciphers
cipher DES-EDE3-CBC
#не перечитывать ключ при сбросе соединения 
persist-key
#лог файл
log-append /var/log/openvpn.log
persist-tun
#включаем сжатие
comp-lzo}}

/etc/openvpn/vserver/local.conf.client

#работа в режиме клиента с TLS-аутентифкацией
tls-client 
#протокол tcp
proto tcp-client
#удаленный сервер
remote server.domain.ru
#устройство 
dev tap
port 5555
cd /etc/openvpn/vserver
#принимать команды push от сервера.то есть позволять переконфигурировать клиента
pull
#файл для авторизации
tls-auth /etc/openvpn/vserver/keys/auth.key 1
#указываем файл Диффи-Хеллмана
dh /etc/openvpn/vserver/keys/dh1024.pem 
#указываем файл CA
ca /etc/openvpn/vserver/keys/ca.crt 
#указываем файл с сертификатом клиента
cert /etc/openvpn/vserver/keys/enjoy.crt 
#указываем файл с ключем клиента
key /etc/openvpn/vserver/keys/enjoy.key 
#алгоритм шифрования
cipher DES-EDE3-CBC
#использовать сжатие
comp-lzo
Личные инструменты