Setup openvpn server linux

Ubuntu Documentation

Overview

OpenVPN is a Virtual Private Networking (VPN) solution provided in the Ubuntu Repositories. It is flexible, reliable and secure. It belongs to the family of SSL/TLS VPN stacks (different from IPSec VPNs).

This page refers to the community version of the OpenVPN server. Setup examples are also provided on the OpenVPN community website. There is also a commercial Web GUI which might be easier to set up and maintain, especially for non-experts, and which allows clients to download VPN configurations themselves using the web browser.

What is a bridged VPN?

A bridged VPN allows the clients to appear as though they are on the same local area network (LAN) as the server system. The VPN accomplishes this by using a combination of virtual devices — one called a «bridge» and the other called a «tap device». A tap device acts as a virtual Ethernet adapter and the bridge device acts as a virtual hub. When you bridge a physical Ethernet device and a tap device, you are essentially creating a hub between the physical network and the remote clients. Therefore, all LAN services are visible to the remote clients.

Setting up a Bridged VPN using OpenVPN

Note that good networking knowledge and enough time is required to follow this manual setup guide. These instructions are for setting up a Bridged VPN on Ubuntu 8.04 using x509 certs and some general administration tasks.

This example installation was performed using Ubuntu Jeos 8.04 in a KVM virtual machine (but could just have easily been performed on a standalone Ubuntu Server). In my configuration eth0 is connected to the Internet and eth1 is connected to the LAN network that will be bridged. Comments in configuration files are preceeded by two pound signs (##).

Installing the Server

Setting up the Bridge

When a Linux server is behind a NAT firewall, the /etc/network/interfaces file commonly looks like

Edit this and add a bridge interface:

so that it look similar to:

  • If you are running Linux inside a virtual machine, you may want to add the following parameters to the bridge connection:

The bridging declarations come from the libvirt documentation. (I really only understand the bridge_ports directive and the bridge_stp directive. Please add more instructions here.)

Generating Certificates

  • Generate certificates for the server. In order to do this I will setup my own Certificate Authority using the provided easy-rsa scripts in the /usr/share/doc/openvpn/examples/easy-rsa/ directory. Another alternative is using the graphical program tinyca to create your CA.

Step 1:

  • Create a *new* directory and prepare it to be used as a (CA) key management directory (to create and store keys and certificates).

Step 2:

  • Edit /etc/openvpn/easy-rsa/vars Change these lines at the bottom so that they reflect your new CA.

Step 3:

  • Setup the CA and create the first server certificate

The Certificate Authority is now setup and the needed keys are in /etc/openvpn/

Configuring the Server

By default all servers specified in *.conf files in the /etc/openvpn/ directory are started on boot. Therefore, all we have to do is creating a new file named server.conf in the /etc/openvpn/ directory.

Читайте также:  Windows phone whatsapp не поддерживается

First, we’re going to create a couple of new scripts to be used by the openvpn server.

This script should contain the following

Now, we’ll create a «down» script.

It should contain the following.

Now, make both scripts executable.

And now on to configuring openvpn itself.

The server initialization script will complain about WARN: could not open database for 4096 bits. Skipped and you can work around it by running this command:

Pre-systemd setup

Don’t forget to either reboot or run the command below. This will restart openvpn and load the new config.

systemd setup

For systemd, the /lib/systemd/system/openvpn@.service file is defined so that multiple OpenVPN servers can be active concurrently. This is accomplished by the %i in the service definition file, which will be used as the name of the configuration file. Since we created a server.conf file, use the following commands to enable OpenVPN:

Firewall notes

In case you run a firewall like ufw, please consider enabling ip forwarding, otherwise the clients will only be able to connect to the server, but not to other LAN servers.

Getting Clients Connected

This section concerns creating client certificate and key files and setting up a client configuration file. The files can then be used with OpenVPN on a client platform. The described configuration will work with OpenVPN installations of OpenVPN GUI for Windows and Tunnelblick for Mac OS X clients. For a detailed discussion of each, refer to their respective home pages. It should also be compatible with Linux OpenVPN clients.

Generating Client Certificate and Key

Generating certificates and keys for a client is very similar to the process used for generating server certificates. It is assumed that you have already set up the /etc/openvpn/easy-rsa/ directory and updated the /etc/openvpn/easy-rsa/vars file as described above. You should have already setup your Certificate Authority and created a server certificate and keys.

Configuring the Client

The client configuration has been adapted from the OpenVPN 2.0 sample configuration file. For Windows, the file should be named client.ovpn and for other operating systems, the file should be named client.conf. The file can be created using vi or other editor that can create plain text files.

The configuration file assumes that there is only one TUN/TAP device configured on the client.

Place the client.ovpn (or client.conf) configuration file along with the certificate and key files in the openvpn configuration directory on the client. With the above setup, the following files should be in the configuration directory.

(For the OpenVPN GUI for Windows, the default location for the files is C:\Program Files\OpenVPN\config.)

(For Tunnelblick for Mac OS X, the default location for the files is

Firestarter configuration for OpenVPN

Firestarter requires some configuration on both client and server machines to allow services like SAMBA over a VPN tunnel. In addition the creation of rules within the GUI, it was also necessary to edit the /etc/firestarter/user-pre file. I used the instructions found here:

Also, though the tutorial didn’t discuss it, I found it necessary to save the original user-pre file as a copy, then rename the original and rename the copy to user-pre due to permissions issues.

Other Resources

Consult the official OpenVPN Howto.

OpenVPN (последним исправлял пользователь bimberi 2016-01-12 11:08:00)

The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details

Источник

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

Сегодня в этой статье мы обсудим установку и настройку собственного OpenVPN сервера на Linux-дистрибутив Ubuntu 20.04.

Что такое и для чего вам нужен VPN?

Виртуальная Частная Сеть (Virtual Private Network) — сеть, в которой участвуют 2 и более устройства, между которыми происходит зашифрованный обмен данными. Авторизация клиента происходит по секретному слову (паролю), или же по специальному сертификату.

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

VPN соединения часто используются в корпоративном сегменте для организации сети между филиалами (как пример — объединения нескольких филиалов с центральным офисом) для доступа и обмена информацией между ними (доступ к файлам, удаленный рабочий стол, мониторинг инфраструктуры т.п.)

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

Подключаемся и устанавливаем OpenVPN

В данной статье мы рассмотрим объединение в сеть нескольких устройств и доступ к файлам на центральном устройстве (сервере)

Для начала нам необходим ПК или выделенный сервер в облаке с установленной на него Ubuntu 20.04 ( руководство по установке вы можете найти в интернете )

В качестве сервера я буду использовать вируальную машину с установленной Ubutnu 20.04 Server, выпущенную в сеть, и имеющую статический белый IP адрес и открытый извне порт 4321

Подключаемся к серверу по SSH (рекомендую под Windows использовать клиент Putty ) с использование логина-пароля пользователя с правами sudo

P.S. Если вы используете на сервере desktop-редакцию Ubuntu (с графической оболочкой), то все описанные ниже действия вы так же можете проводить в приложении “Терминал”, в меню приложений Ubuntu

Перед нами появляется запрос проверки подлинности сертификата SSH — соглашаемся, так как мы знаем, что это действительно наш сервер

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

По окончании обновления устанавливаем пакеты OpenVPN и EasyRSA — первый — собственно наш сервер, а второй — для генерации сертификатов и публичных ключей подключающихся к нему пользователей

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

OpenVPN. Готовим среду для создания сертификатов

В начале нам потребуются сертификаты и ключи для создания безопасного соединения клиент-сервер. Так как сертификаты будем выпускать свои, воспользуемся ранее скачанным инструментом EasyRSA

Для удобства создадим папку в /opt и поместим копию инструментария в отдельную подпапку, например /opt/ovpn/

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

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

После подготовки мы можем начать с генерации CA-ключа (Ключ центра сертификации сервера).

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

При запросе Common Name — вводим имя сервера (в примере он указан как OVPN-SERVER1 )

OpenVPN. Создаем сертификат сервера

После подготовки CA мы можем подать на него запрос о выпуске сертификата для нашего сервера — с его помощью мы в последствии и сможем выпустить сертификат, с которым клиенты смогут убедиться в подлинности данного сервера

У вас будет запрошено Common Name — вводим имя вашего будущего сервера

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

У вас будет запрошено подтверждение выпуска — вводим “ yes ” и нажимает ENTER, после чего вводим пароль от CA сертификата

Далее нам необходим TLS (transport layer security, или HMAC) ключ для безопасной авторизации клиентов. Генерируем его следующей командой

После создания TLS ключа также создаем ключ DH (Диффи Хеллмана)

Эта процедура займет от 1 до 5 минут, в зависимости от мощности ЦП вашего сервера

Сертификаты сервера успешно созданы, теперь для удобства копируем их в папку /opt/ovpn/keys

Создаем сертификаты пользователей

Для подключения пользователей необходимо сертификаты. Для этого с помощью того же EasyRSA генерируем сертификат клиента без пароля (в примере будет использоваться вход только по сертификату)

Где user1 — имя нашего будущего пользователя

При запросе вводим пароль от вашего созданного ранее CA сертификат а

Настраиваем параметры сервера и производим первый запуск

Перед тем как запускать сервер необходимо правильно прописать в конфигурации пути до созданных сертификатов, IP адреса пула VPN а так же другие параметры, о которых будет сказано ниже. Для начала мы создадим базовую конфигурацию сервера. Создаем ее с помощью редактора Nano по пути /etc/openvpn/server.conf

sudo nano /etc/openvpn/server.conf

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

Подробнее обо всех параметрах вы можете прочесть на официальном сайте OpenVPN, или в файле-примере ( https://github.com/OpenVPN/openvpn/blob/master/sample/sample-config-files/server.conf ).

На данный момент нас интересуют несколько пунктов:

Проверяем правильность всех параметров, сохраняем и выходим из Nano комбинацией ctrl+x

Теперь создадим папку для хранения логов, куда будет писаться журнал состояния сервера

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

И проверить его статус

Как мы видим из статуса Active — сервер запущен и готов принимать подключения от клиентов

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

После чего набор клиентских сертификатов будет сохранен в папку /opt/ovpn/cli_keys, откуда позже мы их можем скачать

Загрузка и установка клиента OpenVPN на систему Windows

Для начала нам необходимо с помощью утилиты WinSCP (Скачать для Windows) подключиться и скачать подготовленные клиентские сертификаты (которые мы сохранили в папке /opt/ovpn/cli_keys на сервере)

Заходим в WinSCP и подключаемся к нашему серверу

Переходим в каталог /opt/ovpn/cli_keys и копируем содержимое в любую удобную для вас папку на клиентскую машину

После чего скачиваем последнюю версию OpenVPN по ссылке — https://openvpn.net/community-downloads/ и устанавливаем без изменения галочек и пути установки

По окончании установки OpenVPN переходим в папку

и копируем туда ранее скачанные сертификаты клиента из папки cli_keys

В том же каталоге создаем файл config.ovpn и открываем его с помощью текстового редактора (например “Блокнот” или «Notepad++»)

В этот файл копируем приведенную ниже базовую конфигурацию клиента

где 12.221.98.11 — IP адрес сервера, доступный из вне (белый IP адрес), а 4321 — порт, указанный в конфигурации сервера

Сохраняем файл и запускаем OpenVPN от имени администратора

В трее появится значок OpenVPN, щелкаем по нему правой кнопкой и выбираем “Подключиться”

Если все прошло успешно, то вы увидите лог подключения и уведомление о присвоении адреса VPN

Поздравляем! Теперь вы можете пользоваться удаленными ресурсами на сервере с вашего клиентского ПК, к примеру, подключаться к серверу по SSH для удаленного управления — сервером будет являться первый адрес из пула VPN — в данном примере — 10.11.12.1

Для доступа к локальной сети сервера, в конфиг OpenVPN ( /etc/openvpn/server.conf ) достаточно добавить

Где 10.11.12.0 — подсеть нашего VPN, а 192.168.111.0 — подсеть локальной сети сервера

После чего перезапустить его командой

sudo systemctl restart openvpn@server

Читай как установить Docker на Ubuntu в нашей статье

Источник

Оцените статью