Openvpn server linux debian

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

Инструкция по установке и настройке OpenVPN-сервера на базе Linux -дистрибутива Debian 8 Jessie.

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

Проверяем поддержку в системе tun/tap-интерфейсов:

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

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

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

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

Меняем (по желанию) следующие строки:

Остальное оставляем по умолчанию.

После правки vars инициализируем переменные и очищаем каталог keys/serverот старых сертификатов и ключей:

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

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

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

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

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

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

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

Все сгенерированные сертификаты и ключи находятся в директории /etc/openvpn/easy-rsa/keys/
Копируем сертификаты и ключи сервера в директорию OpenVPN:

На клиентскую машину OpenVPN необходимо скопировать следующие ключи и сертификаты:

client1.crt
client1.key
ca.crt
ta.key

Для понимания назначения и расположения соответствующих файлов, я сделал небольшую таблицу:

Имя файла Где необходим Назначение Секретный
ca.crt сервер + все клиенты Корневой CA-сертификат НЕТ
ca.key машина для подписи ключей Корневой CA-ключ ДА
dh.pem только сервер Параметры Diffie Hellman’а НЕТ
server.crt только сервер Сертификат сервера НЕТ
server.key только сервер Ключ сервера ДА
client1.crt только клиент1 Сертификат клиента1 НЕТ
client1.key только клиент1 Ключ клиента1 ДА
client2.crt только клиент2 Сертификат клиента2 НЕТ
client2.key только клиент2 Ключ клиента2 ДА

На этом установка сервера OpenVPN завершена, осталось настроить конфигурацию сервера.

Пример конфигурационного файла OpenVPN расположен в директории /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz, копируем и распаковываем его в /etc/openvpn:

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
# gzip -d /etc/openvpn/server.conf.gz

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

Вот моя конфигурация:

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

Таким образом шлюзом по умолчанию для клиентов у вас станет OpenVPN — сервер.

Для повышения безопасности на linux-системах можно понизить права VPN-сервера, раскомментировав в конфиге сервера следующие строки:

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

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

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

Наличие данного интерфейса означает, что OpenVPN Запущен и работает. Если по каким-либо причинам он не появился, то смотрим лог-файл на наличие ошибок:

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

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

Первая строка добавляет маршрут в локальную сеть клиента. Проще говоря — говорит клиенту OpenVPN «ходить» в сеть 192.168.2.0 через сервер OpenVPN. Если ваша локалка связана еще с какой-либо подсетью, то её также нужно указать.

