Openvpn установка и настройка debian 11

Обновлено: 04.07.2024

Рассмотрим процесс установки OpenVPN на примере дистрибутива Debian 8.2. Задача состоит том, чтобы использовать сервер на базе OpenVPN в качестве шлюза для выхода в интернет. В результате мы получаем белый ip, можем обойти ограничения провайдера и дополнительно сжать и зашифровать весть трафик, который идет через сервер.

Установка сервера OpenVPN

Для работы OpenVPN необходима поддержка TUN/TAP интерфейса на сервере. Как правило, с этим не должно возникнуть проблем при использовании физической машины или виртуализации KVM.

А вот в случае использования OpenVZ, необходимо активировать поддержку TUN/TAP в настройках контейнера. Чтобы проверить, что система поддерживает TUN-интерфейс, необходимо выполнить команду:

Установим OpenVPN на сервере:

В качестве способа авторизации клиента на сервере мы будем использовать аутентификацию по ключу. Для этого создаём директорию в которую будут скопированы сгенерированные ключи:

Копируем в нее утилиты и конфиги для работы с ключами:

Переходим в директорию:

При необходимости, в файле vars можно настроить параметры ключей и сертификатов. Данный пункт не обязательный и при желании его можно смело пропустить.

Меняем следующие строки на свои значения:

После правки vars необходимо инициировать переменные:

Очищаем каталог keys/server от старых сертификатов и ключей:

Создаем корневой сертификат:

Далее генерируем сертификаты сервера и клиента:

Для каждого клиента нужно сгенерировать отдельные ключи.

Cоздаем ключ для tls-аутификации:

Все сгенерированные сертификаты и ключи находятся в директории:

Копируем сертификаты и ключи сервера в директорию OpenVPN:

Для настройки клиента OpenVPN, необходимо скопировать ключи и сертификаты из списка ниже:

На этом этапе установка OpenVPN закончена. Теперь выполним настройку сервера OpenVPN.

Настройка сервера OpenVPN

Копируем и распаковываем пример конфигурационного файла в содержимое директории OpenVPN:

В зависимости от наших потребностей, изменяем настройки сервера OpenVPN:

Пример настройки OpenVPN:

Создадим директорию для клиентских настроек:

После завершения настройки OpenVPN, перезагружаем сервер:

В случае успешного запуска OpenVPN в системе должен появится новый tun0 интерфейс:

Это означает, что OpenVPN сервер запущен. В случае проблем с запуском OpenVPN, используем лог-файл:

Настройки маршрутизации для клиентов OpenVPN

После подключения клиента к серверу OpenVPN, шлюз будет изменен на IP виртуальной сети сервера. Если клиент OpenVPN находится в локальной сети, вам необходимо дополнительно настроить маршрутизацию для доступа к ресурсам внутри сети. Для этого создаем файл в каталоге ccd с тем же именем ключа клиента:

Добавим в файл следующие параметры:

Первая строка добавляет маршрут в локальную сеть клиента. Вторая строка задает DNS-сервер, который будет использоваться после подключения.

Включаем NAT на OpenVPN сервере

Чтобы использовать OpenVPN для выхода в интернет, на сервере необходимо задать правило для маршрутизации трафика из сети OpenVPN в локальную сеть или сеть интернет-провайдера.

Включаем поддержку IP forwarding, открываем в файл:

В котором необходимо раскомментировать строку:

Загрузим переменные ядра:

Прописываем правила iptables. Нужно разрешить клиентам из подсети 10.8.0.0/24 доступ в интернет, разрешить принимать пакеты из интернета и пропустить трафик клиентов через NAT.

Замените eth0 на имя своего внешнего интерфейса. Следует отметить, правило MASQUERADE создает нагрузку на процессор. Поэтому, предпочтительнее использовать SNAT :

Сохраним и добавим правила в автозагрузку:

Настройка клиента OpenVPN

Если OpenVPN не установлен, для установки клиента в Debian или Ubuntu необходимо выполнить команду:

Копируем на компьютер клиента ключи и сертификаты из списка ниже:

Переносим ключи и сертификаты в директорию OpenVPN:

Копируем и распаковываем пример конфигурационного файла в содержимое директории OpenVPN:

Открываем файл в текстовом редакторе:

Добавим в содержимое файла следующие параметры:

Для Windows необходимо положить файл client.ovpn в папку:

