- Установка и настройка сервера OpenVPN на Debian
- Создание сертификатов
- Включаем NAT на OpenVPN сервере
- Настройка клиента OpenVPN
- Настройка OpenVPN в Debian
- Установка сервера OpenVPN
- Настройка сервера OpenVPN
- Настройки маршрутизации для клиентов OpenVPN
- Включаем NAT на OpenVPN сервере
- Настройка клиента OpenVPN
- Установка и настройка OpenVPN на Debian 10 и Ubuntu 18.
- Установка и настройка OpenVPN на Debian 10 и Ubuntu 18.
Установка и настройка сервера 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 | только сервер | Параметры 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 со встроенными ключами. Данный файл нужно перенести на клиентский компьютер и поместить в соответствующий каталог.
Источник