Как изменить порт openvpn сервера

The Server Network Settings page allows you to edit the settings for hostname, protocol, daemons, and port numbers for the three network servers compromising

Configuration: Network Settings

About the Page

The Server Network Settings page allows you to edit the settings for hostname, protocol, daemons, and port numbers for the three network servers compromising the Access Server: the VPN Server, the Admin Web UI, and the Client Web Server.

An overview of the Network Settings page:

VPN Server

The fields and settings within the VPN Server section configure the hostname or IP address, interfaces, protocols, daemons, and ports. Incorrect configuration of the hostname or IP address of your server breaks Access Server functionality. Any changes to these settings directly affects the client configuration files issued to VPN clients. Thus, making any alterations will require any users that have downloaded VPN Client installers and/or configuration files to redownload or update their VPN profile.

The hostname or IP address of the server must be configured properly in order for the Access Server to function correctly. There is also the option to choose between using TCP, UDP, or both protocols. Regardless of which choice, you have the option to define the port used by each protocol. If both are chosen, you also have the option to define how many daemons both protocols may have.

VPN Server Section

VPN Server Network Settings

Hostname or IP Address

This is the name or IP address that VPN clients will use to access the VPN Server. It must be a public IP address or Fully-Qualified Domain name (FQDN). We strongly recommend using an FQDN for this setting.

Interface and IP Address

This configures the port where OpenVPN Access Server will listen to Admin Web UI requests. If you cannot access the interface listed, you will be unable to login to your server.

Protocol

You can choose TCP, UDP, or Both (multi-daemon mode) for protocol options. The OpenVPN protocol functions best over just the UDP protocol. By default, the downloaded connections profiles from Access Server are pre-programmed to try UDP first, then TCP, if that fails. However, for certain networks that may block some traffic, you may need TCP or both.

For example, on a public network, only traffic for protocols such as HTTP, HTTPS, FTP, SMTP, POP3, and IMAP, are allowed. Most of those are TCP-only. For connections through such a network, it’s useful to also support TCP connections. By default, we choose port TCP 443, which is the same port as HTTPS traffic, which is usually allowed even on restrictive networks.

We consider TCP less ideal due to the possibility of the TCP meltdown phenomenon, which occurs when you stack one transmission protocol on top of another (such as TCP traffic transported within an OpenVPN TCP tunnel). The underlying layer may encounter a problem and attempt to correct or compensate it, but the layer above overcompensates, which causes delays and problems.

Daemons and Port Numbers

You can change the number of TCP or UDP daemons as well as their port numbers with these fields.

Admin and Client Web Servers

When TCP or Both (multi-daemon mode) are selected, you have the option to choose whether the VPN Server provides access to the Admin and/or Client Web Server services through its IP address and port. If you choose No, they are still accessible via their configured IP address and port number.

Admin and Client Settings

The sections for the Admin and Client UIs allow you to configure the ports to access each and the interfaces they listen on. You can change these settings with one of the three options beneath Interface and IP Address.

Admin and Client Configuration Settings

Admin_Client Network Settings

Notice that the Client Web Server section has the option to use the same IP address and Port as the Admin UI. If chosen, it will inherit the port, interface and IP address, defined for the Admin Web UI. If you choose to use a different IP address or port, you will see additional configuration options.

If you select Use a different IP address or port then this additional section displays for configuration

admin and client settings

Press the Save Settings button to finalize all changes.

Summary

Configuration: Network Settings provides a clear interface to configure the settings for the VPN Server and the website settings for the Admin and Client servers. It is a simple page that showcases the ease of configuring the Access Server in comparison to configuring these settings on your own.

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

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

Шаг 2. Создание директории центра сертификации

OpenVPN это виртуальная частная сеть, использующая TLS/SSL. Это означает, что OpenVPN использует сертификаты для шифрования трафика между сервером и клиентами. Для выпуска доверенных сертификатов (trusted certificates) нам потребуется создать наш собственный центр сертификации.

Создайте пользователя с именем, например, openvpn-ca и перейдите в его домашний каталог:

adduser openvpn-ca
su - openvpn-ca

Для начала скопируем шаблонную директорию easy-rsa в нашу домашнюю директорию с помощью команды make-cadir:

make-cadir ~/openvpn-ca
cd ~/openvpn-ca

Шаг 3. Настройка переменных центра сертификации

Для настройки переменных нашего центра сертификации нам необходимо отредактировать файл vars. Откройте этот файл в вашем текстовом редакторе:

Внутри файла вы найдёте переменные, которые можно отредактировать, и которые задают параметры сертификатов при их создании. Нам нужно изменить всего несколько переменных.

