Связаться по:
vkarabedyants Telegram Viber
+7 (499) 350-10-69

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Установка и настройка OpenVPN-сервера

Начальная подготовка

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

Услуги по настройке vpn сервера, [email protected]

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

$ sudo apt-get update
$ sudo apt-get install openvpn easy-rsa isc-dhcp-server ufw

Далее необходимо скопировать шаблонную директорию easy-rsa в домашнюю директорию:

$ make-cadir ~/openvpn-ca

Для настройки переменных центра сертификации нам с вами необходимо отредактировать файл ~/openvpn-ca/vars:

export KEY_COUNTRY="USA"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"

Данным переменным можно задать желаемые значения или же просто оставить их как есть, главное – не оставлять пустыми.
Также нужно отредактировать значение KEY_NAME, которое заполняет поле субъекта сертификатов:
export KEY_NAME=»server» Теперь можно использовать заданные в файле vars переменные и утилиты easy-rsa для создания центра сертификации. Далее, находясь в директории центра сертификации,
нужно использовать команду source к файлу vars:

$ cd ~/openvpn-ca
$ source vars

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

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

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

$ ./clean-all

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

$ ./build-ca

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

$ ./build-key-server server

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

$ ./build-key client1

Генерация ключа протокола Диффи-Хеллмана, используемого при обмене ключами:

$ ./build-dh

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

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

После этого можно приступать к настройке непосредственно сервера OpenVPN.

Объединение серверов OpenVPN, слушающих разные порты

Для реализации повышенной доступности нашего VPN-сервера было решено объединить в одной виртуальной подсети несколько серверов, каждый из которых прослушивал бы свой порт. На данный момент из-за отсутствия многопоточности у OpenVPN действует правило «один демон – один порт», поэтому это единственная возможность связать клиентов, если им приходится использовать для подключения к серверу различные порты. В качестве используемых портов были выбраны 53 UDP, 53 TCP и 443 TCP. Соответственно, для каждого из запущенных демонов OpenVPN необходим отдельный виртуальный TUN/TAP-адаптер. Использование VPN второго уровня позволяет объединить их в мост, таким образом объединив клиентов различных серверов OpenVPN в одну подсеть. Ниже приведены опции из конфигурационного файла одного из трех серверов:

//Порт, который будет слушать сервер
port 443
//Используемый сервером транспортный протокол
proto tcp
//Имя сетевого адаптера, используемого данным сервером
dev tap0
//Режим работы сервера на втором уровне
server-bridge
//Включение принудительного перенаправления трафика клиентов
//в VPN
push "redirect-gateway def1 bypass-dhcp"
//Возможность клиентам сервера видеть друг друга. Остальные
//опции не являются ключевыми для рассматриваемой
//конфигурации и могут быть использованы по усмотрению
client-to-client

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

Также необходимо обратить внимание на процесс создания конфигурационных файлов для клиентов нашей VPN. Все настройки OpenVPN могут быть переданы как ключи запуска демона, однако для удобства пользователя OpenVPN поддерживает использование файлов с расширением ovpn
и conf, в которые могут быть записаны списком желаемые настройки. Также в такой файл можно записать данные пользовательского сертификата. Особенным для используемой в данной конфигурации
является способ записи в конфигурационный файл данных об адресе VPN-сервера:

# This configuration designed for use with <connection> blocks
# for 3 servers on one machine
<connection>
remote my.own.vpn 53 udp
</connection>
<connection>
remote my.own.vpn 53 tcp
</connection>
<connection>
remote my.own.vpn 443 tcp
</connection>

Данная группа параметров позволяет клиенту автоматически предпринимать попытки подключения к любому из перечисленных серверов. В нашем случае это один и тот же адрес (с доменным именем my.own.vpn), но различные номера портов на нем, соответствующие различным демонам OpenVPN. В зависимости от настроек следующий в очереди попыток подключения сервер может быть выбран из списка последовательно или случайно. После формирования конфигурационные файлы, содержащие данные сертификата, следует доставлять клиентам по защищенным каналам – например, посредством sftp:

