Различия
Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
wiki:nastrojka_openvpn [2013/06/26 09:43] purepower старая ревизия восстановлена |
wiki:nastrojka_openvpn [2013/10/18 11:39] (текущий) staubnull |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
\\ | \\ | ||
===== Установка и настройка приложения OpenVPN ===== | ===== Установка и настройка приложения OpenVPN ===== | ||
- | + | \\ | |
- | + | ||
==== Генерация ключей для OpenVPN ==== | ==== Генерация ключей для OpenVPN ==== | ||
- | |||
Первый этап настройки OpenVPN - генерация ключей для серверной и клиентской частей OpenVPN, необходимых для безопасного подключения. Мы рассмотрим самый распространенный вариант работы - один ключ сервера и неограниченное количество ключей клиентов. | Первый этап настройки OpenVPN - генерация ключей для серверной и клиентской частей OpenVPN, необходимых для безопасного подключения. Мы рассмотрим самый распространенный вариант работы - один ключ сервера и неограниченное количество ключей клиентов. | ||
- | Для их создания понадобится установочный файл OpenVPN для систем Windows, который можно взять по ссылке: [[http://openvpn.net/index.php/download/community-downloads.html|Windows Installer (32-bit или 34-bit)]]. | + | Для их создания понадобится установочный файл 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", открыть его в любом блокноте для редактирования и заменить строки как в примере: | + | После его установки необходимо перейти в папку с установленным OpenVPN (по умолчанию: "C:\Program Files\OpenVPN"), открыть папку "easy-rsa", скопировать файл "vars.bat" (или если его нет, то файл "vars.bat.sample") и переименовать в "vars-server.bat", открыть его в любом блокноте для редактирования и заменить строки как в примере (или просто нажать на имя файла в примере для того, чтобы скачать его себе на компьютер): |
<file - vars-server.bat> | <file - vars-server.bat> | ||
@echo off | @echo off | ||
Строка 26: | Строка 23: | ||
set PKCS11_PIN=pin | set PKCS11_PIN=pin | ||
</file> | </file> | ||
- | Далее необходимо еще раз скопировать файл "vars.bat", но в этот раз дать ему имя "vars-client.bat", открыть его в любом блокноте для редактирования и заменить строки как в примере (будьте внимательны - несколько строк отличаются от предыдущего блока кода): | + | Далее необходимо еще раз скопировать файл "vars.bat", но в этот раз дать ему имя "vars-client.bat", открыть его и заменить строки (будьте внимательны - несколько строк отличаются от предыдущего блока кода): |
<file - vars-client.bat> | <file - vars-client.bat> | ||
@echo off | @echo off | ||
Строка 52: | Строка 49: | ||
build-ca.bat | build-ca.bat | ||
Далее после ввода команды, через пробел, необходимо ввести Имя_сервера, которое мы вводили в коде файла "vars-server", после чего в консоли могут возникать вопросы на которые нужно отвечать "yes" (если предоставляется выбор "y/n" или просто жать "Enter" когда запрашиваются данные (мы их уже указали в файле "vars-server"). | Далее после ввода команды, через пробел, необходимо ввести Имя_сервера, которое мы вводили в коде файла "vars-server", после чего в консоли могут возникать вопросы на которые нужно отвечать "yes" (если предоставляется выбор "y/n" или просто жать "Enter" когда запрашиваются данные (мы их уже указали в файле "vars-server"). | ||
+ | vars-server.bat | ||
build-key-server.bat Имя_сервера | build-key-server.bat Имя_сервера | ||
Следующие действия очень похожи на предыдущие - после ввода команды, через пробел, необходимо ввести Имя_клиента, которое мы вводили в коде файла "vars-client", после чего в консоли могут возникать вопросы на которые нужно отвечать "yes" (если предоставляется выбор "y/n" или просто жать "Enter" когда запрашиваются данные (мы их уже указали в файле "vars-client"). | Следующие действия очень похожи на предыдущие - после ввода команды, через пробел, необходимо ввести Имя_клиента, которое мы вводили в коде файла "vars-client", после чего в консоли могут возникать вопросы на которые нужно отвечать "yes" (если предоставляется выбор "y/n" или просто жать "Enter" когда запрашиваются данные (мы их уже указали в файле "vars-client"). | ||
Строка 65: | Строка 63: | ||
Если все они там присутствуют, то можно смело приступать к следующему этапу. | Если все они там присутствуют, то можно смело приступать к следующему этапу. | ||
- | + | \\ | |
- | ==== Установка пакетов необходимых для OpenVPN ==== | + | ==== Установка пакетов необходимых для работы OpenVPN ==== |
Для установки пакетов OpenVPN необходимо подключившись по SSH к консоли ввести следующую команду: | Для установки пакетов OpenVPN необходимо подключившись по SSH к консоли ввести следующую команду: | ||
opkg install openvpn-openssl | opkg install openvpn-openssl | ||
- | ==== Настройка сервера OpenVPN ==== | + | \\ |
+ | ==== Подготовка OpenVPN ==== | ||
Если планируется постоянное использование OpenVPN, то удобнее всего будет настроить его автозапуск, для чего нужно ввести следующую команду в консоли: | Если планируется постоянное использование OpenVPN, то удобнее всего будет настроить его автозапуск, для чего нужно ввести следующую команду в консоли: | ||
mv /media/DISK_A1/system/etc/init.d/K11openvpn /media/DISK_A1/system/etc/init.d/S11openvpn | mv /media/DISK_A1/system/etc/init.d/K11openvpn /media/DISK_A1/system/etc/init.d/S11openvpn | ||
- | |||
Первое что необходимо сделать - это скопировать файлы сгенерированных ключей в папку /media/DISK_A1/system/etc/openvpn/keys. | Первое что необходимо сделать - это скопировать файлы сгенерированных ключей в папку /media/DISK_A1/system/etc/openvpn/keys. | ||
Набор ключей для сервера: | Набор ключей для сервера: | ||
Строка 88: | Строка 84: | ||
client.key | client.key | ||
- | Далее необходимо отредактировать основной файл настроек OpenVPN, находящийся по адресу /media/DISK_A1/system/etc/openvpn/openvpn.conf | + | ==== Настройка сервера 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 | ||
- | ==== Задание правил IPTABLES ==== | + | В итоге должно получиться что-то вроде следующего файла: |
+ | <file - openvpn-server.conf> | ||
+ | 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 | ||
+ | </file> | ||
+ | |||
+ | ==== Настройка клиента OpenVPN ==== | ||
+ | Настройка аналогична настройке сервера за исключением нескольких параметров, которые мы сейчас рассмотрим: | ||
+ | Задание доменного имени хоста или IP адреса для соединения с сервером OpenVPN: | ||
+ | remote 87.224.228.141 | ||
+ | Включение постоянного обновления адреса сервера, если указано доменное имя хоста. | ||
+ | resolv-retry infinite | ||
+ | Эта команда заставляет клиента проверить сертификат, предъявленный сервером. Проверяется то, что сертификат именно серверный. | ||
+ | ns-cert-type server | ||
+ | |||
+ | В итоге должно получиться что-то вроде следующего файла: | ||
+ | <file - openvpn-client.conf> | ||
+ | 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 | ||
+ | </file> | ||
+ | |||
+ | \\ | ||
+ | ==== Задание правил IPTABLES ==== | ||
Для успешного функционирования OpenVPN нам понадобится добавить правила в IPTABLES. | Для успешного функционирования OpenVPN нам понадобится добавить правила в IPTABLES. | ||
- | Проще всего это будет сделать создав (изменив) файл /media/DISK_A1/system/etc/firewall.d/fw.sh, в котором должны быть следующие строки: | + | Проще всего это будет сделать создав (изменив) файл /media/DISK_A1/system/etc/firewall.d/fw.sh, в который внести необходимые строки. Обязательна только первая строка,а далее в зависимости от настроек:\\ |
- | Если наш OpenVPN настроен на порт 1194 и использует для соединения tcp: | + | Если наш OpenVPN настроен на порт 1194 и использует для соединения tcp: |
- | iptables -A INPUT -p tcp --dport 1194 -j ACCEPT | + | <file - fw.sh> |
+ | #!/bin/sh | ||
+ | iptables -A INPUT -p tcp --dport 1194 -j ACCEPT | ||
+ | </file> | ||
+ | Если наш OpenVPN настроен на порт 1194 и использует для соединения udp: | ||
+ | <file - fw.sh> | ||
+ | #!/bin/sh | ||
+ | iptables -A INPUT -p udp --dport 1194 -j ACCEPT | ||
+ | </file> | ||
+ | \\ | ||
+ | |||
+ | ==== Настройка OpenVPN в Windows ==== | ||
+ | Для настройки OpenVPN на компьютере под управлением MS Windows необходимо скопировать файл настроек (предварительно изменив его расширение на .ovpn) и файлы ключей (так же в папке "keys") в папку "C:\Program Files\OpenVPN\config". | ||
+ | После чего соединение можно будет запустить через OpenVPN GUI. | ||
- | Если наш OpenVPN настроен на порт 1194 и использует для соединения udp: | + | \\ |
- | iptables -A INPUT -p udp --dport 1194 -j ACCEPT | + |