~/openvpn-ca/vars

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"

. . .

Пока мы в этом файле, отредактируем значение KEY_NAME чуть ниже, которое заполняет поле субъекта сертификатов. Для простоты зададим ему название debian01:

~/openvpn-ca/vars

export KEY_NAME="debian01"

Сохраните и закройте файл.

Шаг 4. Создание центра сертификации

Теперь мы можем использовать заданные нами переменные и утилиты easy-rsa для создания центра сертификации.

Убедитесь, что вы находитесь в директории центра сертификации и используйте команду source к файлу vars. В моем случае также потребовалось добавить симлинк к файлу openssl-1.0.0.cnf:

cd ~/openvpn-ca
ln -s ~/openvpn-ca/openssl-1.0.0.cnf openssl.cnf
source vars

Вы должны увидеть следующий вывод:

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

Убедимся, что мы работаем в «чистой среде» выполнив следующую команду:

Теперь мы можем создать наш корневой центр сертификации командой:

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

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

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

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

Начнём с создания сертификата OpenVPN и ключей для сервера. Это можно сделать следующей командой:

Внимание: Если ранее вы выбрали имя, отличное от server, вам придётся немного изменить некоторые инструкции. Например, при копировании созданных файлов в директорию /etc/openvpn вам придётся заменить имена на заданные вами. Вам также придётся изменить файл /etc/openvpn/server.conf для того, чтобы он указывал на корректные .crt и .key файлы.

./build-key-server debian01

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

Согласитесь со всеми значениями по умолчанию, нажимая ENTER. Не задавайте challenge password. В конце процесса два раза введите y для подписи и подтверждения создания сертификата:

Вывод
. . .

Certificate is to be certified until May  1 17:51:16 2026 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

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

Для завершения этой команды может потребоваться несколько минут.

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

openvpn --genkey --secret keys/ta.key

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

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

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

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

Для создания файлов без пароля для облегчения автоматических соединений используйте команду build-key:

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

В ходе процесса создания файлов все значения по умолчанию будут введены, вы можете нажимать ENTER. Не задавайте challenge password и введите y на запросы о подписи и подтверждении создания сертификата.

Шаг 7. Настройка сервиса OpenVPN

Далее настроим сервис OpenVPN с использованием созданных ранее файлов.

Копирование файлов в директорию OpenVPN
Нам необходимо скопировать нужные нам файлы в директорию /etc/openvpn.

Сначала скопируем созданные нами файлы. Они находятся в директории ~/openvpn-ca/keys, в которой они и были созданы. Нам необходимо скопировать сертификат и ключ центра сертификации, сертификат и ключ сервера, подпись HMAC и файл Diffie-Hellman:

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

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

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

Настройка конфигурации OpenVPN
Теперь, когда наши файлы находятся на своём месте, займёмся настройкой конфигурационного файла сервера:

sudo vi /etc/openvpn/server.conf

Базовая настройка
Сначала найдём секцию HMAC поиском директивы tls-auth. Удалите «;» для того, чтобы раскомментировать строку с tls-auth. Далее добавьте параметр key-direction и установите его значение в «0»:

/etc/openvpn/server.conf

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

Далее найдём секцию шифрования, нас интересуют закомментированные строки cipher. Удалите «;» для раскомментирования строки AES-256-CBC:

/etc/openvpn/server.conf

Под этой строкой добавьте строку auth и выберите алгоритм HMAC. Хорошим выбором будет SHA256:

/etc/openvpn/server.conf

Наконец, найдите настройки user и group и удалите «;» для раскомментирования этих строк:

/etc/openvpn/server.conf

user nobody
group nogroup

(Опционально) Проталкивание изменений DNS для перенаправления всего трафика через VPN
Сделанные нами настройки создают VPN соединение между двумя машинами, но они не заставляют эти машины использовать VPN соединение. Если вы хотите использовать VPN соединение для всего своего трафика, вам необходимо протолкнуть (push) настройки DNS на клиентские машины.

Для этого вам необходимо раскомментировать несколько директив. Найдите секцию redirect-gateway и удалите «;» из начала строки для расскоментирования redirect-gateway:

/etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp"

Чуть ниже находится секция dhcp-option. Удалите «;» для обеих строк:

/etc/openvpn/server.conf

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Это позволит клиентам сконфигурировать свои настройки DNS для использования VPN соединения в качестве основного.

(Опционально) Настройка порта и протокола
По умолчанию OpenVPN использует порт 1194 и протокол UDP для соединения с клиентами. Если вам необходимо изменить порт из-за каких-либо ограничений для ваших клиентов, вы можете сделать это изменив настройку port. Если вы не хостите веб-контент на вашем OpenVPN сервере, вы можете использовать порт 443, поскольку этот порт обычно разрешён для использования в большинстве файрволов.