Опции протокола, шифрования и сжатия у клиента и сервера должны быть одинаковые. При необходимости вы можете настроить OpenVPN через прокси. На этом настройка OpenVPN в Debian закончена, теперь пора проверить его работоспособность. Перезапустим OpenVPN:

В данной статье подробно описывается, как получить подключение на OpenVPN с использованием Debian Linux. Эти команды запускаются от рута.

Что такое OpenVPN?

OpenVPN использует различные методы для аутентификации клиентов на сервере: предварительно разделяемые секретные ключи, сертификаты или имя/пароль. OpenVPN использует протокол OpenSSL и реализует много функций безопасности и контроля, к которым относятся запрос отклика аутентификации, возможность единого входа, балансировка нагрузки и функции отказоустойчивости, а также поддержка множества демонов.

Почему использовать OpenVPN?

Говоря «безопасные подключения» - подразумеваем OpenVPN. Если вы не хотите, чтобы кто-либо шпионил (занимался снупингом) за вашим интернет трафиком, используйте OpenVPN для маршрутизации всего вашего трафика через сильно зашифрованный, безопасный туннель.

Системные требования

Для работы OpenVPN нужны минимальные требования. Система с 64 MB оперативной памяти и 1 GB места на жёстком диске достаточно для OpenVPN. OpenVPN работает почти на всех основных системах.

Установка и настройка OpenVPN на Debian

Установка OpenVPN on Мастер-сервер

Запустите следующую команду для установки OpenVPN.

По умолчанию скрипты easy-rsa scripts устанавливаются в директорию ‘/usr/share/easy-rsa/‘. Поэтому нам нужно скопировать эти скрипты в нужное расположение, например /root/easy-rsa.

Генерируем CA сертификат и CA ключ

Откройте файл ‘vars‘ и сделайте следующие изменения, но перед внесением изменений я предлагаю сделать резервную копию.

Используя ваш текстовый редактор измените значения по умолчанию для easy-rsa.

Например, добавьте в самый низ:

Здесь я использую 4096 битный ключ. Вы можете по своему использовать 1024, 2048, 4096 или 8192 битный ключ.

Экспортируем величины по умолчанию выполнив.

Очистим все сертификаты, которые были сгенерированы ранее.

Далее запустите следующую команду для генерации сертификата CA и ключа CA.

Сгенерируйте сертификат сервера следующей командой. Вместо «server» можно подставить любое имя сервера.

Сгенерируйте PEM сертификат Diffie Hellman PEM.

Сгенерируйте клиентский сертификат. Вместо «client» можно подставить ваше имя клиента.

Сгенерируйте код HMAC.

Скопируйте сертификаты на машины клиента и сервера следующим образом.

  • Убедитесь, что ca.crt присутствует и на клиентской и на серверной машинах.
  • Ключ ca.key должен быть на машине, сгенерировавшей ключ.
  • Сервер требует server.crt, dh4096.pem, server.key и ta.key.
  • client.crt, client.key и ta.key должны быть на клиенте.

Для установки сертификатов на сервере запустите команды.

Настройка сервера OpenVPN

Теперь вам нужно настроить OpenVPN. Откройте фйл ‘/etc/openvpn/server.conf‘. Пожалуйста, сделайте изменения, как написано ниже.

Запустите следующую команду для настройки OpenVPN запускаться при загрузке.

Запустите службу OpenVPN.

Включение перенаправления и IPTABLES

Создайте файл vpn_firewall.sh

B этот файл скопируйте следующее содержимое, отредактировав его под свои нужды. Обратите внимание на:

  • PRIVATE=10.8.0.0/24 – измените подсеть в соответствии с вашими настройками. Если делали по этой инструкции, то менять ничего не нужно.
  • имя интерфейса - eth0, у вас может быть другое значение, измените его на своё везде, где оно встречается
  • в строке iptables -A INPUT -p tcp --dport 22 -j ACCEPT мы открываем доступ к порту 22, чтобы могли подключиться по SSH, если у вас нестандартный порт, то обязательно отредактируйте его, поскольку может получиться так, что после применения этого файла вы не сможете подключиться к вашему серверу по сети, добавьте нужно количество строк с необходимыми вам портами

Проверить работу файла:

