Настройка OpenVPN в Ubuntu
*VPN — инструмент, реализующий технологию виртуальной частной сети. Главной задачей *VPN является обеспечение должного уровня безопасности сети, состоящей из нескольких кластеров локальных сетей или между отдельными клиентами (звеньями) в сетевой инфраструктуре. Конфиденциальность и цельность передаваемых данных поддерживаются с помощью туннелей шифрования.
Механизм работы:
В первую очередь необходимо настроить и запустить север. После запуска сервер сможет принимать и перенаправлять запросы/ответы через защищенные SSL-туннели, передавая информацию на сетевой адаптер. Также, возможна настройка proxy сети, так как инструмент позволяет производить гибкую маршрутизацию трафика.
Требования к ОС
Перед развёрткой *VPN проверьте правильность базовых параметров сервера. У сервера должен быть статический белый IP адрес, если нужен динамический, необходимо интегрировать динамический DNS. В настройках должна быть разрешена установка файлов конфигурации из директорий официальных источников. cat /etc/apt/sources.list — команда проверки директорий (проверяйте наличие комментариев, обычно комментарии содержат полную ссылку на файл конфигурации с официальным поставщиком ОС). Внимательно проверьте валидность параметров сети ( DNS-hosts, hostname).
Установка ПО
- Производим обновление файлов директории и системы
apt-get update apt-get upgrade
- Устанавливаем *VPN
git clone …
- Необходимо установить easy-rsa, разместить скрипты в нужную директорию, подготовить ключи шифрования
apt-get install easy-rsa cd /etc/*vpn/ && make-cadir easy-rsa
- Перейти в директорию:
cd /etc/*vpn/easy-rsa
- Создание симлинка файла, отвечающего за настройки *vpn
ln -s *vpn… *vpn.cnf
- Активация скрипта vars
source ./vars
- Провести очистку дефолтных ключей
./clean-all
- Развертывание сертификации
./build-ca
Скрипт запросит подтверждение некоторых данных, можно поставить предустановленные
- Создание ключа сервера
./build-key-server server
- Сгенерируйте специальной командой клиентскую пару ключей
./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 адрес сервера.