OpenVPN —Виртуальная частная сеть (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами (используя инфраструктуру открытых ключей PKI) . Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек. OpenVPN была создана Джеймсом Йонаном (James Yonan) и распространяется под лицензией GNU GPL. УстановкаДля установки OpenVPN в терминале введите: sudo apt-get install openvpn Генерация сертификатовСертификаты сервераСоздаем и копируем easy-rsa в папку /etc/openvpn. Это гарантирует, что любые изменения не будут потеряны, если пакет обновится.sudo mkdir /etc/openvpn/easy-rsa/ sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ Вам также необходимо настроить разрешения в папке easy-rsa для текущего пользователя на создание файлов: sudo chown -R $USER /etc/openvpn/easy-rsa/ Затем отредактируйте /etc/openvpn/easy-rsa/vars указав данные о принадлежность открытого ключа (организации/частному лицу/... ) nano /etc/openvpn/easy-rsa/vars меняем умолчательные значения заключенные в кавычки на ваши пример: export KEY_COUNTRY="MD" export KEY_PROVINCE="MD" export KEY_CITY="Tiraspol" export KEY_ORG="my home" export KEY_EMAIL="user@example.com" Генерация сертификатов сервера: cd /etc/openvpn/easy-rsa/ source vars ./clean-all Внимание: данная команда выполняется достаточно медленно даже на очень мощных компьютерах: ./build-dh ./pkitool --initca ./pkitool --server server cd keys openvpn --genkey --secret ta.key sudo cp server.crt server.key ca.crt dh1024.pem ta.key /etc/openvpn/ Сертификаты клиентовДля клиентов вашей VPN также необходимо создать уникальные сертификаты для аутентификации на сервере. Чтобы создать сертификат для одного из клиентов, введите в терминале: cd /etc/openvpn/easy-rsa/ source vars ./pkitool client1 Скопируйте следующие файлы в папку /etc/openvpn/ клиентской машины:
Пример конфигурации
Создаем файл конфигурации /etc/openvpn/server.conf:
Конфигурация сервераnano /etc/openvpn/server.confи копируем в файл текст: #Если вы хотите запустить несколько OpenVPN процессов #на одной машине, используйте различные номера #свободных портов для каждого процесса. Вы также должны #открыть этот порт в вашем файерволе. port 443 #протокол, по умолчанию UDP proto tcp-server ;proto udp #указание типа интерфейса и режима работы: tun = L3-туннель, tap = L2-туннель dev tun #VPN подсеть #из которой OpenVPN будет выделять адреса клиентам. #Сервер возьмет себе адрес 10.8.0.1, #остальные остануться доступными для клиентов. server 10.8.0.0 255.255.255.0 #Файле ipp.txt будут храниться соответствие клиента IP адресу #Если OpenVPN будет остановлен или перезапущен, #переприсоединившиеся клиенты смогут получить #тот же виртуальный IP адрес из пула, что был назначен ранее ifconfig-pool-persist ipp.txt #По умолчанию, клиенты могут видеть только сервер. #Чтобы клиенты могли "видеть" друг друга в сети включаем директиву: client-to-client #SSL/TLS корневой сертификат (ca), #сертификат(cert), #и частный ключ (key). ca ca.crt cert server.crt key server.key # Этот файл необходимо строго хранить в секрете # файл параметров Диффи-Хэлмана dh dh1024.pem # Сервер и каждый клиент должны иметь # копию этого ключа. # Второй параметр выставляется в '0' # для сервера и '1' для клиентов. tls-auth ta.key 0 #криптографический сертификат cipher DES-EDE3-CBC # Triple-DES # #Cжатие на VPN линии. comp-lzo После настройки OpenVPN сервера, перезапускаем : sudo /etc/init.d/openvpn restart Конфигурация клиентаНа клиентской машине установите OpenVPN: sudo apt-get install openvpn Создаем файл конфигурации /etc/openvpn/client.conf: nano /etc/openvpn/client.confи копируем в файл текст: client remote example.com 443 proto tcp-client dev tun resolv-retry infinite ca ca.crt cert client1.crt key client1.key tls-auth ta.key 1 cipher DES-EDE3-CBC comp-lzo Перезапускаем OpenVPN клиент: sudo /etc/init.d/openvpn restart |