/etc/openvpn/server.conf

(Опционально) Использование кастомного имени сертификата и ключа
Если во время использования команды ./build-key-server чуть выше вы указали параметр, отличный от debian01, измените настройки cert и key, чтобы они указывали на правильные файлы .crt и .key. Если вы использовали debian01, эти настройки должны выглядеть таким образом:

/etc/openvpn/server.conf

ca keys/ca.crt
cert keys/debian01.crt
key keys/debian01.key

Сохраните и закройте файл.

Шаг 8. Настройка сетевой конфигурации сервера

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

Настройка перенаправления IP
Сначала разрешим серверу перенаправлять трафик. Это ключевая функциональность нашего VPN сервера.

Настроим это в файле /etc/sysctl.conf:

Найдите строку настройки net.ipv4.ip_forward. Удалите «#» из начала строки, чтобы раскомментировать её:

/etc/sysctl.conf

Сохраните и закройте файл.

Для применения настроек к текущей сессии наберите команду:

Настройка правил UFW для сокрытия соединений клиентов
Вам нужно установить файрвол UFW. Нам потребуется файрвол для манипулирования с входящим на сервер трафиком. Мы должны изменить файл настроек для сокрытия соединений (masquerading).

sudo apt-get update
sudo apt-get install ufw

Перед тем, как изменить этот файл, мы должны найти публичный интерфейс сети (public network interface). Для этого наберите команду:

Публичный интерфейс должен следовать за словом «dev». Например, в нашем случае этот интерфейс называется ens33:

Вывод
default via 192.168.0.254 dev ens33 proto static metric 100

Зная название интерфейса откроем файл /etc/ufw/before.rules и добавим туда соответствующие настройки:

sudo vi /etc/ufw/before.rules

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

Внимание: не забудьте заменить ens33 в строке -A POSTROUTING на имя интерфейса, найденное нами ранее.

/etc/ufw/before.rules

#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0] 
# Allow traffic from OpenVPN client to ens33
-A POSTROUTING -s 10.8.0.0/24 -o ens33 -j MASQUERADE
COMMIT
# END OPENVPN RULES

# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Сохраните и закройте файл.

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

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

/etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

Сохраните и закройте файл.

Открытие порта OpenVPN и применение изменений
Далее настроим сам файрвол для разрешения трафика в OpenVPN.

Если вы не меняли порт и протокол в файле /etc/openvpn/server.conf, вам необходимо разрешить трафик UDP для порта 1194. Если вы изменили эти настройки, введите указанные вами значения. В моем случае это UDP порт 443

Также добавьте ваш SSH порт

sudo ufw allow OpenSSH
sudo ufw allow 443/udp

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

sudo ufw disable
sudo ufw enable

Теперь наш сервер сконфигурирован для обработки трафика OpenVPN.

Шаг 9. Включение сервиса OpenVPN

Мы готовы включит сервис OpenVPN на нашем сервере. Мы можем сделать это с помощью systemd.

Нам необходимо запустить сервер OpenVPN указав имя нашего файла конфигурации в качестве переменной после имени файла systemd. Файл конфигурации для нашего сервера называется /etc/openvpn/server.conf, поэтому мы добавим @server в конец имени файла при его вызове:

sudo systemctl start openvpn@server

Убедимся, что сервис успешно запущен командой:

sudo systemctl status openvpn@server

Если всё в порядке, настроем сервис на автоматическое включение при загрузке сервера:

sudo systemctl enable openvpn@server

Шаг 10. Создание инфраструктуры настройки клиентов

Далее настроим систему для простого создания файлов конфигурации для клиентов.

Создание структуры директорий конфигурации клиентов
В домашней директории создайте структуру директорий для хранения файлов:

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

Откройте этот файл в вашем текстовом редакторе:

vi ~/client-configs/base.conf

Сделаем несколько изменений в этом файле.

Сначала найдите директиву remote. Эта директива сообщает клиенту адрес нашего сервера OpenVPN. Это должен быть публичный IP адрес вашего сервера OpenVPN. Если вы изменили порт, который слушает сервер OpenVPN, измените порт по умолчанию 1194 на ваше значение:

~/client-configs/base.conf

. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote server_IP_address 443
. . .

Убедитесь, что протокол совпадает с настройками сервера:

~/client-configs/base.conf

Далее раскомментируйте директивы user и group удаляя «;»:

~/client-configs/base.conf

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Найдите директивы ca, cert и key. Закомментируйте эти директивы, так как мы будем добавлять сертификаты и ключи в самом файле:

