Локальная сеть и OpenVPN

Владимир Рочев

Веб-разработчик

Локальная сеть и OpenVPN

Организация локальной сети из нескольких компьютеров, находящихся в одном кабинете, на одном этаже или в одном здании — задача не столь сложная, если используются маршрутизаторы. Но что делать, когда компьютеры находятся в разных зданиях, городах, и даже странах?

В этом посте я рассмотрю базовую настройку сервера и клиента OpenVPN.

Вступление

Передо мной встала задача связать несколько компьютеров в локальную сеть, находящихся на значительном расстоянии друг от друга. Программы вроде Hamachi сразу отпали из-за ограничений на количество пользователей в бесплатной редакции. Поэтому сегодня мы будем организовывать локальную сеть без доступа во внешний мир с помощью OpenVPN, который будет установлен на VPS с ОС Debian. За более подробной информацией советую обратиться к официальному Howto.

Нам понадобятся:

  • Debian в роли сервера
  • Windows 7 в роли клиента
  • OpenVPN сервер и клиент
  • Текстовый редактор (например, vim)

Установка

Для начала установим OpenVPN из репозитория, введя в терминале следующую команду:

apt-get install openvpn

Настройка сервера

Переходим в директорию:

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

Для удобства сразу отредактируем файл vars:

vim vars

В этом файле нам достаточно заменить следующие строки на свои значения:

export KEY_COUNTRY="RU"
export KEY_PROVINCE="SPb"
export KEY_CITY="Saint-Petersburg"
export KEY_ORG="My Organization"
export KEY_EMAIL="support@example.org"

Далее создадим CA сертификаты (при запросе ввода данных можно ввести свои, а можно, нажав Enter, подставить те, которые находятся в квадратных скобках):

. ./vars
./clean-all
./build-ca

Генерация CA сертификатов

И сгенерируем сертификаты сервера:

./build-key-server server

Генерация сертификатов сервера

Также нужно сгенерировать параметры Диффи—Хеллмана:

./build-dh

Генерация параметров Диффи-Хеллмана

Скопируем следующие файлы из директории ./keys/ в директорию /etc/openvpn/:

ca.crt
server.crt
dh1024.pem
server.key

Копируем сертификаты

Настало время настройки сервера. Отредактируем файл server.conf:

vim /etc/openvpn/server.conf

Мой конфигурационный файл получился такой:

port 4455
proto udp # протокол - tcp или udp
dev tun
ca ca.crt
cert server.crt
key server.key # держите этот файл в секрете
dh dh1024.pem
server 10.0.0.0 255.255.255.0 # выделяем блок IP адресов с 10.0.0.1 по 10.0.0.255
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.0.0.1"
client-to-client # разрешаем клиентам видеть друг друга
keepalive 10 120
cipher AES-128-CBC # такая же последовательность шифрования должна быть и у клиента
comp-lzo
persist-key
persist-tun
status openvpn-status.log # текущий статус сервера(кто сейчас подключён и прочее)
log-append  openvpn.log
verb 3

Осталось только перезагрузить сервер:

/etc/init.d/openvpn restart

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

Для каждого нового клиента нужно выполнять следующие команды на сервере:

cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
. ./vars
./build-key johndoe
Здесь johndoe - имя клиента. Помните, что имя клиента для каждого нового сертификата должно быть уникальным.

Клиенту надо передать следующие файлы из директории ./keys:

ca.crt
johndoe.crt
johndoe.key

После того, как мы установили клиент OpenVPN на Windows, копируем файлы для клиента в  следующий каталог:

C:\Program Files\OpenVPN\config\

В этом же каталоге создаём файл openvpn.ovpn и сохраняем его примерно с такой конфигурацией

client # говорим, что мы - клиент
dev tun
proto tcp
remote example.org 4455 # хост и порт сервера
resolv-retry infinite # пытаться подключаться бесконечно
nobind
persist-key
persist-tun
ca ca.crt
cert johndoe.crt
key johndoe.key
cipher AES-128-CBC
comp-lzo
verb 3

Осталось только подключиться клиентом к сети. В случае успешного подключения, в правом нижнем углу высветится сообщение, в котором будет указан выделенный вам IP адрес:

Результат подключения

Логотип OpenVPN
В своём посте я рассмотрел довольно типичный случай создания локальной сети с помощью OpenVPN, так как для решения поставленной задачи этого вполне хватило. Но это лишь малая часть того, какие возможности в организации сети предоставляет OpenVPN.

Комментарии

Тут без вас никак. Поделитесь с нами вашими мыслями

Горячие вакансии