ОБЯЗАТЕЛЬНО проверьте работу файла ДО добавления его в автозагрузку. Отключитесь и подключитесь по SSH чтобы убедиться, что всё действительно работает.

Установка OpenVPN на клиенте

Запустите следующую команду для установки OpenVPN на клиентской машине.

Настройки даны исходя из расположения файлов здесь:

  • /etc/openvpn/certs/ca.crt
  • /etc/openvpn/certs/client.crt
  • /etc/openvpn/certs/client.key
  • /etc/openvpn/certs/ta.key

Используя текстовый редактор, настройте конфигурацию OpenVPN клиента в ‘/etc/openvpn/client.conf‘ на клиенте. Пример конфигурации ниже:

Обратите внимание на строку remote 185.117.153.79 – вам обязательно нужно заменить это значение на IP вашего собственного VPN сервера!

Запустите следующую команду для настройки OpenVPN запускаться при загрузке.

Запустите службу OpenVPN на клиенте.

Как просматривать логи OpenVPN

Для наших настроек это делается так:

Ещё это можно делать, например, командой:

Настройка входа в OpenVPN по логину и паролю

Принцип работы с подключением по логину и паролю следующий:

  • OpenVPN не может проверять действительность логина и пароля;
  • вместо проверки OpenVPN сохраняет присланные ей логин и пароль в файл со случайным именем в директорию, которую мы указали в tmp-dir (в нашем случае это /tmp).
  • после этого OpenVPN запускает скрипт, который мы указали в auth-user-pass-verify (в нашем случае это /etc/openvpn/verify.sh), в качестве аргумента этому скрипту передаётся имя только что сохранённого файла с логином и паролем.
  • если от скрипта получен код выхода 0, то OpenVPN авторизует клиента, если 1, то считает, что логин или пароль неверны.
  • после этого OpenVPN удаляет временный файл.

Схема работы, мягко говоря, так себе. Поскольку предусматривает хранение паролей в открытом виде и на сервере и на клиенте…

Внесём изменения в конфигурационный файл сервера:

Добавим туда следующие строки:

копируем туда следующий код (можете придумать свой механизм аутентификации):

Делаем файл исполнимым:

Файл с паролями /etc/openvpn/user.pass выглядит так:

то есть идёт через пробел пара логин:пароль. Пароль находится в открытом виде!

В конфигурационный файл клиента добавляем такую строку:

и создаём соответственно файл pass.txt, где будет находится логин и пароль в таком виде:

Примечание: Если в параметре auth-user-pass убрать путь к файлу, будет запрашиваться логин/пароль.

Все команды мы будем выполнять от имени пользователя root, поэтому мы не будем использовать в командах sudo для повышения прав, если вы выполняете под своим пользователям добавляйте sudo в начале команды.

Установка сервера Openvpn

Установим необходимые пакеты:

Создадим директорию и скопируем содержимое easy-rsa:

Перейдем в созданную директорию:

Отредактируем переменные в файле vars:

Нас интересует только следующий блок:

Поменяем на свой:

Очистим от старых сертификатов и ключей папку keys/server:

В квадратных скобках указываются значения по умолчанию, те которые были заданы в файле vars.

В таких строках можно просто нажимать клавишу “Ввод”.

Генерируем ключ сервера:

Генерируем сертификат клиента:

Генерируем ключ Диффи — Хеллмана:

Наконец, последний ключ для tls-аутификации:

Копируем серверные ключи в директорию /etc/openvpn:

Клиенту же понадобятся следующие ключи, они пригодятся нам для подключения к серверу из под Linux, Unix или Windows:

Настройка OpenVPN-сервера

Правим конфигурационный файл VPN-сервера:

Содержимое должно быть такого вида:

За счёт указанных параметров мы выбираем порт, протокол, тип соединения, указываем сертификаты, задаём параметры VPN-сети, указываем файл в котором хранить параметры соединений (чтобы можно было их восстановить после переподключения клиента), задаём параметры поддержания соединения, просим использовать сжатие передаваемых данных, указываем серверу при перезагрузке не подключаться к ресурсам которые могут быть недоступны из-за понижения привилегий, задаём файл статуса (содержит информацию о подключенных клиентах), лог-файл и уровень подробности отладочной информации.
Если нужно больше отладочной информации, то для параметра verb можно установить значение вплоть до 9. В большинстве случаев вам должно хватить значения 5 или максимум 6.