~/client-configs/base.conf

# 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

Добавьте настройки cipher и auth согласно заданным в файле /etc/openvpn/server.conf:

~/client-configs/base.conf

cipher AES-256-CBC
auth SHA256

Далее добавьте директиву key-direction в любое место в файле. Она должна иметь значение «1» для корректной работы сервера:

~/client-configs/base.conf

Наконец, добавьте несколько закомментированных строк. Мы ходим добавить эти строки в каждый файл конфигурации, но они будут включены только для клиентов на Linux, которые используют файл /etc/openvpn/update-resolv-conf. Этот скрипт использует утилиту resolvconf для обновление информации DNS на клиентах Linux.

~/client-configs/base.conf

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Если ваш клиент работает на Linux и использует файл /etc/openvpn/update-resolv-conf, вы должны раскомментировать эти строки в сгенерированном клиентском файле конфигурации OpenVPN.

Сохраните и закройте файл.

Создание скрипта генерации файлов конфигурации
Теперь создадим простой скрипт для генерации файлов конфигурации с релевантными сертификатами, ключами и файлами шифрования. Он будет помещать сгенерированные файла конфигурации в директорию ~/client-configs/files.

Создайте и откройте файл make_config.sh внутри директории ~/client-configs:

vi ~/client-configs/make_config.sh

Вставьте следующие текст в этот файл:

~/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} 
    <(echo -e '<ca>') 
    ${KEY_DIR}/ca.crt 
    <(echo -e '</ca>n<cert>') 
    ${KEY_DIR}/${1}.crt 
    <(echo -e '</cert>n<key>') 
    ${KEY_DIR}/${1}.key 
    <(echo -e '</key>n<tls-auth>') 
    ${KEY_DIR}/ta.key 
    <(echo -e '</tls-auth>') 
    > ${OUTPUT_DIR}/${1}.ovpn

Сохраните и закройте файл.

Сделайте его исполняемым файлом командой:

chmod 700 ~/client-configs/make_config.sh

Шаг 11. Генерация конфигураций клиентов

Теперь мы можем легко сгенерировать файлы конфигурации клиентов.

Если вы следовали всем шагам этой статьи, вы создали сертификат client1.crt и ключ клиента client1.key командой ./build-key client1 на шаге 6. Вы можете сгенерировать конфигурацию для этих файлов перейдя в директорию ~/client-configs и используя только что созданный нами скрипт:

cd ~/client-configs
./make_config.sh client1

Если всё прошло успешно, мы должны получить файл client1.ovpn в директории ~/client-configs/files:

ls ~/client-configs/files

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

Шаг 12. Установка файлов конфигураций клиентов

Linux
Установка

sudo apt-get update
sudo apt-get install openvpn

Настройка

Сначала проверьте, содержит ли ваш дистрибутив скрипт /etc/openvpn/update-resolv-conf:

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

Если вам удалось найти файл update-resolv-conf, раскомментируйте следующие строки файла:

client1.ovpn

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Сохраните и закройте файл.

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

sudo openvpn --config client1.ovpn

В результате вы подключитесь к серверу.

Шаг 13. Тестирование VPN соединения

После того, как всё установлено и настроено, убедимся, что всё работает правильно. Без установки соединения с VPN откройте браузер и зайдите на DNSLeakTest.

Шаг 14. Отзыв клиентских сертификатов

Время от времени, вам может понадобиться отозвать клиентский сертификат для предотвращения доступа к серверу VPN

Для этого зайдите в вашу директорию центра сертификации и введите команды:

Настройка OpenVPN на Ubuntu Server для подключения клиентом Mikrotik

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

В данной инструкции мы рассмотрим настройку сервера OpenVPN на Ubuntu и конфигурирование Mikrotik для подключения по VPN.

Выполнение настройки сервера OpenVPN
Настройка Mikrotik для подключения к серверу VPN
Настройка доступа к сети Интернет
Настройка анонимности
Проброс портов
Другая информация по OpenVPN

Мы настроим наш сервер, чтобы он слушал на нестандартном порту OpenVPN — 443. Откроем порт в брандмауэре:

iptables -I INPUT -p tcp —dport 443 -j ACCEPT

* если мы будем использовать другой порт, меняем его на соответствующий. Также необходимо обратить внимание на протокол tcp. Необходимо использовать именно его, так как Mikrotik не поддерживаем UDP для подключения к OpenVPN.

Для сохранения правил используем утилиту iptables-persistent:

apt-get install iptables-persistent

netfilter-persistent save

Устанавливаем пакеты:

