- Установка OpenVPN в Ubuntu
- Устанавливаем OpenVPN в Linux
- Шаг 1: Установка OpenVPN
- Шаг 2: Создание и настройка удостоверяющего центра
- Шаг 3: Конфигурация клиентских сертификатов
- Шаг 4: Настройка OpenVPN
- Настройка OpenVPN клиента
- Установка
- Windows
- Linux CentOS
- Linux Ubuntu
- Android
- Настройка
- Пример конфигурационного файла
- Параметры конфигурационного файла
- Сертификаты
Установка OpenVPN в Ubuntu
Некоторые пользователи заинтересованы в создании частной виртуальной сети между двумя компьютерами. Обеспечивается поставленная задача с помощью технологии VPN (Virtual Private Network). Реализовывается соединение через открытые или закрытые утилиты и программы. После успешной установки и настройки всех компонентов процедуру можно считать завершенной, а подключение — защищенным. Далее мы бы хотели детально обсудить осуществления рассмотренной технологии через клиент OpenVPN в операционной системе на базе ядра Linux.
Устанавливаем OpenVPN в Linux
Поскольку большинство юзеров используют дистрибутивы, основанные Ubuntu, сегодня инструкции будут базироваться именно на этих версиях. В других же случаях кардинальной разницы в инсталляции и конфигурации OpenVPN вы не заметите, разве что придется соблюдать синтаксис дистрибутива, о чем вы можете прочесть в официальной документации своей системы. Предлагаем ознакомиться со всем процессом пошагово, чтобы детально разобраться в каждом действии.
Обязательно следует учитывать, что функционирование OpenVPN происходит через два узла (компьютер или сервер), а значит это то, что установка и настройка касается всех участников подключения. Наше следующее руководство будет ориентировано как раз на работу с двумя источниками.
Шаг 1: Установка OpenVPN
Конечно, начать следует с добавления всех необходимых библиотек на компьютеры. Приготовьтесь к тому, что для выполнения поставленной задачи использоваться будет исключительно встроенный в ОС «Терминал».
- Откройте меню и запустите консоль. Сделать это можно также путем нажатия комбинации клавиш Ctrl + Alt + T.
Пропишите команду sudo apt install openvpn easy-rsa для установки всех нужных репозиториев. После ввода нажмите на Enter.
Подтвердите добавление новых файлов, выбрав соответствующий вариант.
Переходите к следующему шагу только тогда, когда инсталляция будет произведена на обеих устройствах.
Шаг 2: Создание и настройка удостоверяющего центра
Центр спецификации отвечает за проверку открытых ключей и обеспечивает надежное шифрование. Создается он на том устройстве, к которому потом будут подключаться другие пользователи, поэтому откройте консоль на нужном ПК и выполните следующие действия:
- Первоочередно создается папка для хранения всех ключей. Вы можете расположить ее где угодно, но лучше подобрать надежное место. Используйте для этого команду sudo mkdir /etc/openvpn/easy-rsa , где /etc/openvpn/easy-rsa — место для создания директории.
Далее в эту папку требуется поместить скрипты дополнения easy-rsa, а делается это через sudo cp -R /usr/share/easy-rsa /etc/openvpn/ .
В готовой директории создается удостоверяющий центр. Сначала перейдите в эту папку cd /etc/openvpn/easy-rsa/ .
Затем вставьте в поле следующую команду:
sudo -i
# source ./vars
# ./clean-all
# ./build-ca
Пока серверный компьютер можно оставить в покое и переместиться к клиентским устройствам.
Шаг 3: Конфигурация клиентских сертификатов
Инструкцию, с которой вы будете ознакомлены ниже, потребуется провести на каждом клиентском компьютере, чтобы организовать корректно функционирующее защищенное соединение.
- Откройте консоль и напишите там команду sudo cp -R /usr/share/easy-rsa /etc/openvpn/ , чтобы скопировать все требуемые скрипты инструмента.
Ранее на серверном ПК был создан отдельный файл с сертификатом. Теперь его нужно скопировать и поместить в папку с остальными компонентами. Проще всего это сделать через команду sudo scp username@host:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/easy-rsa/keys , где username@host — адрес оборудования, с которого производится скачивание.
Осталось только создать личный секретный ключ, чтобы в дальнейшем через него осуществлялось соединение. Сделайте это, перейдя в папку хранения скриптов cd /etc/openvpn/easy-rsa/ .
Для создания файла используйте команду:
sudo -i
# source ./vars
# build-req Lumpics
Lumpics в этом случае — заданное название файла. Созданный ключ в обязательном порядке должен находиться в одной и той же директории с остальными ключами.
Осталось только отправить готовый ключ доступа на серверное устройство, чтобы подтвердить подлинность своего соединения. Делается это с помощью той же команды, через которую производилось скачивание. Вам нужно ввести scp /etc/openvpn/easy-rsa/keys/Lumpics.csr username@host:
/ , где username@host — имя компьютера для отправки, а Lumpics.csr — название файла с ключом.
На серверном ПК подтвердите ключ через ./sign-req
/Lumpics , где Lumpics — название файла. После этого верните документ обратно через sudo scp username@host:/home/Lumpics.crt /etc/openvpn/easy-rsa/keys .
На этом все предварительные работы завершены, осталось только привести сам OpenVPN в нормальное состояние и можно начинать использовать частное шифрованное соединение с одним или несколькими клиентами.
Шаг 4: Настройка OpenVPN
Следующее руководство будет касаться и клиентской части, и серверной. Мы все разделим по действиям и предупредим об изменениях машин, поэтому вам остается только выполнить приведенную инструкцию.
- Сначала создайте файл конфигурации на серверном ПК с помощью команды zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf . При конфигурации клиентских устройств этот файл также придется создавать отдельно.
Ознакомьтесь со стандартными значениями. Как видите, порт и протокол совпадает со стандартными, однако отсутствуют дополнительные параметры.
Запустите созданный конфигурационный файл через редактор sudo nano /etc/openvpn/server.conf .
Мы не будем вдаваться в подробности изменения всех значений, поскольку в некоторых случаях они индивидуальны, но стандартные строки в файле должны присутствовать, а выглядит подобная картина так:
port 1194
proto udp
comp-lzo
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
После завершения всех изменений сохраните настройки и закройте файл.
Работа с серверной частью завершена. Запустите OpenVPN через созданный конфигурационный файл openvpn /etc/openvpn/server.conf .
Теперь приступим к клиентским устройствам. Как уже было сказано, здесь тоже создается файл настроек, но на этот раз он не распаковывается, поэтому команда имеет следующий вид: sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.conf .
Запустите файл таким же образом, как это было показано выше и внесите туда следующие строки:
client
dev tun
proto udp
remote 194.67.215.125 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.key 1
comp-lzo
verb 3 .
По завершении редактирования запустите OpenVPN: openvpn /etc/openvpn/client.conf .
Пропишите команду ifconfig , чтобы удостовериться в работе системы. Среди всех показанных значений обязательно должен присутствовать интерфейс tun0.
Для перенаправления трафика и открытия доступа к интернету для всех клиентов на серверном ПК вам потребуется поочередно активировать указанные ниже команды.
sysctl -w net.ipv4.ip_forward=1
iptables -A INPUT -p udp —dport 1194 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
В рамках сегодняшней статьи вы были ознакомлены с процедурой инсталляции и настройки OpenVPN на серверной и клиентской части. Советуем обращать внимание на уведомления, показанные в «Терминале» и изучать коды ошибок, если такие появляются. Подобные действия помогут избежать дальнейших проблем с подключением, ведь оперативное решение проблемы предотвращает появление других вытекающих неполадок.
Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник
Настройка OpenVPN клиента
В данной инструкции подробно описан процесс настройки клиента OpenVPN на примере операционных систем Windows и Linux. Также, с ее помощью можно настроить скиента на Android.
Установка
Windows
Заходим на официальную страницу загрузки openvpn и скачиваем клиента для нужной Windows:
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Linux CentOS
Устанавливаем репозиторий EPEL:
yum install epel-release
yum install openvpn
Linux Ubuntu
apt-get install openvpn
Android
Установка выполняется из Google Play. Набираем в поиске OpenVPN Connect — нажимаем установить и принимаем условия.
Настройка
После установки программы конфигурационный файл не создается автоматически и его нужно создать вручную.
В системах Windows создаем файл config.ovpn в папке %programfiles%\OpenVPN\config.
* имя файла может быть любым, расширение должно быть .ovpn.
Для создания конфигурационного файла в Linux выполняем команду:
* чтобы служба openvpn автоматически выполняла соединение, необходимо, чтобы конфигурационный файл назывался client.conf.
Пример конфигурационного файла
client
dev tun
proto udp
remote 192.168.0.15 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
dh dh2048.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
comp-lzo
verb 0
Параметры конфигурационного файла
Параметр | Значения | Описание |
---|---|---|
client | Строка говорит о том, что конфигурационный файл описывает клиентское подключение (программа сама устанавливает соединение, а не ждет, как сервер). | |
dev | tap или tun | Выбор виртуального сетевого драйвера. TUN — сетевой уровень модели OSI, оперирует IP-пакетами. TAP — эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. Настраивая OpenVPN клиента, в большинстве случаев, необходимо выбирать tun. TAP необходимо использовать для работы определенных сервисов, например DHCP. |
dev-node | любая строка | Параметр используется в системах Windows в случаях, если имеется несколько сетевых интерфейсов. Значение этого параметра должно содержать название сетевого подключения, через который должен работать OpenVPN. |
proto | udp или tcp | Указывает, какой протокол использовать для передачи данных. В большинстве случаев, лучше использовать UDP, так как данный протокол создает меньше нагрузки на сеть. |
remote | VPN-сервер и порт | Задает сервер, к которому должен подключаться клиент, а также сетевой порт (по умолчанию 1194), на котором OpenVPN принимает запросы. Можно указать несколько строк. |
remote-random | Если указано несколько строк remote, данный параметр говорит, что необходимо подключаться к удаленным серверам в случайном порядке. | |
resolv-retry | количество секунд или infinite | Используется в тех случаях, когда в качестве сервера указано доменное имя. Параметр задает время в секундах для повторного переподключения, если не удалось узнать имя сервера. infinite — держать связь с сервером постоянно. |
nobind | Клиент использует динамический порт для подключения. | |
user | учетная запись | Задает определенного пользователя для работы клиента (только для UNIX-систем). |
group | группа | Задает определенную группу для работы клиента (только для UNIX-систем). |
persist-key | Не перечитывает ключи при перезагрузке сервиса OpenVPN. | |
persist-tun | Не перечитывает параметры туннеля при перезагрузке сервиса OpenVPN. | |
http-proxy | сервер прокси и порт | Использовать прокси-сервер для подключения. |
http-proxy-retry | Переподключаться к прокси-серверу, если связь была разорвана. | |
http-proxy-timeout | количество секунд | Время, через которое выполнять попытки переподключения к прокси-серверу. |
mute-replay-warnings | Параметр стоит задавать при использовании беспроводного соединения. Он отключит дублирование предупреждений пакетов. | |
ca | пут к сертификату | Корневой сертификат удостоверяющего центра. Генерируем на сервере. |
cert | пут к сертификату | Открытый ключ клиента. Генерируем на сервере. |
key | пут к сертификату | Закрытый ключ клиента. Генерируем на сервере. |
dh | пут к сертификату | Ключ с алгоритмом Diffie-Hellman (Диффи-Хеллмана). |
remote-cert-tls | сервер | Исключает возможность mitm атаки, включая верификацию сертификата сервера. |
tls-client | Указание на то, что это клиент TLS. | |
tls-auth | ta.key 1 | Дополнительный уровень аутентификации посредством ключа TLS. |
float | Удаленный хост может менять IP-адрес в процессе соединения, при этом последнее не будет разорвано. | |
keepalive | секунд1 секунд2 | Пинговать каждые секунд1 сервер и если в течение секунд2 не будут получены ответные пакеты, перезапустить подключение. |
cipher | алгоритм | Указывает алгоритм шифрования. Примеры: AES-256-CBC, AES-128-CBC, BF-CBC, DES-EDE3-CBC. |
comp-lzo | Использовать сжатие. | |
verb | число от 0 до 9 | Уровень детализации лога. 0 отключает отладочную информацию. |
mute | число | Указывает сколько лог-сообщений может отображаться для каждой категории события. |
auth-user-pass | ничего или путь к файлу | Говорит клиенту, что необходима аутентификация. Если не указан путь к файлу, клиент выкинет окно для авторизации, иначе прочитает данные из файла. |
ipchange | команда или путь к скрипту | Выполняет команду при смене IP. |
connect-retry | секунд | Переподключиться к серверу через указанное количество секунд, если соединение было разорвано. |
connect-retry-max | число | Сколько раз повторять соединение, если оно было разорвано. |
shaper | байт | Задает максимальную скорость передачи данных для исходящего трафика. |
tun-mtu | число | Задает MTU. |
status | путь к файлу | Путь к фалу хранения статуса. |
log | путь к файлу | Путь к лог-файлу. |
askpass | путь к файлу | Путь к файлу с паролем для приватного ключа (private key password). |
Наиболее полный и актуальный список параметров для OpenVPN можно получить командой openvpn —help (в Linux и Windows).
Сертификаты
Клиентские сертификаты генерируются на стороне сервера. Процедура следующая.
Источник