Openvpn на linux ubuntu — установка и настройка сервера

OpenVPN на Linux Ubuntu — установка и настройка сервера

Опубликовано: 23.01.2019

Тематические термины: VPN, Ubuntu, OpenVPN.

Для удобства настройки заходим под суперпользователем:

Подготовка Ubuntu

Обновляем установленные пакеты:

apt-get update && apt-get upgrade

Устанавливаем утилиту для синхронизации времени:

Установим правильную временную зону:

cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* в данном примере московское время.

Синхронизируем время с публичным сервером времени:

Установка, настройка и запуск VPN-сервера

Установка OpenVPN

Устанавливаем необходимые пакеты следующей командой:

yum install openvpn easy-rsa

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

Создаем каталог, в котором будем хранить сертификаты:

mkdir /etc/openvpn/easy-rsa

Переходим в созданный нами каталог:

Скопируем в текущий каталог шаблоны скриптов для формирования сертификатов:

cp -r /usr/share/easy-rsa/* .

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

и приведем его к следующему виду:

export KEY_COUNTRY=»RU«
export KEY_PROVINCE=»Sankt-Petersburg«
export KEY_CITY=»Sankt-Petersburg«
export KEY_ORG=»DMOSK COMPANY«
export KEY_EMAIL=»master@dmosk.ru«
export KEY_CN=»DMOSK«
export KEY_OU=»DMOSK«
export KEY_NAME=»name-openvpn-server.dmosk.ru«
export KEY_ALTNAMES=»name-openvpn-server»

* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.

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

Если скрипт выполнится без ошибок, мы увидим следующее:

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

Почистим каталог от старых сертификатов:

Генерируем сертификат корневого центра:

на все запросы нажимаем Enter, так как всю верную информацию мы ввели в файле vars.

Теперь последовательно вводим следующие команды для формирования остальных сертификатов.

Сертификат сервера:

./build-key-server server

Диффи — Хеллмана:

Для tls:

openvpn —genkey —secret keys/ta.key

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

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

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

vi /etc/openvpn/server.conf

И вставляем в него следующее:

local 192.168.0.15 port 443 proto udp dev tun ca keys/ca.crt cert keys/server.crt key keys/server.key dh keys/dh2048.pem tls-auth keys/ta.key 0 server 172.16.10.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 max-clients 32 persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 4 mute 20 daemon mode server tls-server

comp-lzo

* где

  • local — IP-адрес, на котором будет обрабатывать запросы OpenVPN; 
  • port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных, например 1723).
  • proto — используемый транспортный протокол.
  • dev — виртуальный сетевой адаптер, который будет создан для работы OpenVPN.
  • ca — путь до сертификата корневого центра сертификации.
  • cert — путь до открытого сертификата сервера.
  • key — путь до закрытого сертификата сервера.
  • dh — путь до ключа Диффи — Хеллмана.
  • tls-auth — путь до tls-ключа.
  • server — задаем IP-адрес сервера в сети VPN.
  • ifconfig-pool-persist — путь к файлу для хранения клиентских IP-адресов.
  • keepalive X Y — каждые X секунд отправляется ping-запрос на удаленный узел. Если за Y секунд не получено ответа — перезапускать туннель.
  • max-clients — максимум одновременных подключений.
  • persist-key — не перезагружать ключи при повторной загрузки из-за разрыва соединения.
  • persist-tun —  не изменять устройства tun/tap при перезапуске сервера.
  • status — путь до журнала статусов.
  • log-append — путь до файла лога с дополнительным выводом информации.
  • verb — уровень логирования событий. От 0 до 9.
  • mute — ограничение количества подряд отправляемых в лог событий.
  • daemon — работа в режиме демона.
  • mode — в каком режиме работает openvpn (сервер или клиент).
  • tls-server — указывает, что данный сервер работает с использованием TLS.
  • comp-lzo — использовать сжатие.

Разрешаем автоматический старт сервиса vpn:

systemctl enable openvpn@server

И запускаем его:

systemctl start openvpn@server

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

На сервере:

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

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

cp ca.crt client1.crt client1.key dh2048.pem ta.key /tmp/keys

* сертификаты скопированы в каталог /tmp для удобства переноса их на клиентский компьютер.

На клиенте:

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Переходим в папку C:Program FilesOpenVPNconfig. И копируем в нее файлы ca.crt, client.crt, client.key, dh2048.pem, ta.key из каталога /tmp/keys на сервере, например, при помощи программы WinSCP.

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

Теперь возвращаемся к компьютеру с Windows, открываем блокнот от имени администратора и вставляем следующие строки:

client resolv-retry infinite nobind remote 192.168.0.15 443 proto udp dev tun comp-lzo ca ca.crt cert client1.crt key client1.key dh dh2048.pem tls-client tls-auth ta.key 1 float keepalive 10 120 persist-key persist-tun

verb 0

* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы.
* подробнее про настройку клиента OpenVPN.

Сохраняем файл с именем config.ovpn в папке C:Program FilesOpenVPNconfig.

Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Доступ к локальной сети

Для настройки доступа к локальной сети, воспользуйтесь инструкцией Настройка доступа к локальной сети клиентам OpenVPN в CentOS 7 (несмотря на то, что инструкция написана под CentOS, она во многом подойдет для Ubuntu).

Аутентификация пользователей

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

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

Открываем конфигурационный файл openvpn:

vi /etc/openvpn/server.conf

И добавляем следующую строчку:

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login

* как путь, так и название файла openvpn-plugin-auth-pam.so могут отличаться. Это зависит от версии Linux и OpenVPN. Чтобы найти путь до нужного файла, можно воспользоваться командой find / -name «openvpn-*auth-pam*» -print.

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

systemctl restart openvpn@server

Создаем учетную запись для авторизации:

useradd vpn1 -s /sbin/nologin

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

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

Можно пробовать подключаться.

Вход без ввода пароля

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

* где auth.txt — файл, в котором мы будем хранить логин и пароль.

Создаем текстовый файл auth.txt в той же папке, где находится файл конфигурации со следующим содержимым:

* где username — логин пользователя, а password — пароль.

Переподключаем клиента.

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

настройка OpenVPN сервера с аутентификацией через LDAP (написана на базе Linux Ubuntu).

Автоматический запуск клиента

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

Статические IP для клиентов

На сервере для каждого клиента генерируем свой сертификат. Например, для client2 вводим следующие команды:

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

  • ca.crt
  • client2.crt
  • client2.key
  • dh2048.pem
  • ta.key

Также на сервере открываем следующий файл и заносим статический адрес для клиента:

client,172.16.10.4
client2,172.16.10.24

* в данном примере клиент client будет получать IP 172.16.10.4, а client2172.16.10.24.

В конфигурационном файле server.conf должна быть строчка:

ifconfig-pool-persist ipp.txt

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

systemctl restart openvpn@server

Теперь на клиенте не забываем указать правильные названия файлов в конфигурационном файле клиента:

cert client2.crt
key client2.key

Пробуем подключиться.

Доступ в Интернет через VPN-сервер

Настройка делает так, что клиенты VPN-сервера начинают использовать последний как шлюз по умолчанию. Таким образом, весь трафик идет через наш сервер.

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

vi /etc/openvpn/server.conf

и добавляем:

push «redirect-gateway def1»
push «dhcp-option DNS 77.88.8.8»

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

systemctl restart openvpn@server

* сервер должен быть настроен в качестве шлюза. Подробнее в инструкции Настройка Интернет шлюза на Ubuntu.

Возможные проблемы при работе с OpenVPN

1. failed to start openvpn robust and highly flexible tunneling application on server

Описание: при запуске сервера получаем данную ошибку.

Причина: как правило, связано с отсутствием сертификата.

Решение: открываем лог /var/log/openvpn/openvpn.log и смотрим, с каким сертификатом проблема. Проверяем, что все файлы скопированы и что мы не забыли сгенерировать все сертификаты.

2. Постоянно разрывается соединение

Описание: с периодичностью от 1 до 5 минут постоянно рвется соединение с сервером. После нескольких минут переподключается.

Причина: как правило, конфликт IP-адресов. Такая ситуация возникает при случаях, когда подключение выполняется с нескольких компьютеров одновременно с одинаковыми данными авторизации (логином и паролем).

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

Источник: https://www.dmosk.ru/instruktions.php?object=openvpn-ubuntu-install

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

VPN (Virtual Private Network) – это технология, позволяющая объединять компьютеры через интернет так, как будто они находятся в одной локальной сети.

В результате мы можем объединять в одну сеть офисы, расположенные в разных городах и странах.

Установив VPN-сервер дома, а клиентскую часть на смартфон, можно выходить в интернет через публичные точки WiFi не боясь, что ваши пароли  будут перехвачены.

Аренда сервера в в зарубежном дата-центре стоит от 5$ в месяц и разместив VPN в американском регионе мы получаем доступ к Spotify, Pandora, Hulu и другим сервисам, недоступным в вашей стране, да и цензура в интернет вас больше не касается.

1. Установим OpenVPN

Обновим наш сервер и установим OpenVPN и центр сертификации.

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

OpenVPN это виртуальная частная сеть, использующая для шифрования трафика TLS/SSL. А это означает, что нам потребуются доверенные сертификаты.

Читайте также:  Logrotate freebsd. как настроить ротацию логов во freebsd

2. Настройка центра сертификации

Настроим центр сертификации.

make-cadir ~/openvpn-ca cd ~/openvpn-ca nano 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_OU=»MyOrganizationalUnit» . . . . .

и заменим на свои данные

. . . . . export KEY_COUNTRY=»RU» export KEY_PROVINCE=»SPb» export KEY_CITY=»Sankt-Peterburg» export KEY_ORG=»admin812.ru» export KEY_EMAIL=»admin@admin812.ru» export KEY_OU=»IT» . . . . .

Несколькими строками ниже поменяем значение KEY_NAME

export KEY_NAME=»server»cd ~/openvpn-ca source vars

В ответ система должна выдать:

NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

На всякий случай очистим каталог от всех ключей:

./clean-all

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

./build-ca

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

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

3. Создание сертификата, ключа и файлов шифрования для сервера

Сперва создадим сертификат OpenVPN и ключи для сервера. Для этого запустим следующую команду:

./build-key-server server

Соглашаемся на все значения по умолчанию, в конце два раза выбираем “y”.
Теперь сгенерируем ключи протокола Диффи-Хеллмана командой:

./build-dh

и подпись HMAC для усиления способности сервера проверять целостность и подлинность передаваемых данных TSL:

openvpn —genkey —secret keys/ta.key

4. Создание сертификата и пары ключей для клиента

Рассмотрим процедуру создания ключа и сертификата для клиента client1. Если клиентов несколько, процесс создания аналогичен Для автоматического соединения мы создадим файл без пароля. Используем команду build-key:

cd ~/openvpn-ca source vars ./build-key client1

5. Настройка сервиса OpenVPN

Скопируем созданные файлы (сертификат и ключ центра сертификации, сертификат и ключ сервера, подпись HMAC, файл Diffie-Hellman) из директории ~/openvpn-ca/keys в /etc/openvpn

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

Далее нужно создать и настроить конфигурационный файл сервера.

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf sudo nano /etc/openvpn/server.conf

Найдем раздел HMAC и раскомментируем строку с tls-auth, а также добавим параметр key-direction:

tls-auth ta.key 0 # This file is secret key-direction 0

Затем ищем раздел шифрования и раскомментируем строку с шифром AES-128-CBC и после нее добавим алгоритм HMAC:

cipher AES-128-CBC auth SHA256

И в заключении найдем строки user и group и раскомментируем их:

user nobody group nogroupДля того чтобы пользоваться нашим сервером по назначению необходимо чтобы он мог перенаправлять трафик.sudo nano /etc/sysctl.confНайдите и раскомментируйте строку:net.ipv4.ip_forward=1Чтобы применить измененные настройки выполните:sudo sysctl -pПропишем как будет запускаться наш сервер. Так как имя конфигурационного файла server.conf дадим такую команду:sudo systemctl start openvpn@serverПроверим запустился ли сервер:sudo systemctl status openvpn@serverи поднялся ли интерфейс tunip addr show tun0Если все работает – добавляем настройки в автозагрузку:sudo systemctl enable openvpn@server

7. Скрипт для настройки клиентов

mkdir -p ~/client-configs/files chmod 700 ~/client-configs/files cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.confВнесём некоторые изменения в файл base.confnano ~/client-configs/base.confТут необходимо внести изменения в пункте remote. . .

# The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote server_IP_address 1194 . . .Вместо server_IP_address пропишем ip-адрес нашего сервера OpenVPN.

Далее, необходимо убедиться по какому протоколу ( tcp или udp ) работает openvpn и от какого пользователя запускается. Настройки должны быть аналогичным настройкам в файле server.confproto udp user nobody group nogroupСертификаты и ключи мы будем хранить прямо в конфигурационном файле, который далее создадим.

 Поэтому закомментируем  строки ca, cert и key# SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. #ca ca.crt #cert client.crt #key client.

keyПриведем настройки клиентской части  к аналогичным настройкам сервера.Проверьте на вашей клиентской системе наличие файла /etc/openvpn/update-resolv-conf. Если он есть, последние три строки нужно раскомментировать.

cipher AES-128-CBC  auth SHA256 key-direction 1 # script-security 2 # up /etc/openvpn/update-resolv-conf # down /etc/openvpn/update-resolv-conf

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

nano ~/client-configs/make_config.sh

Вставим текст:

#!/bin/bash # First argument: Client identifier KEY_DIR=~/openvpn-ca/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat ${BASE_CONFIG}

Источник: https://admin812.ru/ustanovka-i-nastroyka-openvpn-v-ubuntu-16-04.html

Настройка OpenVPN на Ubuntu: серверная часть

04.01.2018 17:21

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

В нашем случае мы рассмотрим создание надежной и защищенной сети VPN на основе ненадежной сети Интернет при помощи продукта OpenVPN в рамках операционной системы Ubuntu 16.04.

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

Она позволяет устанавливать соединения между компьютерами, находящимися за NAT и сетевым экраном, без необходимости изменения их настроек.

OpenVPN была создана Джеймсом Йонаном (James Yonan) и распространяется под лицензией GNU GPL (https://ru.wikipedia.org/wiki/OpenVPN).

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

Команды будем выполнять от суперпользователя.

Приступим к установке ПО:

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

easy-rsa — программа которая служит для создания и ведения инфраструктуры открытых ключей (PKI) в командной строке (CLI). В нашем случае мы будем использовать ее для выполнения действий с ключами и сертификатами, необходимыми для работы OpenVPN.

Демон OpenVPN будет работать у нас от имени непривилегированного пользователя openvpn. Добавим его:

adduser —system —no-create-home —disabled-login —group openvpn

Создание инфраструктуры открытых ключей (PKI)

Далее займемся созданием ключей и сертификатов при помощи easy-rsa. Скопируем необходимые файлы в /etc/openvpn/ и перейдем в эту директорию:

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

Далее для удобства создания сертификатов в /etc/openvpn/easy-rsa/vars изменим следующие строки:

Производить работу с текстовыми файлами вы можете, используя удобные Вам текстовые редакторы (например, vi или nano).

  • 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_OU=»MyOrganizationalUnit» # Отдел в компании

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

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

и удалить существующие ключи:

Приступаем к созданию удостоверяющего центра (CA):

В ходе установки Вам потребуется проверить корректность данных, используемых для запроса на создание сертификата (certificate request).

Если Вы предварительно изменили значения переменных в /etc/openvpn/easy-rsa/vars, то Вам достаточно будет просто нажимать Enter.

Также, по желанию, Вы сможете указать пароль, который будет защищать приватный ключ удостоверяющего центра. Хорошо запомните его или запишите в надежном месте!

Аналогичным образом создаем остальные ключи и сертификаты.

Сертификат сервера OpenVPN, где «server» — имя сервера:

./build-key-server server

Ключ Диффи-Хеллмана служит для использования одноименного криптографического протокола, который позволяет двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи (создание ключа может занимать от нескольких секунд до нескольких минут, не прерывайте процесс):

Ключ клиента, где «user_1» — имя клиента:

Ключ HMAC для дополнительной защиты от DoS-атак и флуда:

openvpn —genkey —secret keys/ta.key

Сертификаты с ключами будут помещаться в директорию /etc/openvpn/easy-rsa/keys:

Теперь необходимо создать каталог для конфигураций клиентов:

и перенести файлы:

# Клиентские

cp user_1.crt user_1.key ca.crt ta.key /etc/openvpn/ccd/

# Серверные

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

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

Создаем директорию для логов OpenVPN:

И переходим к созданию конфигурационного файла:

vi /etc/openvpn/server.conf

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

# Пользователь и группа user openvpn group openvpn # Порт, на котором висит openvpn port 2216 # Протокол, который использует openvpn proto udp # Интерфейс, которой будет подниматься dev tun # Привязка ключей ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key dh /etc/openvpn/dh2048.pem tls-auth /etc/openvpn/ta.key 0 # 0 — использование на стороне сервера, 1 — на стороне клиента # Файл отозванных сертификатов. Раскомментировать, когда такие сертификаты появятся. # Создание сертификата доступно при помощи /etc/openvpn/easy-rsa/revoke-full ;crl-verify /etc/openvpn/crl.pem # Тип шифрования cipher AES-256-CBC # Сжатие трафика comp-lzo # IP адреса, которые будут выдаваться клиентам (IP и маска) server 10.10.0.0 255.255.255.0 # Будет производится пинг каждые 10 секунд, если пинга нет 120 сек, то будет выполнена попытка повторного подключения к клиенту keepalive 10 120 # При падении туннеля не выключать интерфейсы, не перечитывать ключи persist-key persist-tun # Директория с клиентскими сертификатами client-config-dir ccd # Лог статуса сервера status /var/log/openvpn/status.log # Лог подключения log /var/log/openvpn/serv.log # Уровень логирования от 0 до 9, чем выше тем больше информации verb 3 # Защита от повторов (максимум 20 одинаковых сообщений подряд) mute 20 # Cнятие ограничения на размер буфера сокета sndbuf 0 rcvbuf 0 # Трафик идет через OpenVPN push «redirect-gateway def1» # Использование DNS сервера push «dhcp-options DNS 8.8.8.8»

На этом настройка конфигурации OpenVPN закончена.

Включаем поддержку ipv4_forwarding. Для этого в /etc/sysctl.conf раскомментируем

после чего заново прочитаем файл:

Помимо этого разрешаем маршрутизацию трафика через OpenVPN:

iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

«eth0» — Ваш сетевой интерфейс для выхода в Интернет. Посмотреть его можно при помощи ifconfig.

Настраиваем iptables, чтобы после перезапуске ОС, настройки сохранились:

iptables-save > /etc/iptables.save echo -e »
pre-up iptables-restore < /etc/iptables.save" >> /etc/network/interfaces

Перезапуск и проверка корректной работы OpenVPN

Перезапускаем демон:

И проверяем поднялся ли интерфейс tun:

Также Вам могут помочь логи, которые мы настроили, и syslog:

cat /var/log/openvpn/serv.log tail -50 /var/log/syslog

При необходимости Вы можете запустить OpenVPN вручную и проверить, возникают ли ошибки при запуске:

Читайте также:  Linux ntfs. как монтировать ntfs в linux. подключить флешку ntfs в linux. ntfs mount linux

openvpn —config /etc/openvpn/server.conf

Следующая строка в логе /var/log/openvpn/serv.log будет означать корректный запуск VPN:

Fri Dec 8 07:19:47 2017 Initialization Sequence Completed

Заключение

Теперь Вы знаете, как установить и настроить OpenVPN на Ubuntu 16.04. Более подробную информацию смотрите в документации OpenVPN.

Источник: https://timeweb.com/ru/community/articles/nastroyka-openvpn-na-ubuntu-servernaya-chast-1

Установка и настройка OpenVPN сервера на Debian/Ubuntu/Linux Mint

В данной теме «Установка и настройка OpenVPN сервера на Debian, Ubuntu, Linux Mint», я расскажу как можно установить openVPN сервер на Debian, Ubuntu, Linux Mint, так же покажу как можно его настроить под себя. Приведу готовые примеры для хорошего понимания.

OpenVPN является полнофункциональным приложением с открытым исходным кодом и решение SSL VPN, что позволяет использовать широкий диапазон конфигураций. OpenVPN эффективное и легкое решение которое целенаправленно расчитано для рынков МСП и предприятий.

Установка OpenVPN сервера на Debian/Ubuntu/Linux Mint.

Для этого достаточно выполнить команду:

# sudo apt-get install bridge-utils openvpn libssl-dev openssl

Это займет некоторое время, после установки нужно будет немного настроить (сконфигурировать) наш сервер с OpenVPN.

Настройка OpenVPN сервера на Debian/Ubuntu/Linux Mint.

Первым шагом будет создание сертификата для OpenVPN сервера, по этому выполните команду:

Если вы используете старую  версию OpenVPN, выполните команду:

# mkdir /etc/openvpn/easy-rsa # cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

Начиная с 2013-го года программа «easy-rsa» не имеется в пакете с OpenVPN по этому ее нужно установить и скопировать ключи с другого места.

# sudo apt-get install easy-rsa

У меня была ошибка, сообщение вывело такое «Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?», которое я решил так:

# sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock   # sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock # sudo dpkg —configure -a

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

# mkdir /etc/openvpn/easy-rsa # cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa # mv /etc/openvpn/easy-rsa/easy-rsa /etc/openvpn/easy-rsa/2.0

Сейчас  нужно подредактировать переменные ключей, для этого выполним команду:

# cd /etc/openvpn/easy-rsa/2.0/ # vim vars

В этом файлике нужно поправить кое что под себя ( город, страну, почту и так далее). Можно оставить все как и есть.

Скопируем конфиг:

# cp openssl-1.0.0.cnf openssl.cnf

Выполним команду и подгружаем переменные :

# . ./vars

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

# ./clean-all # ./build-ca

После чего создаем ключик для нашего сервера:

# ./build-key-server server

Создадим еще один ключик (Диффи Хельман)

# ./build-dh

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

# openvpn —genkey —secret keys/ta.key

Сделаем перемещение наших сертификатов в другую папку:

# cp -r /etc/openvpn/easy-rsa/2.0/keys/ /etc/openvpn/

Копируем  файлик для конфигурации  нашего сервера

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ # cd /etc/openvpn && gunzip -d /etc/openvpn/server.conf.gz # vim /etc/openvpn/server.conf

Выложу свой конфиг и в нем указано что я поправил:
server.conf

Скачать его можно:

# wget https://linux-notes.org/wp-content/uploads/files/OpenVPN/Debian_Ubuntu_Linux-Mint/server.conf

Запускаем наш OpenVPN сервер:

# service openvpn restart

Настроим маршрутизацию на сервера

Создадим файлик в папке ccd с таким именем что и ключик для клиента, т.е. /etc/openvpn/ccd/client
Сейчас добавим маршруты в сеть где будет установлен наш клиент, это нужно для доступа к сетевым устройствам в сети клиента. Если не нужно это, то не прописывайте.

# iroute 192.168.116.0 255.255.255.0

Зададим маршруты для нашего клиента, для того чтобы он мог видеть  сеть и за пределами OpenVPN-сервера.

# push «route 192.168.117.0 255.255.255.0»

Включим ipv4_forwarding в /etc/sysctl.conf

# vim /etc/sysctl.conf[…] net.ipv4.ip_forward=1 […]# sudo sysctl -p

Создание и настройка клиента для OpenVPN

Перейдем в уже  созданную нами папку,  и начнем генерацию ключиков, а так же сертификатов для клиента

# cd /etc/openvpn/easy-rsa/2.0 # . ./vars

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

# ./build-key client

Если есть необходимость сгенерировать ключик с паролем, то используйте:

# ./build-key-pass client

Если эту команду ввели, то вам нужно будет вводить пароль каждый раз пароль на ключик.

ВНИМАНИЕ! Не забываем что нужно скопировать ключики (ca.crt, dh1024.pem, client.crt, client.key, ta.key) в папку нашего клиента  в OpenVPN — /etc/openvpn/keys/

# vim /etc/openvpn/client.conf

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

# wget https://linux-notes.org/wp-content/uploads/files/OpenVPN/Debian_Ubuntu_Linux-Mint/client.conf

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

# service openvpn restart

Отзыв сертификата

# cd /etc/openvpn/easy-rsa/2.0 # . ./vars # ./revoke-full client2

revoke-full -этот скрипт создает CRL-файл (certificate revocation list, список отозванных сертификатов) с названием crl.pem в подпапке keys. Этот файлик нужно скопировать в папку, в котором сервер OpenVPN может получить к нему доступ. До этого я прописывал в конфиге что он должен лежать в /etc/openvpn, туда и скопируем.

Включим ipv4_forwarding по необходимости. Выполнить нужно все так же как и с сервером.

Чтобы отключить автозапуск OpenVPN запустите:

# vim /etc/default/openvpn

и убираем коммент в строке:

[…] AUTOSTART=»none» […]

На этом моя статья «Установка и настройка OpenVPN сервера на Debian/Ubuntu/Linux Mint» завершена.

Источник: https://linux-notes.org/ustanovka-i-nastrojka-openvpn-servera-na-debian-ubuntu-linux-mint/

Настраиваем VPN в Ubuntu Server с пакетом OpenVPN

Сегодня разберём установку и настройку конфигурационных файлов для запуска VPN сервера и клиентской части на ubuntu server 16.04 | 17.04 | 18.04

Зачем же нужен VPN? На то есть целый ряд причин. Например, чтобы ваши пароли, передаваемые по HTTP, не утекли, когда вы сидите с открытых WiFi точек. Да и вообще, даже вашему обычному провайдеру не обязательно знать, на какие сайты вы ходите.

Еще — чтобы не палить свой IP в IRC сетях и прочих сервисах, с которыми вы работаете. Им знать ваше местоположение тоже совсем никчему. Также вам может захотеться попробовать какой-нибудь новый сервис, который пока что недоступен для пользователей с российским IP.

Кроме того, трафик между вами и VPN сервером не только шифруется, но и сжимается, что нередко может создать ощущение более быстрого интернета.

Также OpenVPN может быть полезен в целом ряде других случаев — для доступа сотрудников ко внутренним ресурсам компании, при построении на VDS’ах приложения с микросервисной архитектурой и не только.

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

Чтобы поднять свой VPN, вам потребуется собственный сервер с Ubuntu, Debian, а также права root’а на нем. Если сервер у вас уже есть, хорошо. Если нет, то не расстраивайтесь. В наши дни купить подходящий VDS/VPS можно за 100-150 рублей в месяц. Компаний, предлагающих соответствующие услуги — десятки.

Советовать какой-то конкретный сервис я не буду, как говорится: — «На вкус и цвет товарищей нет».

Установка OpenVPN на Ubuntu Server 16.04 | 17.04 | 18.04

приступим к установке пакетов на нашем сервере:

sudo apt update
sudo apt install openvpn

Раньше в OpenVPN входила утилита под названием easy-rsa, предназначенная для генерации ключей и сертификатов. Начиная с версии 2.3 эту утилиту из пакета выпилили, поэтому придется скачать и собрать ее самостоятельно:

cd /tmp
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip
cd easy-rsa-master
./build/build-dist.sh
tar xvzf ./EasyRSA-git-development.tgz
cd EasyRSA-git-development

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

./easyrsa init-pki
./easyrsa build-ca
./easyrsa build-server server
./easyrsa build-client client1
./easyrsa gen-dh

Выполнение последней команды может занять несколько минут.
Переносим полученные ключи и сертификаты в каталог /etc/openvpn/:

mv ./pki/dh.pem /etc/openvpn/dh2048.pem
mv ./pki/private/client1.key /etc/openvpn/
mv ./pki/private/server.key /etc/openvpn/
mv ./pki/ca.crt /etc/openvpn/
mv ./pki/issued/client1.crt /etc/openvpn/
mv ./pki/issued/server.crt /etc/openvpn/

Настройка конфигурационного файла openvpn на сервере

В том же каталоге создаем файл server.conf:

sudo touch server.conf

с содержимым:

# Порт для OpenVPN
port 1194
# Протокол для работы
proto tcp
# Тип интерфейса
dev tun
# Сертификат центра сертификации ЦА
ca /etc/openvpn/ca.crt
# Сертификат сервера
cert /etc/openvpn/server.crt
# Ключ сервера
key /etc/openvpn/server.key
# Сертификат для шифрования подключения
dh /etc/openvpn/dh2048.pem
# Защита от DOS атак (для сервера 0 для клиента 1)
tls-server
tls-auth /etc/openvpn/ta.key 0
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
# Выбор криптографического шифра
cipher AES-256-CBC
# IP адрес и маска VPN сети
server 10.8.0.0 255.255.255.0
#Каталог для настройки клиента:
client-config-dir /etc/openvpn/ccd
# Сообщает клиентам что за сервером есть локальная сеть (если есть)
push «route 192.168.0.0 255.255.255.0»
#Прописывает маршрут на сервере чтобы видеть сеть за клиентом (если есть)
route 10.63.10.0 255.255.255.0
# Шлюз
#route-gateway 10.8.0.1
# Каждому клиенту выдается по 1 адресу, без виртуальных портов маршрутизатора
topology subnet
# Количество повторяющихся сообщений
mute 20
# Максимальное кол-во одновременно подключившихся клиентов
max-clients 25
# Записываем в файл IP адреса клиентов
ifconfig-pool-persist ipp.txt
#Время жизни неактивной сессии
keepalive 10 120
# Разрешаем клиентам видеть друг друга
client-to-client
# Включаем сжатие
comp-lzo
persist-key
persist-tun
# Логирование
status openvpn-status.log
log openvpn.log
log-append openvpn.log
# Уровень отладочной информации
verb 3
# Прописываем шлюз у клиента
#push «redirect-gateway def1»
# Прописываем DNS сервера у клиента
push «dhcp-option DNS 192.168.0.1»
push «dhcp-option DNS 8.8.8.8»

Попробуем запустить OpenVPN:

service openvpn start

Проверяем:

netstat -tuwpan

Сервер должен слушать порт 1194. Если это не так, курим /var/log/syslog или же /etc/openvpn/openvpn.log.

Настройка конфигурационного файла openvpn на клиенте

Теперь что касается клиентской стороны. Нам понадобятся файлы client1.crt, client1.key ta.crt и ca.crt и также установить пакет openvpn:

sudo apt install openvpn
cd /etc/openvpn
scp vpn-server:/etc/openvpn/client1.crt ./
scp vpn-server:/etc/openvpn/client1.key ./
scp vpn-server:/etc/openvpn/ca.crt ./
scp vpn-server:/etc/openvpn/ta.crt ./

Создадим файл client.conf:

sudo touch client.conf

с содержимым:

client
proto tcp
dev tun
# !!! замените на настоящий ip адрес сервера
remote 111.111.111.111 1194
# следующие две строчки актуальны только для Linux систем
# на практике они не очень удобны, так как OpenVPN не сможет
# нормально все за собой почистить по завершению работы
user nobody
group nogroup
# Не перечитывать ключи, не закрывать и переоткрывать TUNTAP устройства
persist-key
persist-tun
# Пути где располагаются сертификаты
ca ca.crt
cert client1.crt
key client1.key
# Используемое шифрование
cipher AES-256-CBC
# Сжатие трафика
comp-lzo
# Детальность логирования verb 3

Читайте также:  Автоматическая установка драйверов. обзор программы driverhub. автообновление драйверов на windows

Подрубаемся к серверу, внимательно читаем логи:

sudo openvpn —config client.conf

В соседнем терминале говорим:

ping 10.8.0.1
traceroute mail.ru

Если все было сделано правильно, вы обнаружите, что пинги успешно доходят до 10.8.0.1 (первая команда), но пакеты через него никуда не проходят (вторая команда). Это потому что мы забыли настроить на сервере NAT.

Настройка NAT для openvpn сервера на ubuntu 16.04

Конфиг сервера:

ppp0 — соединение с провайдером через PPPoE соединение
br0 — сетевой мост объединяющий локальный интерфейс и интерфейс WiFi enp0s3 — интерфейс смотрит в сеть интернет enp0s8 — интерфейс смотрит в локальную сеть

wlp1s0 — WiFi интерфейс

Источник: https://pro-gram.ru/openvpn-ubuntu.html

Установка и первичная настройка OpenVPN на Ubuntu 16.04

Введение

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

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

Однажды настроенный сервер OpenVPN будет работать годами и полностью удовлетворять требованиям безопасности.

OpenVPN легко настроить и легко использовать на любых компьютерах и мобильных устройствах — клиенты есть для Windows, Linux, MacOS, iOS и Android. В зависимости от настройки можно даже использовать его для обеспечения безопасности при Web-серфинге с публичных Wi-Fi точек и мобильных соединений.

Также его можно использовать для обеспечения анонимности и смены собственного IP-адреса на IP-адрес удаленного сервера. Возможность использования AES-шифрования соединений позволяет обеспечить конфиденциальность передаваемых данных и делает бесполезным перехват трафика.

Злоумышленник просто не сможет его расшифровать и использовать в своих целях.

Как установить OpenVPN на сервер

Вначале создаем сервер VScale с любой конфигурацией и операционной системой Ubuntu 16.04 Через несколько секунд можно подключиться к нему любым SSH-клиентом.

Сменим пароль суперпользователя root

passwd root

Обновим источники приложений и операционную систему до актуального состояния

apt-get update
apt-get upgrade

Установим консольную утилиту Easy-RSA для генерации сертификата сервера и сертификатов для каждого из клиентов, которые будут использоваться для подключения:

apt-get install easy-rsa

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

cd /usr/share/easy-rsa
nano ./vars

Задаем переменную длины ключа:

export KEY_SIZE= 1024

Это стандартное значение. Если требуется повышенная безопасность, то можно установить значение 2048. Однако следует помнить, что нагрузка на сервер будет изменяться пропорционально этому значению.

Остальные параметры заполняются в соответствие с вашими пожеланиями, например

export KEY_COUNTRY=»RU»export KEY_PROVINCE=»RU»export KEY_CITY=»Moscow»export KEY_ORG=»MyCompany LTD.»

export KEY_EMAIL=»your_email_address»

Включаем использование наших переменных

source ./vars

Очищаем папку с ключами

./clean-all

Генерируем корневой сертификат. В процессе генерации утилита будет использовать уже указанные нами данные в переменных, поэтому нажимаем Enter на все вопросы.

./build-ca

Генерируем таким же образом сертификат сервера. Отвечаем Y на запрос о подписывании сертификата.

./build-key-server server  

Теперь генерируем сертификаты для каждого устройства, которое планируется подключать к серверу. Повторяем команду нужное количество раз, изменяя имя сертификата (в примере сертификат называется macbook)

./build-key macbook

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

./build-dh

В результате в папке /usr/share/easy-rsa/keys у нас теперь лежат наши сертификаты и ключи.

Устанавливаем OpenVPN

apt-get install openvpn

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

cp -R /usr/share/easy-rsa/keys/ /etc/openvpn/

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

nano /etc/openvpn/server.conf

Вносим в него следующие строки:

port 1194# порт который будет слушать демон OpenVPNproto tcp # используемый протоколdev tun # метод работы — создание туннеля ca /etc/openvpn/keys/ca.crt # указываем корневой сертификатcert /etc/openvpn/keys/server.crt# указываем сертификат сервераkey /etc/openvpn/keys/server.key# указываем ключ сервераdh /etc/openvpn/keys/dh1024.pem# указываем ключ Диффи-Хеллманаserver 10.100.0.0 255.255.255.0# указываем виртуальную подсеть — из нее сервер будет присваивать адреса клиентамcipher AES-256-CBC# обеспечиваем мощное шифрование трафикаifconfig-pool-persist ipp.txt# с помощью этого параметра можно раздавать статические IPpush «redirect-gateway def1″# для пропуска трафика через шлюз сервераpush «dhcp-option DNS 8.8.8.8″# и добавляем сервер имен империи добраkeepalive 10 120# параметры соединенияcomp-lzo# включаем механизм сжатия трафикаpersist-key# чтобы ключи не пересылались повторно при разрыве соединенияpersist-tun# обеспечит работу туннеля в режиме persiststatus /var/log/openvpn-status.log# лог статусаlog /var/log/openvpn.log# общий логverb 3

# уровень логирования

Сохраняем конфигурационный файл и проделаем еще несколько простых действий. Вначале следует разрешить форвардинг пакетов, для этого отредактируем /etc/sysctl.conf

nano /etc/sysctl.conf

Находим строку:

#net.ipv4.ip_forward = 1

и убираем символ “#”.  Затем сохраняем файл. Но для того, чтобы через наш туннель можно было бы ходить в интернет на сервере нужно включить механизм NAT — трансляции сетевых адресов. Для этого воспользуемся iptables. ens3, в нашем примере, это внешний интерфейс сервера.

iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o ens3 -j MASQUERADE

Чтобы созданное нами правило пропуска трафика не удалилось после перезагрузки сервера установим пакет iptables-persistent:

apt-get install iptables-persistent

При установке на вопрос о сохранении текущих правил IPv4 отвечаем утвердительно. Теперь перезагружаем сервер и проверяем, что OpenVPN успешно запущен:

systemctl status openvpn

Приступаем к настройке со стороны клиента. Вне зависимости от используемой операционной системы нам всего лишь требуется четыре файла: корневой сертификат сервера (ca.crt), персональный сертификат клиента и соответствующий ему ключ (macbook.crt и macbook.key), а также конфигурационный файл для клиента.

Первые три файла у нас уже есть на сервере в папке /etc/openvpn/keys — их можно легко скачать с сервера с помощью SFTP. А вот конфигурационный файл нам нужно создать вручную. Создаем на компьютере-клиенте отдельную папку и помещаем туда сертификаты.

Затем создаем конфиг для клиента с любым именем и расширением ovpn:

client# указываем что это настройка для клиентаdev tun# будем поднимать туннельproto tcp# указываем протоколremote XXX.XXX.XXX.XXX 1194# вместо XXX.XXX.XXX.XXX вписываем IP-адрес и порт сервераcipher AES-256-CBC# поскольку на сервере используем шифрование указываем это и тутresolv-retry infinite# указываем сколько раз будем повторять запрос для поиска хостнеймаnobind# не выполнять привязку локального IP-адреса и портаpersist-key# чтобы ключи не пересылались повторно при разрыве соединенияpersist-tun# обеспечит работу туннеля в режиме persistca ca.crt# указываем имя корневого сертификатаcert macbook.crt# указываем имя клиентского сертификатаkey macbook.key# указываем имя ключа для сертификата клиентаns-cert-type server# опция безопасности для исключения MITM-атакcomp-lzo# включаем поддержку сжатия трафикаverb 3

# указываем уровень логирования

Сохраняем файл и устанавливаем клиентское приложение. Вариантов множество — для Windows и Linux лучше использовать официальное приложение, которое можно скачать по ссылке https://openvpn.net/index.php/open-source/downloads.html

Пользователи MacOS могут воспользоваться прекрасной бесплатной программой TunnelBlick, которую можно скачать на сайте разработчика— https://tunnelblick.net/downloads.html

После установки клиента для Windows достаточно лишь скопировать конфигурационный файл и сертификаты в папку C:Program FilesOpenVPNconfig и запустить подключение.

Пользователи Linux могут использовать Network Manager для создания нового VPN-соединения и указания пути к конфигурационному файлу.

В случае MacOS с установленным TunnelBlick — достаточно двойного клика по ovpn-файлу и система сама импортирует новый профиль соединения.

Заключение

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

Источник: https://community.vscale.io/hc/ru/community/posts/209661629/comments/115000022125

Шпаргалки админа

Изначально эту статью я писал для Хабра, но чуть позже решил продублировать в Блог.

Не так давно передо мною встала задача соединить в единую сеть филиалы одной крупкой компании, разбросанные по Сибири. Главная проблема была в том, что OpenVPN надо было заставить работать поверх нестабильного PPPoE попутно пустив весь трафик через OpenVPN

Первоначальная цель была в экономии денег на Интернет трафике в филиалах т.к. в удалённых районах цена безлимитного ADSL с шириной в 256кб/с стоила порядка 7-10т.р. в месяц, а интернет был жизненно необходим.

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

1. proxy

Самое быстрое решение это было обычный каскад proxy серверов, так и было сделано т.к.

раньше все филиалы раздавали интернет у себя прямо модемом, то нужно было всем выделить по 1 системнику, который бы выполнял роль шлюза, системники были не подарки, кто даст 800й пень, кто 233, в общем у кого что было.. Хотя сегодня за 4-7 т.р. можно собрать достойный шлюз, но хозяин-барин, хочу говорит без затрат!

На эти шлюзы была установлена ubuntu 8.04 LTS настроена в виде шлюза, чтоб воткнул в локальную сеть, в модем и в розетку, и сразу всё работало т.к. во многих филиалах, админы могли только нажать «Any key» на клавиатуре пользователя, но не беда, дело шло, постепенно 7 филиалов перенастроило свои модемы, и воткнули шлюзы

Источник: http://www.odmin4eg.ru/2010/ubuntu-openvpn-server-nastrojka-soedinenie-filialov-set/

Ссылка на основную публикацию