apt install openvpn easy-rsa

* где openvpn — сам сервер и клиента OpenVPN; easy-rsa — утилита для создания сертификатов.

Создаем каталог, в котором разместим готовые сертификаты для OpenVPN:

mkdir -p /etc/openvpn/keys

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

mkdir /etc/openvpn/easy-rsa

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

cd /etc/openvpn/easy-rsa

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

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

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

vi vars

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»

* данные значения могут быть любыми, но лучше их задать осмысленно. Для удобства.

Рассмотрим процесс формирования сертификата с использованием RSA3 пошагово.

1. Инициализируем PKI:

./easyrsa init-pki

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

./easyrsa build-ca

* после вводим дважды пароль.

На запрос «Common Name» можно просто нажать Enter:

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

3. Создаем запрос на сертификат для сервера:

./easyrsa gen-req server nopass

* nopass можно упустить, если хотим повысить безопасность с помощью пароля на сертификат.

На запрос «Common Name» можно просто нажать Enter:

Common Name (eg: your user, host, or server name) [server]:

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

./easyrsa sign-req server server

После ввода команды подтверждаем правильность данных, введя yes:

Type the word ‘yes’ to continue, or any other input to abort.
  Confirm request details: yes

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

Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:

5. Формируем ключ Диффи-Хеллмана:

./easyrsa gen-dh

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

cp pki/ca.crt /etc/openvpn/keys/

cp pki/issued/server.crt /etc/openvpn/keys/

cp pki/private/server.key /etc/openvpn/keys/ 

cp pki/dh.pem /etc/openvpn/keys/

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

vi /etc/openvpn/server.conf

port 443
proto tcp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
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

* где

  • port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных. Порт 1194 является стандартным для OpenVPN).
  • proto — используемый транспортный протокол.
  • dev — виртуальный сетевой адаптер, который будет создан для работы OpenVPN.
  • ca — путь до сертификата корневого центра сертификации.
  • cert — путь до открытого сертификата сервера.
  • key — путь до закрытого сертификата сервера.
  • dh — путь до ключа Диффи — Хеллмана.
  • 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 (сервер или клиент).

Создадим каталог для логов:

mkdir /var/log/openvpn

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

systemctl enable openvpn@server

systemctl restart openvpn@server

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

Сертификат должен быть сформирован на сервер, после чего перенесен на микротик. Рассмотрим процесс подробнее.

На сервере

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

mkdir /tmp/keys

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

Переходим в каталог easy-rsa:

cd /etc/openvpn/easy-rsa

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

./easyrsa build-client-full client1 nopass

* в данном примере будет создан сертификат для узла client1 (название может быть любым).

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

Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:

Скопируем ключи во временную директорию:

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt /tmp/keys/

* название client1 зависит от имени сертификата, который мы ему дали при создании.

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

chmod -R a+r /tmp/keys

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

Подключаемся к роутеру Mikrotik. Это можно сделать с помощью веб-браузера или специальной программы Winbox. Мы рассмотрим вариант с использованием последней.

Заходим в настройки роутера — переходим в раздел Files — кликаем по Upload и выбираем наши 3 сертификата:

Переходим к загрузке файлов в Mikrotik

Кликаем по OK. Нужные нам файлы окажутся на роутере.

Переходим в System — Certificates:

Переходим к сертификатам в микротике

Кликаем по Import:

Импортируем сертификаты в микротик

… и по очереди импортируем:

  1. ca.crt
  2. client1.crt
  3. client1.key

* импорт делаем именно в такой последовательности.

Теперь переходим в раздел PPP — создаем новое соединение OVPN Client:

Открываем панель добавления соединения по OpenVPN

На вкладке Dial Out настраиваем наше соединение:

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

* где:

  • Connect To — адрес сервера OpenVPN, к которому должен подключиться Mikrotik.
  • Port — порт, на котором слушает OpenVPN.
  • User — учетная запись для авторизации. Мы не настраивали проверку пользователя, но без указания данного поля Mikrotik не даст сохранить настройку.
  • Certificate — выбираем сертификат, который импортировали на Mikrotik.
  • Auth — алгоритм криптографического хеширования, который должен использоваться для подключения.
  • Chiper — криптографический алгоритм шифрования.
  • Add Default Route — если поставить данную галочку, все запросы в другую подсети (Интернет) должны пойти через VPN соединение.

Нажимаем OK — наш роутер должен подключиться к серверу.

Настройка доступа к сети Интернет через сервер VPN

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

Создаем файл:

vi /etc/sysctl.d/gateway.conf

net.ipv4.ip_forward=1

Применяем настройку:

sysctl -p /etc/sysctl.d/gateway.conf