После этого для проверки запустите сервер из командной строки:

Где server имя нашего конфигурационного файла в папке /etc/openvpn/

Проверяем интрефейс в списке:

Должно быть примерно так:

Также можно проверить следующей командой:

* чаще относиться к Ubuntu

Необходимо закоментировать параметр LimitNPROC=10 в файле:

После перезапускаем openvpn сервер:

И снова проверяем командой:

Чтобы наш openvpn сервер загружался после перезагрузки сервера необходимо в файле /etc/default/openvpn, раскомментировать следующую строчку:

Это значит что все наши конфигурации в папке /etc/openvpn/, будут запущены.

Можете вместо all указать название нашего файла конфигурации:

На этом настройка сервера завершена, перейдем к подключению со стороны клиента: Windows или Linux.

Подключение к openvpn используя Linux | Ubuntu | Debian |

Выполним установку пакетов:

Создадим файл с конфигурацией, для подключения к нашему серверу:

Содержимое нашего файла должно быть таким:

* необходимо заменить ip: 90.30.12.101 на ваш, после пробел и номер порта должен быть как на сервере, если вы указывали свой порт, иначе оставляем как в конфигурации ниже.

Копируем файлы с сервера по пути как в конфиграции выше:

* они лежат в директории /etc/openvpn/easy-rsa/keys/ на сервере

Скопировать вы можете любым клиентом, поддерживающий работу SFTP, в нашем видео вы можете посмотреть как мы копировали с помощью MC (Midnight Commander).

Теперь запускаем подключение к серверу:

Где vps имя нашего конфигурационного файла в папке /etc/openvpn/

И смотрим результат командой:

Должно быть похоже на:

Также можете проверить командой ping:

Установка, настройка клиента в Windows

Ссылки на программы:

С помощью прогаммы WinSCP скопируйте ключи с сервера, из папки /etc/openvpn/easy-rsa/keys/:

Данные ключи скопируйте по пути:

* C:\Program Files\OpenVPN\config/vps или C:\Program Files (x86)\OpenVPN\config/vps в зависимости от разрядности Windows и установленного клиента openvpn.

* папку vps необходимо создать

Создайте файл vps.ovpn и положить его по пути:

* C:\Program Files\OpenVPN\config или C:\Program Files (x86)\OpenVPN\config в зависимости от разрядности Windows и установленного клиента openvpn.

Содержимое файла vps.ovpn:

Для подключения в трее рядом с часами нажмите на значок openvpn правой клавишей и нажмите подключиться.

Иконка поменяет цвет на зеленый и будет написано подключено, также можно проверить командой ping:

В данном руководстве мы обьединим 3 офиса, каждый со своей подсетью в единую локальную сеть используя операционную систему Linux Debian Wheezy, програмное обеспечение OpenVPN и Arno-Iptables-Firewall.
Сам сервер OpenVPN будем настраивать через интерфейс tun.
В каждом из офисов устанавливаем на сервер с 2 сетевыми картами операционную систему Debian 7 Wheezy по инструкции установка Debian Wheezy с подробными скриншотами, подключаем провайдера интернета. Обязательно на одном из серверов офиса должен быть чесный(белый) статический айпи адрес, так как к нему будут подключатся остальные сервера офисов.

Если для организации необходимо предоставить подключение удаленных сотрудников к сетевым службам и сэкономить на рабочем месте, то подключение по OpenVPN будет одним из лучших, простых и безопасных решений. Удаленные сотрудники смогут также работать в сети, как-будто их компьютеры находятся в сети офисов.

Сетевые карты на всех серверах:

Для внутренней VPN сети выделяем себе подсеть:

Сетевая адресация локальных сетей по офисам, каждый сервер имеет свой привязанный IP в подсети VPN:
Офис1:

Офис 2:

Офис 3:

Для серверов можно выбрать себе другой айпи из таблицы ниже, если Вы будете подключать удаленных сотрудников, из этой же таблицы выбираем им IP:

1,25,69,1013,1417,1821,2225,2629,3033,3437,3841,42
45,4649,5053,5457,5861,6265,6669,7073,7477,7881,8285,86
89,9093,9497,98101,102105,106109,110113,114117,118121,122125,126129,130
133,134137,138141,142145,146149,150153,154157,158161,162165,166169,170173,174
177,178181,182185,186189,190193,194197,198201,202205,206209,210213,214217,218
221,222225,226229,230233,234237,238241,242245,246249,250253,254

