\\ ===== Установка и настройка приложения OpenVPN ===== \\ ==== Генерация ключей для OpenVPN ==== Первый этап настройки OpenVPN - генерация ключей для серверной и клиентской частей OpenVPN, необходимых для безопасного подключения. Мы рассмотрим самый распространенный вариант работы - один ключ сервера и неограниченное количество ключей клиентов. Для их создания понадобится установочный файл OpenVPN для систем Windows, который можно взять по ссылке: [[http://openvpn.net/index.php/download/community-downloads.html|Windows Installer (32-bit или 64-bit)]]. После его установки необходимо перейти в папку с установленным OpenVPN (по умолчанию: "C:\Program Files\OpenVPN"), открыть папку "easy-rsa", скопировать файл "vars.bat" (или если его нет, то файл "vars.bat.sample") и переименовать в "vars-server.bat", открыть его в любом блокноте для редактирования и заменить строки как в примере (или просто нажать на имя файла в примере для того, чтобы скачать его себе на компьютер): @echo off set HOME=%ProgramFiles%\OpenVPN\easy-rsa set KEY_CONFIG=openssl.cnf set KEY_DIR=keys set KEY_SIZE=1024 set KEY_COUNTRY=RU set KEY_PROVINCE=Область set KEY_CITY=Город set KEY_ORG=Организация set KEY_EMAIL=Почтовый_адрес set KEY_OU=Имя_сервера set KEY_CN=Имя_сервера set KEY_NAME=Имя_сервера set PKCS11_MODULE_PATH=path set PKCS11_PIN=pin Далее необходимо еще раз скопировать файл "vars.bat", но в этот раз дать ему имя "vars-client.bat", открыть его и заменить строки (будьте внимательны - несколько строк отличаются от предыдущего блока кода): @echo off set HOME=%ProgramFiles%\OpenVPN\easy-rsa set KEY_CONFIG=openssl.cnf set KEY_DIR=keys set KEY_SIZE=1024 set KEY_COUNTRY=RU set KEY_PROVINCE=Область set KEY_CITY=Город set KEY_ORG=Организация set KEY_EMAIL=Почтовый_адрес set KEY_OU=Имя_сервера set KEY_CN=Имя_клиента set KEY_NAME=Имя_клиента set PKCS11_MODULE_PATH=path set PKCS11_PIN=pin Далее нужно запустить Командную строку Windows (можно сделать с помощью сочетания клавиш Win+R, или выбрать в меню Пуск > Все программы > Стандартные) ввести в нее последовательно: cd C:\Program Files\OpenVPN\easy-rsa md keys vars-server.bat clean-all.bat build-dh.bat build-ca.bat Далее после ввода команды, через пробел, необходимо ввести Имя_сервера, которое мы вводили в коде файла "vars-server", после чего в консоли могут возникать вопросы на которые нужно отвечать "yes" (если предоставляется выбор "y/n" или просто жать "Enter" когда запрашиваются данные (мы их уже указали в файле "vars-server"). vars-server.bat build-key-server.bat Имя_сервера Следующие действия очень похожи на предыдущие - после ввода команды, через пробел, необходимо ввести Имя_клиента, которое мы вводили в коде файла "vars-client", после чего в консоли могут возникать вопросы на которые нужно отвечать "yes" (если предоставляется выбор "y/n" или просто жать "Enter" когда запрашиваются данные (мы их уже указали в файле "vars-client"). vars-client.bat build-key.bat Имя_клиента После чего для проверки создания ключей зайдите в папку C:\Program Files\OpenVPN\easy-rsa\keys, там должны быть следующие файлы: ca.crt dh1024.pen Имя_сервера.crt Имя_сервера.key Имя_клиента.crt Имя_клиента.key Если все они там присутствуют, то можно смело приступать к следующему этапу. \\ ==== Установка пакетов необходимых для работы OpenVPN ==== Для установки пакетов OpenVPN необходимо подключившись по SSH к консоли ввести следующую команду: opkg install openvpn-openssl \\ ==== Подготовка OpenVPN ==== Если планируется постоянное использование OpenVPN, то удобнее всего будет настроить его автозапуск, для чего нужно ввести следующую команду в консоли: mv /media/DISK_A1/system/etc/init.d/K11openvpn /media/DISK_A1/system/etc/init.d/S11openvpn Первое что необходимо сделать - это скопировать файлы сгенерированных ключей в папку /media/DISK_A1/system/etc/openvpn/keys. Набор ключей для сервера: dh1024.pem ca.crt server.crt server.key Набор ключей для клиента: ca.crt client.crt client.key ==== Настройка сервера OpenVPN ==== Необходимо отредактировать основной файл настроек OpenVPN, находящийся по адресу "/media/DISK_A1/system/etc/openvpn/openvpn.conf". Рассмотрим некоторые возможные настройки: Порт на который будут поступать соединения. port 1194 Протокол, по которому будет идти соединение. proto udp Тип интерфейса и режим работы: tun = L3-туннель, tap = L2-туннель. dev tun Файл, содержащий параметры Diffie Hellman. dh keys/dh1024.pem Опция ca определяет корневой (root) сертификат, которым подписаны клиентские пары сертификат/ключ. Значение этой опции keys/ca.crt указывает месторасположение этого сертификата относительно каталога openvpn. (Или, иными словами, это открытый ключ сервера). ca keys/ca.crt Каждый участник OpenVPN соединения в TLS режиме должен иметь собственный сертификат и файл с закрытым ключом. Каждый сертификат должен быть подписан закрытым ключом центра сертификатов, чей открытый ключ указывается в опции ca. cert keys/serzh.crt Закрытый ключ, который генерируется вместе с сертификатом, указанным в опции cert. key keys/serzh.key Использование режима TLS: tls-server, tls-client Режим работы сервера. По умолчанию OpenVPN работает в p2p-режиме (point-to-point или один-к-одному), при указании mode server он работает в режиме сервера со многими клиентами. mode server Конфигурация интерфейса. При помощи параметра ifconfig определяем IP адрес сервера и маску подсети. ifconfig 10.10.10.1 255.255.255.0 Выделение пула IP адресов, которые будут выдаваться клиентам. ifconfig-pool 10.10.10.11 10.10.10.99 Если вы хотите, чтобы клиенты могли видеть друг друга, то необходимо добавить следующее: client-to-client Если вы хотите, что бы за клиентами закреплялись постоянные адреса, добавьте следующий параметр: ifconfig-pool-persist ipp.txt Он определяет файл, в котором будет сохраняться информация о машине и ее IP. Файл содержит строки: Имя машины,IP адрес. Во время работы, сервер с периодичностью в 600 секунд обновляет содержимое этого файла. При включении, сервер читает содержимое файла. Использование шифрования для повышения уровня безопасности соединения. cipher AES-128-CBC Макрокоманда "пинговать" противоположную сторону туннеля с указанным периодом 10 сек, при отсутствии встречных пингов в течение 120 сек, считать туннель упавшим и запускать пересоединение. keepalive 10 120 Не перечитывать заново файлы ключей при получении сигнала SIGUSR1 (переустановка соединения) или через интервал, указанный в опции "keepalive m n" (переустановить соединение через n секунд после отправки последнего icmp пакета клиенту, который остался без ответа). persist-key Не закрывать или переоткрывать устройства TUN/TAP при получении сигнала SIGUSR1 или по прошествию интервала n опции "keepalive m n". persist-tun Использование компрессии для уменьшения объема передаваемого траффика. comp-lzo Сохранение информации о текущих соединениях сервера: status log/status.log Cохранять или добавлять лог в указанный файл: log log/openvpn.log Установка уровня детализации событий для логов. verb 3 Установка ограничения на повторяющиеся события в логах. mute 5 В итоге должно получиться что-то вроде следующего файла: port 1194 proto udp dev tun dh keys/dh1024.pem ca keys/ca.crt cert keys/server.crt key keys/server.key tls-server mode server ifconfig 172.22.0.1 255.255.255.0 client-to-client ifconfig-pool-persist ipp.txt cipher AES-128-CBC keepalive 10 120 persist-key persist-tun comp-lzo status logs/status.log log logs/openvpn.log verb 3 mute 5 ==== Настройка клиента OpenVPN ==== Настройка аналогична настройке сервера за исключением нескольких параметров, которые мы сейчас рассмотрим: Задание доменного имени хоста или IP адреса для соединения с сервером OpenVPN: remote 87.224.228.141 Включение постоянного обновления адреса сервера, если указано доменное имя хоста. resolv-retry infinite Эта команда заставляет клиента проверить сертификат, предъявленный сервером. Проверяется то, что сертификат именно серверный. ns-cert-type server В итоге должно получиться что-то вроде следующего файла: port 1194 proto udp dev tun remote 87.224.228.141 ca keys/ca.crt cert keys/client.crt key keys/client.key tls-client client resolv-retry infinite ns-cert-type server cipher AES-128-CBC persist-key persist-tun comp-lzo status logs/status.log log logs/openvpn.log verb 3 mute 5 \\ ==== Задание правил IPTABLES ==== Для успешного функционирования OpenVPN нам понадобится добавить правила в IPTABLES. Проще всего это будет сделать создав (изменив) файл /media/DISK_A1/system/etc/firewall.d/fw.sh, в который внести необходимые строки. Обязательна только первая строка,а далее в зависимости от настроек:\\ Если наш OpenVPN настроен на порт 1194 и использует для соединения tcp: #!/bin/sh iptables -A INPUT -p tcp --dport 1194 -j ACCEPT Если наш OpenVPN настроен на порт 1194 и использует для соединения udp: #!/bin/sh iptables -A INPUT -p udp --dport 1194 -j ACCEPT \\ ==== Настройка OpenVPN в Windows ==== Для настройки OpenVPN на компьютере под управлением MS Windows необходимо скопировать файл настроек (предварительно изменив его расширение на .ovpn) и файлы ключей (так же в папке "keys") в папку "C:\Program Files\OpenVPN\config". После чего соединение можно будет запустить через OpenVPN GUI. \\