Добавляем фаервольные правила. Как правило, управление брандмауэром netfilter в Linux на базе Debian выполняется с помощью утилиты iptables.

Настройка выполняется из расчета, что сеть Интернет настроена через интерфейс ens3:

iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE

iptables -I FORWARD -i tun0 -o ens3 -m state —state RELATED,ESTABLISHED -j ACCEPT

iptables -I FORWARD -i tun0 -o ens3 -j ACCEPT

Предполагается, что tun0 используется для VPN сети (данное имя присваивается серверу OpenVPN по умолчанию), а ens3 — внешней. Посмотреть имена интерфейсов можно командой:

ip a

Сохраняем настройки iptables:

apt-get install iptables-persistent

netfilter-persistent save

Настройка анонимности

В сети есть различные порталы для проверки анонимности. Например, сайты whoer или 2ip. Приведем некоторые настройки для получения 100%-го результата.

1. Отключение icmp. По времени ответа на ping можно определить отдаленность клиента от прокси. Чтобы проверку нельзя было выполнить, отключаем на сервере icmp.

Для этого создаем файл:

vi /etc/sysctl.d/icmp.conf

net.ipv4.icmp_echo_ignore_all=1

И применяем настройки:

sysctl -p /etc/sysctl.d/icmp.conf

2. Настройка MTU.

Для решения проблем с VPN fingerprint, на стороне сервера добавляем 2 опции:

vi /etc/openvpn/server.conf


tun-mtu 1500
mssfix 1623

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

systemctl restart openvpn@server

Проброс портов (Port Forwarding)

Необходим для перенаправление сетевых запросов на Mikrotik, стоящий за VPN.

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

iptables -t nat -I PREROUTING -p tcp -i ens3 —dport 80 -j DNAT —to-destination 172.16.10.6:80

iptables -I FORWARD -p tcp -d 172.16.10.6 —dport 80 -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT

* где ens3 — внешний сетевой интерфейс. 172.16.10.6 — IP-адрес роутера Mikrotik, который он получит после подключения.

Разрешаем порт:

Не забываем сохранить правила:

netfilter-persistent save

Читайте также

Другие полезные инструкции на тему VPN:

1. Установка и настройка OpenVPN на Linux CentOS 7.

2. Настройка и использование OpenVPN на Ubuntu.

3. Как настроить сервер OpenVPN на Windows.

4. Настройка сервера OpenVPN на CentOS 8.

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

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

7. Настройка доступа к локальной сети клиентам OpenVPN в Linux.

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Кроме общественных сетей в последние годы стала приобретать повышенную актуальность проблема ограничения доступа к некоторым ресурсам исходя из географического расположения клиента. Это могут быть как ограничения регионального характера, например, популярный поставщик видеоконтента Netflix, так и блокировки со стороны органов власти, как яркий пример которых «ковровые блокировки» РКН в его борьбе с Телеграм, когда под ограничения попало большое количество совершенно легальных ресурсов.

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

Что нужно для создания собственного VPN-сервиса? Прежде всего потребуется VPS (виртуальный выделенный сервер) расположенный в регионе, из которого возможен неограниченный доступ к требуемым ресурсам. В большинстве случаев можно выбирать Европу или Штаты, но во втором случае задержки будут выше. На наш взгляд, выбирать Штаты имеет смысл, если вам требуется доступ к американским ресурсам, тому же Netflix или покупкам у американских продавцов на Amazon и Ebay.

Для поиска недорогих VPS можно воспользоваться специальными сайтами, такими как Low End Box или бесплатными предложениями от облачных провайдеров. Так у Amazon и Microsoft можно бесплатно получить виртуальную машину на год, а Oracle предлагает две VPS бесплатно и навсегда.

В нашем примере мы будем использовать бесплатный VPS от Oracle с Ubuntu 18.04, но данная инструкция подойдет для любых deb-based систем и с некоторыми поправками для любого другого Linux-дистрибутива.

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

Прежде всего установим OpenVPN и Easy-RSA для управления ключами:

apt install openvpn easy-rsa

Скопируем файлы easy-rsa в конфигурационную директорию OpenVPN и создадим символическую ссылку на файл настроек OpenSSL:

cp -r /usr/share/easy-rsa /etc/openvpn
ln -s /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

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

export KEY_COUNTRY="US"
export KEY_PROVINCE="Wild West"
export KEY_CITY="Uncle Tom's Cabins"
export KEY_ORG="Uncle Tom"
export KEY_EMAIL="tom@example.com"
export KEY_OU="Cabin"

