Настройка OpenVPN в Ubuntu

*VPN — инструмент, реализующий технологию виртуальной частной сети. Главной задачей *VPN является обеспечение должного уровня безопасности сети, состоящей из нескольких кластеров локальных сетей или между отдельными клиентами (звеньями) в сетевой инфраструктуре. Конфиденциальность и цельность передаваемых данных поддерживаются с помощью туннелей шифрования.

Механизм работы:

В первую очередь необходимо настроить и запустить север. После запуска сервер сможет принимать и перенаправлять запросы/ответы через защищенные SSL-туннели, передавая информацию на сетевой адаптер. Также, возможна настройка proxy сети, так как инструмент позволяет производить гибкую маршрутизацию трафика.

Требования к ОС

Перед развёрткой *VPN проверьте правильность базовых параметров сервера. У сервера должен быть статический белый IP адрес, если нужен динамический, необходимо интегрировать динамический DNS. В настройках должна быть разрешена установка файлов конфигурации из директорий официальных источников. cat /etc/apt/sources.list — команда проверки директорий (проверяйте наличие комментариев, обычно комментарии содержат полную ссылку на файл конфигурации с официальным поставщиком ОС). Внимательно проверьте валидность параметров сети ( DNS-hosts, hostname).

Установка ПО

  1.  Производим обновление файлов директории и системы
apt-get update
apt-get upgrade
  1.  Устанавливаем *VPN

git clone …

  1.  Необходимо установить easy-rsa, разместить скрипты в нужную директорию, подготовить ключи шифрования
apt-get install easy-rsa
cd /etc/*vpn/ && make-cadir easy-rsa
  1.  Перейти в директорию:
cd /etc/*vpn/easy-rsa
  1.  Создание симлинка файла, отвечающего за настройки *vpn

ln -s *vpn… *vpn.cnf

  1.  Активация скрипта vars

source ./vars

  1.  Провести очистку дефолтных ключей

./clean-all

  1.  Развертывание сертификации

./build-ca

Скрипт запросит подтверждение некоторых данных, можно поставить предустановленные

  1.  Создание ключа сервера

./build-key-server server

  1.  Сгенерируйте специальной командой клиентскую пару ключей

./build-key-pass client1

Скрипт потребует установить сид-фразу по соображениям безопасности

Имена ключей должны быть уникальными в случае, если существуют несколько пользователей. Иногда, требуется повторная процедура создания сертификатов. Тогда, снова активизируйте vars, подготовьте ключи.

    cd /etc/*vpn/easy-rsa
    source ./vars
    ./build-key client3

Приватный канал сообщения

Ключи Диффи-Хеллмана — надежный способ установления конфиденциальной связи в сети. Генерируется пара ключей, один из них — секретный.

./build-dh

После выполнения, в директории /etc/*vpn/easy-rsa/keys/ появится файл dh2048.pem

Командой захватываем необходимые файлы для сервера

cp ca.crt ca.key dh2048.pem server.crt server.key /etc/*vpn

Ключи храните надежно, иначе злоумышленники, совершив подмену или компрометацию секретных данных, нанесут весомый ущерб.

Клиенты

Клиенту понадобится всего 3 файла ca.crt, client1.crt, client1.key. Каждому клиенту необходимо отдавать только его ключи. Данные файлы можно разместить в директории /etc/*vpn на оборудовании клиента, если оно под управлением ОС группы Linux.

В ОС Windows их следует разместить в пользовательский каталог.

Отладка клиента и сервера

*VPN содержит sample файлы. В данных файлах содержатся варианты настроек (шаблоны).

gunzip -c /usr/share/doc/*vpn/examples/sample-config-files/server.conf.gz > /etc/*vpn/server.conf

С полученным файлом сервер уже готов к работе. Он сконфигурирован с возможностью туннелирования, однако не имеет возможности к проксированию, т.е. пересылки клиентского трафика от своего имени. Исправим это.

Для начала, проверяем какие файлы оказались в директории /etc/*vpn:

ls /etc/*vpn
nano /etc/*vpn/server.conf

Проверяем соответствуют ли файлы конфигурации с файлами в каталоге. Главное, чтобы ключи и сертификаты были валидными.

Запуск сервера

/etc/init.d/*vpn start

Чтобы определить статус сервера

/etc/init.d/*vpn status

 Копируем файлы настроек клиента и ключи, заранее сгенерированные в /root

cp /usr/share/doc/*vpn/examples/sample-config-files/client.conf /root - настройки
cd /etc/openvpn/easy-rsa/keys - взять ключи
cp client1.key client1.crt ca.crt /root - скопировать в директорию root

Немного измените конфигурационный файл клиента

nano /root/client.conf

Находим строки “# The hostname/IP and port of the server”. Для remote изменяем my-server-1 на IP сервера или его домен. Далее, редактируем ключи в графе ssl/tls. Переносим файлы на устройство, которое будет клиентом.

*vpn *vpn.conf

На этом этапе настройка пока не завершена. Можно заметить, что машина не имеет доступ в интернет во время подключения к *VPN, потому что виртуальный адаптер и сервер существуют как шлюз.

Настройте маршрутизацию трафика

Для этого отредактируйте файл server на сервере

nano /etc/*vpn/server.conf    

Из строки push «redirect-gateway def1 bypass-dhcp» удалите (;). В файле sysctl.conf добавьте net.ipv4.ip_forward=1. Эта команда позволяет ОС осуществлять движение трафика между интерфейсами(форвардинг). Чтобы редактирование вступило в силу — перезагрузите оборудование. Мы прекрасно понимаем, что постоянная перезагрузка ни к чему. Командой echo 1 > /proc/sys/net/ipv4/ip_forward разрешить перенаправлять данные без перезагрузок серверной машины.

Список команд для настройки NAT сети

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

В завершающий этап отладки сервера входит настройка форвардинга DNS. Для этого установите dnsmaq — apt-get install dnsmasq. Отредактируйте файл конфигурации dnsmaq — nano /etc/dnsmasq.conf, добавив listen-address=10.8.0.1 и bind-interfaces. Также измените файл настроек сети — nano /etc/network/interfaces. Укажите соответствующий секциям настроек адаптера адрес DNS серверов —  dns-nameservers 8.8.8.8 8.8.4.4

На аварийный случай учитывайте возможность перезагрузки соединения с DNS.

/etc/init.d/dnsmasq restart

Поставьте разрешение клиентам *VPN на использование настроенного DNS. Для этого снимите комментарии в строке

push "dhcp-option DNS 10.8.0.1"

Перезагрузите сервер, чтобы обновить соединение и загруженные надстройки.

reboot

Выполните подключение к серверу. Откройте  сайт, проверяющий адрес устройства в сети(IP). Сайт должен показать IP адрес сервера.