Различия



Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

wiki:nastrojka_openvpn [2013/06/26 09:43]
purepower старая ревизия восстановлена
wiki:nastrojka_openvpn [2013/10/18 11:39] (текущий)
staubnull
Строка 3: Строка 3:
 \\ \\
 ==== Генерация ключей для 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
Строка 24: Строка 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
Строка 50: Строка 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").
Строка 63: Строка 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. 
   Набор ключей для сервера:   Набор ключей для сервера:
Строка 86: Строка 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+