Сохраним файл и перейдем к созданию собственного центра сертификации (CA). Для этого перейдем в директорию нашего CA и загрузим переменные:

cd /etc/openvpn/easy-rsa
source ./vars

Очистим любые имеющиеся данные и инициализируем центр сертификации:

./clean-all
./build-ca

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

OpenVPN-internet-gateway-001.pngПосле чего в директории /etc/openvpn/easy-rsa/keys появится сертификат CA, содержащий публичный ключ, ca.crt, который должен присутствовать на каждом VPN-клиенте, и закрытый ключ центра сертификации ca.key, этот файл является секретным и не должен покидать пределы сервера.

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

./build-dh

Данная операция, в зависимости от производительности вашего VPS, может занять достаточно много времени.

И, наконец, создадим ключевую пару для сервера:

./build-key-server server

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

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

mkdir /etc/openvpn/keys

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

cd /etc/openvpn/easy-rsa/keys
cp ca.crt dh2048.pem server.crt server.key /etc/openvpn/keys

Распакуем и скопируем в директорию /etc/openvpn шаблон серверной конфигурации:

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

Откроем файл /etc/openvpn/server.conf и внесем в него необходимые изменения, в большинстве случаев вам придется раскомментировать нужны строки или убедиться в их наличии. Опции указаны в порядке их следования в файле:

port 1194
proto udp
dev tun

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

Затем зададим топологию сети:

topology subnet

Укажем пути к ключам и сертификатам, допускаются относительные пути, в этом случае корнем будет считаться директория /etc/openvpn:

ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem

Зададим диапазон OpenVPN-сети:

server 10.88.0.0 255.255.255.0

И укажем файл для хранения адресов клиентов, которые будут автоматически выдаваться сервером:

ifconfig-pool-persist /var/log/openvpn/ipp.txt

Автоматически сконфигурируем клиентов на доступ в интернет через OpenVPN-подключение:

push "redirect-gateway def1 bypass-dhcp"

И передадим им собственные DNS-сервера:

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Укажем параметры проверки активности:

keepalive 10 120

Сервер будет проверять клиента каждые 10 секунд и при отсутствии ответа через 120 секунд клиент будет считаться неактивным.

Обязательно закомментируйте строку:

#tls-auth ta.key 0

Для сценария доступа в интернет дополнительная TLS-аутентификация будет излишней.

В последних версиях OpenVPN включен механизм автоматического согласования протоколов шифрования между клиентом и сервером, по умолчанию будет выбран шифр AES-256-GCM, но так как вычислительные возможности VPS обычно ограничены и большого смысла шифровать канал доступа в интернет сложными шифрами нет, то отключим соглассование и укажем достаточно простой AES-шифр:

ncp-disable
cipher AES-128-CBC

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

compress lz4-v2
push "compress lz4-v2"

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

Если у вас есть старые версии клиентов (ниже 2.4), то можно использовать простое lzo-сжатие, для этого закомментируйте вышеприведенные строки и добавьте:

comp-lzo

Эту опцию также потребуется добавить в конфигурационные файлы клиентов.

В целях безопасности понизим права запущенного сервера:

user nobody
group nogroup

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

persist-key
persist-tun

Укажем путь к файлам логов:

status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log

И укажем его подробность:

verb 3

Во время отладки можно поднять уровень логов до 5-6.

Настройка брандмауэра и маршрутизации

Основной задачей нашего сервера является обеспечение выхода в интернет и будет разумно обеспечить минимальный набор правил безопасности, во многом они будут повторять те правила, которые мы использовали для наших роутеров на базе Linux.

Создадим файл правил:

touch /etc/nat 

и внесем в него следующие строки, обратите внимание на имя сетевого интерфейса вашего VPS, в нашем случае это ens3:

#!/bin/sh# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward
# Сбрасываем настройки брандмауэра
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Разрешаем инициированные нами подключения извне
iptables -A INPUT -i ens3 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешаем подключения по SSH
iptables -A INPUT -i ens3 -p tcp --dport 22 -j ACCEPT
# Разрешаем подключения к OpenVPN
iptables -A INPUT -i ens3 -p udp --dport 1194 -j ACCEPT
#Запрещаем входящие извне
iptables -A INPUT -i ens3 -j DROP
# Разрешаем инициированные нами транзитные подключения извне
iptables -A FORWARD -i ens3 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Запрещаем транзитный трафик извне
iptables -A FORWARD -i ens3 -o tun0 -j DROP
# Включаем маскарадинг для локальной сети
iptables -t nat -A POSTROUTING -o ens3 -s 10.88.0.0/24 -j MASQUERADE

Не забудем сделать файл исполняемым:

chmod +x /etc/nat

