14.07.2017 11:38

#8 VPS - openvpn сервер | Ubuntu & Debian

Содержание:

Подготовка и инструкция:

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

Пример:

sudo apt-get update

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

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

sudo apt-get update
sudo apt-get install openvpn easy-rsa

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

mkdir /etc/openvpn/easy-rsa/

cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

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

cd /etc/openvpn/easy-rsa/

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

#Если не установлен редактор, на всякий случай все равно выполняем
sudo apt-get install nano
nano /etc/openvpn/easy-rsa/vars

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

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

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

export KEY_COUNTRY="RU"
export KEY_PROVINCE="MoscowObl"
export KEY_CITY="Moscow"
export KEY_ORG="DKA-DEVELOP"
export KEY_EMAIL="info@dka-develop.ru"

Инициируем переменные:

source /etc/openvpn/easy-rsa/vars
#NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

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

/etc/openvpn/easy-rsa/clean-all

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

/etc/openvpn/easy-rsa/build-ca

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

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

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

/etc/openvpn/easy-rsa/build-key-server server

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

/etc/openvpn/easy-rsa/build-key user

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

/etc/openvpn/easy-rsa/build-dh

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

openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key

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

cd keys
cp server.crt server.key ca.crt dh2048.pem ta.key /etc/openvpn/

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

user.crt
user.key
ca.crt
ta.key

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

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

nano /etc/openvpn/server.conf

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

port 1194 # порт
proto tcp # тип подключения
#dev tun # раскомментируйте если хотите туннельное подключение, tap0 необходимо закомментировать.
dev tap0 # тип интерфейса, поможет избежать ограничений туннеля

## Ключи сервера ##
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem

server 10.1.0.0 255.255.255.0 # подсеть
ifconfig-pool-persist /etc/openvpn/ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun

## Лог файлы ##
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3

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

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

sudo systemctl start openvpn@server

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

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

ifconfig | grep tap0

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

tap0      Link encap:Ethernet  HWaddr 5a:c6:1b:fa:14:a9 

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

sudo systemctl status openvpn@server
#Должно быть что-то похожее на:
 
openvpn@server.service - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2017-07-18 12:03:53 EDT; 2min 47s ago

Если  интерфейса нет, а в лог файле /var/log/openvpn.log содержимое следующего вида:

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

Tue Jul 18 09:32:11 2017 OpenVPN 2.3.10 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] $
Tue Jul 18 09:32:11 2017 library versions: OpenSSL 1.0.2g  1 Mar 2016, LZO 2.08
Tue Jul 18 09:32:11 2017 daemon() failed or unsupported: Resource temporarily unavailable (errno=11)
Tue Jul 18 09:32:11 2017 Exiting due to fatal error

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

nano /lib/systemd/system/openvpn@.service

Пример:

...
#LimitNPROC=10
...

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

systemctl daemon-reload
sudo systemctl restart openvpn@server

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

ifconfig | grep tap0

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

AUTOSTART="all"

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

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

AUTOSTART="server"

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

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

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

sudo apt-get update
sudo apt-get install openvpn

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

# Первая команда устанавливает текстовый редактор, если вдруг его у вас нет
sudo apt-get install nano
sudo nano /etc/openvpn/vps.conf

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

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

client 
dev tap0
proto tcp 

# Здесь надо указать ip адрес вашего сервера
remote 90.30.12.101 1194 

# Путь к нашим сертификатам, вы можете указать свой путь
ca /etc/openvpn/vps/ca.crt 
cert /etc/openvpn/vps/user.crt 
key /etc/openvpn/vps/user.key 

resolv-retry infinite 
nobind 
persist-key 
persist-tun 
ns-cert-type server 
comp-lzo

# Путь к лог файлу нашего клиента
log /var/log/openvpn_vps.log
verb 3

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

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

ca.crt 
user.crt 
user.key 

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

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

sudo systemctl start openvpn@vps

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

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

ifconfig

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

tap0      Link encap:Ethernet  HWaddr f6:65:87:66:71:e3  
          inet addr:10.1.0.2  Bcast:10.1.0.255  Mask:255.255.255.0
          inet6 addr: fe80::f465:87ff:fe66:71e3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:5049 (5.0 KB)

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

ping 10.1.0.1

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

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

Openvpn Windows: https://openvpn.net/index.php/open-source/downloads.html

WinSCP: https://winscp.net/eng/download.php

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

ca.crt
ta.key
user.crt
user.key

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

* 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:

client 
dev tap
proto tcp 

# Здесь надо указать ip адрес вашего сервера
remote 90.30.12.101 1194

# Путь к нашим сертификатам, вы можете указать свой путь
ca vps/ca.crt 
cert vps/user.crt 
key vps/user.key 

resolv-retry infinite 
nobind 
persist-key 
persist-tun 
ns-cert-type server 
comp-lzo

# Путь к лог файлу нашего клиента
log openvpn_vps.log
verb 3

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

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

ping 10.1.0.1

Подписывайтесь на наш канал в YouTube, ждите продолжения!