Вторая строка задает DNS-сервер, который будет использоваться после подключения (Если в вашей локальной сети DNS-сервер отсутствует, то можно указать ns от Google — 8.8.8.8, либо не указывать вообще.

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

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

Чтобы включить поддержку IP forwarding, нужно в файле /etc/sysctl.conf раскомментировать строчку:

Применяем изменения (загружаем переменные ядра):

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

В первой строке мы разрешаем форвардинг пакетов на интерфейсе tun0.
Второй строкой разрешаем форвардинг с tun0 на eth0.
Третей — разрешаем формардинг с eth0 на tun0.

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

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT —to-source ВНЕШНИЙ_IP
(в моем случае внешним IP был локальный адрес OpenVPN-сервера)

Разница между SNAT и MASQUERADE:
Маскарадинг постоянно запрашивает IP адрес у интерфейса, тем самым создавая нагрузку на процессор, в то время как SNAT «знает» IP (в нашем случае мы его указываем явно, т.к он статический).

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

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

Если OpenVPN не установлен, то установим его::

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

Затем переносим их в директорию OpenVPN — /etc/openvpn/

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

и редактируем его:

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

Для Windows-машин нужно положить файл client.ovpn в папку:

C:\Program Files\OpenVPN\config\

Опции протокола, шифрования и сжатия у клиента и сервера должны быть одинаковые.

На этом настройка OpenVPN в Debian закончена, проверяем его работоспособность:

Подключаемся с клиентской машины к OpenVPN-серверу , и пингуем с неё OpenVPN-сервер:

Если пинг проходит, то все хорошо, если же нет, то смотрим логи и проверяем настройки маршрутизации.

P.S. Если у вас на сервере динамический IP, то можете воспользоваться скриптом замены IP в конфиге OpenVPN, и последующей его отправкой на email.

Если возникнут какие-либо вопросы — пишите в комментариях.

Источник

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

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

Я выбрал OpenVPN благодаря его надёжности и безопасности. По сравнению с аналогичными туннельными протоколами, OpenVPN абсолютно не прихотлив к способу доступа к сети интернет. При необходимости, клиент OpenVPN можно настроить даже через HTTP прокси-сервер.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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:

Пингуем 10.8.0.1 , если пинг проходит, значит все хорошо.

Источник

Установка и настройка OpenVPN на Debian 10 и Ubuntu 18.

Установка и настройка OpenVPN на Debian 10 и Ubuntu 18.

В данном руководстве рассматривается установка и настройка OpenVPN сервера под управлением Debian 10 и Ubuntu 18.

OpenVPN-cервер имеет внешний IP-адрес 1.1.1.1 , подключаемые устройства будет получать адреса из сети 10.8.0.0/24

При данной схеме клиенты подключаются на адрес 1.1.1.1 , во внешний мир они также будут выходить с адреса 1.1.1.1. Если на сервере присутствует несколько внешних IP-адресов, то схему можно видоизменить: клиенты подключаются на 1.1.1.1, во внешний мир выходят с 1.1.1.2 ( не путать с double vpn ).

Итак, в наличии имеется свежеустановленный сервер на Debian 10.

Производим установку пакетов, в том числе вспомогательных:

# apt-get install mc aptitude net-tools htop openvpn easy-rsa

Пакет easy-rsa требуется нам для создания собственного центра сертификации. Для безопасности его можно разместить на другом сервере, для простоты демонстрации создание ключей и сертификатов будем производить на этом же сервере. Для удобства работы создаём символическую ссылку на каталог с easy-rsa в /etc/openvpn:

# ln -s /usr/share/easy-rsa/ /etc/openvpn/

Для настройки переменных центра сертификации создаём файл vars:

# touch /etc/openvpn/easy-rsa/vars
и вносим в него следующие строки:

Сейчас всё готово к созданию центра сертификации. Выполняем инициализацию:

В результате должны увидеть на экране результат работы:

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki

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

# ./easyrsa build-ca
При запросе скрипта

Enter New CA Key Passphrase:
Re-Enter New CA Key Passphrase:

дважды задаём пароль.

Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

можно нажать клавишу Enter.

Создаем ключ Диффи-Хеллмана:

Для создания сертификата сервера на первом этапе создаём файл запроса:

# ./easyrsa gen-req server01 nopass

И затем создаём сертификат сервера:

# ./easyrsa sign-req server server01

На вопрос Type the word ‘yes’ to continue, or any other input to abort вводим: yes

И затем пароль, который использовался для создания корневого сертификата.

Для создания ta ключа используем команду:

# openvpn —genkey —secret pki/ta.key

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

Копируем файлы ca.crt, dh.pem, server01.crt, server01.key, ta.key в /etc/openvpn

Создаём файл конфигурации server.conf со следующим содержимым:

Включаем автозапуск OpenVPN сервера:

# systemctl enable openvpn@server

# systemctl start openvpn@server

Проверяем лог-файлы и наличие интерфейса tun0:

Если в вводе команды ip a присутствуют нижеследующие строки, значит сервис успешно стартовал:

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

В файл /etc/sysctl.conf добавляем строку

Для вступления изменений в силу выполняем:
# sysctl -p
Также потребуется установить файрвол UFW.

# apt install ufw

Открываем файл /etc/ufw/before.rules

Это файл содержит настройки UFW, которое применяются перед применением правил UFW. Добавьте в начало файла нижеследующие строки. Это настроит правила, применяемые по умолчанию, к цепочке POSTROUTING в таблице nat и будет скрывать весь трафик от VPN:

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

Найдите в файле директиву DEFAULT_FORWARD_POLICY . Мы изменим значение с DROP на ACCEPT :

Открываем в файрволе необходимые порты:

Теперь деактивируем и активируем UFW для применения внесённых изменений:

Для настройки клиента потребуется создание клиентских сертификатов, ключей и файла конфигурации. Автоматизируем этот процесс.

В каталоге /etc/openvpn/client создадим файл make_config.sh со следующим содержимым:

Создадим файл шаблона для клиентского конфига base.conf:

Для генерации клиентских ключей, сертификата и файла конфигурации достаточно выполнить команду:

где client01 желаемое имя файла конфигурации. На выходе получим client01.ovpn со встроенными ключами. Данный файл нужно перенести на клиентский компьютер и поместить в соответствующий каталог.

Источник

Читайте также:  Не запрашивать пароль при пробуждении windows 10
Оцените статью