Данный файл требуется запускать после создания туннельного интерфейса tun0, поэтому откроем конфигурационный файл сервера OpenVPN /etc/openvpn/server.conf и в его конце добавим опцию:

up /etc/nat

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

ip a

OpenVPN-internet-gateway-002.pngТакже проверим применение правил брандмауэра:

iptables -L -vn

OpenVPN-internet-gateway-003.pngСледующий шаг касается только виртуальных машин в облаке Oracle Cloud, вам потребуется дополнительно разрешить входящий трафик на порт OpenVPN. Для этого перейдите в Сети » Виртуальные облачные сети » VirtualCloudNetwork-20191008-0144 » Сведения о списках безопасности, где вместо VirtualCloudNetwork-20191008-0144 будет имя вашей виртуальной сети. Затем добавьте новое правило для входящего трафика:

OpenVPN-internet-gateway-004.pngУкажите: Тип источника — CIDR, Исходный CIDR — 0.0.0.0/0, IP-протокол — UDP, Диапазон исходных портов — Все, Диапазон конечных портов — 1194.

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

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

cd /etc/openvpn/easy-rsa
source ./vars

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

./build-key client

где client -имя клиента, мы также рекомендуем давать им осмысленные имена.

Теперь скопируем файлы, которые необходимо передать на компьютер клиента в домашнюю директорию и изменим их владельца (по умолчанию владелец — root), чтобы вы смогли их скопировать с помощью любого FTP или SFTP клиента. В нашем случае имя пользователя ubuntu:

cd /etc/openvpn/easy-rsa/keys
cp ca.crt client.crt client.key ~
cd ~
chown ubuntu:ubuntu ca.crt client.crt client.key

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

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

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client.ovpn

После чего скопируйте все эти файлы на клиент и установите на нем OpenVPN, в Windows системах советуем изменить путь установки OpenVPN на более короткий и без пробелов, скажем, C:OpenVPN.

Затем откроем файл client.ovpn, который в Windows системах должен быть расположен в C:OpenVPNconfig, а в Linux в /etc/openvpn, и внесем в него следующие изменения:

client
dev tun
proto udp

Данные опции задают клиентский режим работы, тип туннеля и используемый протокол UDP.

Затем укажем адрес сервера:

remote 111.222.333.444 1194

Следующая опция предписывает клиенту постоянно разрешать имя OpenVPN-сервера, имеет смысл если мы указываем сервер по FQDN-имени, а не IP-адресу.

resolv-retry infinite

Для Linux систем обязательно укажите:

user nobody
group nogroup

В Windows данные опции следует обязательно закомментировать.

Проконтролируем наличие следующих опций:

persist-key
persist-tun

Укажем пути к ключам и сертификатам, для Linux систем подразумеваем их нахождение в /etc/openvpn/keys:

ca keys/ca.crt
cert keys/client.crt
key keys/client.key

Для Windows систем предположим их нахождение в C:OpenVPNkeys:

ca C:\OpenVPN\keys\ca.crt
cert C:\OpenVPN\keys\client.crt
key C:\OpenVPN\keys\client.key

Также обязательно закомментируем опцию:

#tls-auth ta.key 1

Включим защиту от атак типа «человек посередине»:

remote-cert-tls server

И укажем используемый шифр, он должен совпадать с указанным на сервере:

cipher AES-128-CBC

Остальные опции можно оставить без изменений. Сохраним файл и запустим OpenVPN-клиент.

Убедиться, что вы выходите в интернет через VPN-канал можно при помощи любого сервиса, показывающего ваш IP-адрес, например, 2ip.ru:

OpenVPN-internet-gateway-005.pngОбращаем внимание на национальную принадлежность адреса, в данном случае мы выходим в интернет из Штатов.

Самое время провести замер скорости доступа, мы будем использовать для этого популярный сервис SpeedTest. Первый замер без VPN:

OpenVPN-internet-gateway-006.pngВторой через OpenVPN-канал:

OpenVPN-internet-gateway-007.pngСразу обращаем внимание на выросший пинг — это последствия размещения сервера в Штатах, а также скорость скачивания не выше 10 Мбит/с — ограничение бесплатного тарифа Oracle, хотя в большинстве случаев этого вполне достаточно для комфортного серфинга.

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

route-nopull

После чего клиент будет игнорировать передаваемые с сервера опции маршрутизации и DHCP-опции, такие как DNS-сервера и т.п.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Like this post? Please share to your friends:
  • Как изменить порт jenkins
  • Как изменить порт hamachi
  • Как изменить порт ftp сервера
  • Как изменить порт ftp ubuntu
  • Как изменить порт flask