sftp [email protected]:configs/client1.ovpn

Настройка сетевых интерфейсов

Для конфигурации сетевых интерфейсов, используемых серверами OpenVPN, и объединения их в мост необходимо добавить в файл /etc/network/interfaces следующие строки:

auto br0
iface br0 inet static
bridge_ports tap0 tap1 tap2
network 192.168.11.0
address 192.168.11.1
netmask 255.255.255.0
broadcast 192.168.11.255
auto tap0
iface tap0 inet manual
auto tap1
iface tap1 inet manual
auto tap2
iface tap2 inet manual

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

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

У OpenVPN есть встроенный механизм распределения IP-адресов внутри VPN, однако работает он только с клиентами, подключившимися к серверу посредством клиентского ПО. Следовательно, для корректной работы устройств, подключившихся через шлюз, необходимо использовать внутри
VPN отдельный DHCP-сервер. Для настройки ISC DHCP-сервера на мостовом сетевом
интерфейсе следует в файле /etc/default/isc-dhcp-server записать имя такового интерфейса, которое было задано в предыдущем пункте:

INTERFACES="br0"

При задании опций в конфигурационном файле нас особенно интересуют следующие опции:

option classless-static-routes code 121 = array of unsigned integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

Данные опции, по сути, являются объявлениями переменных, предназначен

option classless-static-routes 0, 192.168.11.1;
option ms-classless-static-routes 0, 192.168.11.1;

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

Настройка доступа в интернет

Проброс трафика из VPN в интернет будет производиться посредством iptables. В файл /etc/ufw/before.rules необходимо добавить следующие правила для активации NAT:

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
#Allow traffic from OpenVPN client to eth0
-A POSTROUTING -o ens4 -j MASQUERADE
-A POSTROUTING -o ens4 -j LOG --log-prefix "POSTROUTING"
COMMIT
# END OPENVPN RULES

Настройка аппаратного шлюза

В данной статье не рассматривается алгоритм установки OpenWRT на роутер и настройки доступа к нему посредством WEB GUI и SSH извне. Освещаются основные настройки, касающиеся именно использования в качестве шлюза для доступа в VPN. Так как локальный DHCP-сервер роутера необходимо будет отключить, администрирование производится из подсети, к которой роутер подключен WAN-портом. После каждого изменения настроек, произведенного посредством веб-интерфейса роутера, необходимо сохранить их нажатием кнопки Save&Apply в нижнем правом углу страницы.
В первую очередь установим соответствующий пакет:

# opkg update
# opkg install openvpn-openssl

Теперь нужно настроить роутер таким образом, чтобы интерфейсы его LAN были объединены с виртуальным сетевым интерфейсом, образуя коммутатор LAN-VPN. Однако для этого необходимо отключить межсетевой экран и DHCP-сервер роутера. Для отключения DHCP-сервера роутера и его межсетевого экрана нужно перейти в меню Network → Interfaces и выб рать вкладку LAN (см. рис. 1).

установка vpn сервера
Внизу страницы нужно поставить галку в чекбоксе Ignore interface (см. рис. 2).

настройка vpn
В верхнем меню выберите пункт System → Startup и переведите состояние службы firewall в Disabled (см .рис. 3).

установка и настройка впн
После этого необходимо зайти в консоль роутера – например, посредством SSH. В файле /etc/config/network нужно проверить, что в декларации сетевого интерфейса присутствует следующая строчка:

option proto 'dhcp'

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

config interface 'tap0'
option ifname 'tap0'
option proto 'dhcp'

В файле /etc/config/openvpn в секции custom_config установите значение параметра enabled, равное 1, опции config – равное полному пути к конфигурационному файлу:

###################################################
# Sample to include a custom config file. #
###################################################
config openvpn custom_config
# Set to 1 to enable this instance:
option enabled 1
# Include OpenVPN configuration
option config /etc/openvpn/%configname%.ovpn

Установите скрипт запуска OpenVPN в автозапуск следующей командой:

# /etc/init.d/openvpn enable

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

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.