Приступаем к установке и настройке сервера OpenVPN.

На каждом сервере устанавливаем OpenVPN сервер выполнив команду:

Копируем скрипты для формирования ключей и сертификатов выполнив команду:

. Для Debian Jessie и выше необходимо доустановить пакет easy-rsa и скопировать ключи и сертификаты:

Отредактируем основные параметры в файле vars, чтобы не прописывать каждый раз как будем создавать пользователей:

Переходим в скопированную папку:

Инициализируем PKI (Public Key Infrastructure) выполнив команды:

Генерируем Certificate Authority (CA) сертификат и ключ выполнив команду:

Большинство параметров подхватятся из файла vars. Только параметры Organizational Unit Name и Name необходимо указать явно:

Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 1

Генерируем параметры Диффи - Хеллмана выполнив команду:

Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 2

Генерируем сертификат и секретный ключ сервера выполнив команду:

Все параметры принимаем по умолчанию. Большинство параметров подхватятся из файла vars. Только параметр Name необходимо указать явно:

Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 3

Добавим сразу и ключи для наших двух офисов, которые будут подключатся к серверу OpenVPN:

Все параметры принимаем по умолчанию. На запрос Name вводим соответственно названия офиса: office1, office2:

Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 4
Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 5

Если через некоторое время Вам понадобится добавить еще один офис либо несколько удаленных сотрудников, необходимо выполнить команду:

После этого командой ./build-key user1 добавляем необходимое количество клиентов OpenVPN сервера, не забудьте только создать ccd файл для нового клиента VPN сети.
Создадим папку ccd выполнив команду:

Создадим ccd файл для каждого офиса, в котором пропишем постоянный IP (IP выбираем из таблицы IP в статье выше) и маршруты:

Создаем ccd файл для офиса 2 выполнив команду:

Создаем ccd файл для офиса 3 выполнив команду:

Создаем конфигурационный файл OpenVPN сервера выполнив команду:

Создадим папку куда скопируем ключи и конфиг для клиентов выполнив команды:

Создадим конфигурационный файл для офиса2 предварительно изменив ip_openvpn_server на внешний IP сервера office1 либо доменное имя:

Создадим конфигурационный файл для офиса2 предварительно изменив ip_openvpn_server на внешний IP сервера office1 либо доменное имя:

Скопируем сертификаты и ключ для офиса 1 и офиса 2:

Архивируем папку с ключами для каждого офиса:

Забрасываем архив с ключами на сервера офисов:
Копируем на сервера офиса2 и офиса3 при наличии внешнего айпи командой:

Если нет внешнего айпи, тогда копируем с сервера офиса2 и офиса3 командой:

На сервере офиса 2 распаковываем архив выполнив команды:

На сервере офиса 2 распаковываем архив выполнив команды:

После этого перегружаем сервер OpenVPN на каждом сервере и через минутку пробуем пинговать ip 192.168.255.1, 192.168.255.5 и 192.168.255.9 - IP серверов. Команда перезагрузки OpenVPN сервера:

Устанавливаем и настраиваем Arno-Iptables-Firewall

Теперь необходимо настроить файрволл для того, чтобы мы могли иметь доступ к локальным сетям.

Устанавливаем файрволл Arno-Iptables-Firewall выполнив команду:

Отвечаем на вопросы инсталятора и настраиваем Arno-Iptables-Firewall согласно инструкции по установке и настройке Arno-Iptables-Firewall:

Настраиваем файрволл Office1:
В нашем случае открываем порты на tcp 22 порт и на udp 1194 порт:

Настраиваем файрволл Office2:
В нашем случае открываем порты на tcp 22 порт и на udp 1194 порт:

Настраиваем файрволл Office3:
В нашем случае открываем порты на tcp 22 порт:

. Для того, чтобы все компьютеры за серверами с OpenVPN пинговали компьютеры другого офиса, они должны иметь шлюзом свой сервер.

После всей проделанной работы, можете пинговать компьютеры другого офиса.
Данное руководство по соединению локальных сетей разных офисов завершено.

Сделаем небольшой перерывчик в работе и просмотрим видео о том как расжечь костер Нодья, такое знание не носить за плечами, может быть когда и пригодится:

Читайте также: