В данной статье мы рассмотрим распространенный в SOHO-сегменте вариант организации сети, а именно — в головном офисе установлен маршрутизатор доступа, аналогичные по функциональности устройства работают в филиалах, некоторые сотрудники используют Интернет вне офисов. Необходимо обеспечить доступ к локальным сетям в каждом из подразделений, из каждого подразделения и для сотрудников-удаленщиков (по сценарию RoadWarrior).
Решение такой задачи на основе OpenVPN имеет свои плюсы. Это универсальность, поддержка для всех основных платформ, и масштабируемость решения. Обеспечиваемый уровень безопасности может удовлетворять самым высоким требованиям. Гибкость OpenVPN позволяет настроить систему таким образом, что на клиентском устройстве для соединения с сервером буквально достаточно подгрузить в программу заранее заготовленный файл конфигурации, что также, безусловно, привлекательно для администратора системы — по сути, все настройки можно выполнять централизованно.
В нашем примере, в офисах установлены маршрутизаторы серии Keenetic, на них мы настроим интерфейсы OpenVPN таким образом чтобы между хостами в локальных сетях каждого из офисов могла осуществляться передача трафика. Настройку будем производить с компьютера под управлением Windows 7.
1. Установка программного пакета OpenVPN. На сайте https://openvpn.net/community-downloads/ нужно скачать установщик, запустить его и установить набор программ OpenVPN для Windows. Непосредственно для настройки необходимы только обязательные компоненты и набор скриптов easy-rsa. Если данный компьютер будет также использоваться для подключения в схеме, выберите компоненты как на иллюстрации ниже.
Необходимо отметить для установки компонент EasyRSA Scripts. Чтобы установить скрипты EasyRSA нужно на первом экране установщика нажать кнопку Customize и прокрутить список компонентов в самый низ.
Для удобства в дальнейшей работе, можно изменить путь для установки ПО, например на C:\OpenVPN (в командной строке пути с пробелами приходится заключать в кавычки).
2. Подготовка PKI (Public Key Infrastructure).
а) Инициализация и создание корневого центра сертификации.
В командной строке, запущенной от имени администратора, выполним копирование содержимого каталога C:\OpenVPN\easy-rsa в каталог C:\OpenVPN, и перейдем в этот каталог:
copy C:\OpenVPN\easy-rsa\*.* C:\OpenVPN\*.*
cd C:\OpenVPN
Далее потребуется настроить среду. В каталоге C:\OpenVPN нужно выполнить от имени администратора команду:
init-config.bat
и затем ввести команду:
notepad vars.bat
Откроется окно текстового редактора с содержимым файла параметров easy-rsa по умолчанию.
В нем нужно заменить строки:
FOR /F "tokens=2*" %%a IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN"') DO set "PATH=%PATH%;%%b\bin"
на
rem FOR /F "tokens=2*" %%a IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN"') DO set "PATH=%PATH%;%%b\bin"
rem set "PATH=%PATH%;C:\Program Files\OpenVPN\bin"
на
set "PATH=%PATH%;C:\OpenVPN\bin"
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
на
set HOME=C:\OpenVPN
и также установить требуемые значения в параметрах запроса (см. https://en.wikipedia.org/wiki/Certificate_signing_request), например (см. вложение):
set KEY_COUNTRY=RU
set KEY_PROVINCE=MO
set KEY_CITY=Moscow
set KEY_ORG=KingKrimson,Ltd.
set KEY_EMAIL=none@krimson.biz
set KEY_CN=court.krimson.biz
set KEY_NAME=root_CA@court
set KEY_OU=IT Dept
после чего сохраните отредактированный файл.
TIP: Примечание: В нашем примере мы также изменили в файле vars.bat установленные по умолчанию значения:
set DH_KEY_SIZE=512
set KEY_SIZE=1024
для того, чтобы не увеличивать сверх меры листинги конфигураций. Предустановленные значения этих параметров, DH_KEY_SIZE=2048 и KEY_SIZE=4096, мы не рекомендуем менять без осознанной необходимости!
Теперь выполним подготовленный файл vars.bat (таким образом считываются установки easy-rsa), и затем clean-all.bat (этот скрипт удаляет ранее созданные сертификаты и ключи), после чего запустим процесс создания корневого центра сертификации при помощи скрипта build-ca.bat.
Это интерактивный процесс. Введенные при редактировании vars.bat значения полей для сертификата корневого центра сертификации будут запрошены на подтверждение по Enter, либо можно указать отличные параметры.
После завершения, в каталоге C:\OpenVPN\keys должен появиться файл сертификата ca.crt (CA, или Certificate Authority, это сертификационный центр, который позволяет генерировать, подписывать (делать валидными) и отзывать сертификаты), и частный ключ ca.key. Последний является главным секретом инфраструктуры PKI и в случае его компрометации необходимо повторять процесс, аннулировав все выпущенные ранее сертификаты и уничтожив сам CA (скрипт clean-all.bat).
NOTE: Важно! Этот ключ не вносится ни в какие файлы конфигурации и не должен покидать пределы компьютера с центром сертификации PKI.
Удалять PKI по завершении выпуска сертификатов, конечно тоже не стоит - возможно, один из сертификатов придется перевыпустить, отозвать или потребуется добавить новых клиентов к существующей схеме.
б) Генерация ключей и сертификатов сервера и клиентов.
Для срабатывания подключения клиентов к серверу OpenVPN, нам понадобятся сертификат и частный ключ для каждого из клиентов и для сервера. Создадим сначала пару для сервера, запустив скрипт build-key-server.bat:
build-key-server.bat court.server
Скрипт запрашивает подтверждение информации в полях сертификата, пароль и дополнительное имя организации. Последние два параметра мы не будем использовать (можно просто нажать Enter), а в заданные по умолчанию значения полей сертификата внесем для сертификата сервера изменения, конкретно Common Name вместо court.krimson.biz будет server.court.krimson.biz и Name вместо root_CA@court будет server@court.
TIP: Примечание: Значение Name сертификатов мы вообще в данной схеме не используем в настройках — оно в большей степени описательное; директивы OpenVPN, такие как iroute и ifconfig-pool-persist, опираются на значения Common Name (CN).
Необходимо подтвердить подписание сертификата и внесение изменений в базу центра сертификации.
В результате получаем сгенерированные ключ и сертификат — это файлы с именем, которое было указано в качестве параметра при вызове скрипта. Именно, сертификат court.server.crt и ключ court.server.key.
Для каждого из клиентов процесс аналогичен. Единственное отличие в том, что при создании файлов для клиентов нужно использовать скрипт build-key.bat.
Например, вызовем создание частного ключа и сертификата для компьютера администратора, который захочет подключаться к серверу, при помощи команды:
build-key.bat court.client01
получаем необходимые файлы court.client01.crt и court.client01.key.
Помимо Windows-компьютера администратора, к серверу в нашем примере будут подключаться еще два маршрутизатора в удаленных офисах (их CN выберем соответствующими KeenDNS-именами, francesca и lorenzo) и мобильные устройства (CN: droid и ios). Всего клиентских пар сертификат-ключ в схеме данного примера требуется пять.
build-key.bat court.client02
в) Для включения дополнительного уровня защиты TLS в OpenVPN предусмотрена опция tls-crypt. Чтобы ее задействовать, понадобится статический ключ — файл специального формата, создать его можно выполнив команду openvpn с параметром --genkey. Ключ указывается в конфигурации сервера и каждого из клиентов. По команде:
openvpn --genkey --secret keys\court.static.key
файл court.static.key будет создан в каталоге C:\OpenVPN\keys.
На этом операции со скриптами easy-rsa и программой openvpn в командной строке компьютера завершены, нам далее потребуются: сертификат CA, пары ключ и сертификат сервера и клиентов, статический ключ, и соответствия из нижеприведенной таблицы.
имя файлов сертификата/ключа |
CN | Name | файл конфигурации | локальная сеть |
court.server | server.court.krimson.biz | server@court | court.server.ovpn.txt | 192.168.111.0/24 |
court.client01 | admin.court.krimson.biz | admin@court | court.client01.ovpn | — |
court.client02 | francesca.court.krimson.biz | office2@court | court.client02.ovpn.txt | 192.168.22.0/24 |
court.client03 | lorenzo.court.krimson.biz | office3@court | court.client03.ovpn.txt | 192.168.35.0/24 |
court.client04 | droid.court.krimson.biz | droid@court | court.client04.ovpn | — |
court.client05 | ios.court.krimson.biz | ios@court | court.client05.ovpn | — |
Переходим к настройке маршрутизаторов и клиентских устройств. Мы приведем по возможности минимальные рабочие конфигурации.
3. Конфигурация интерфейса OpenVPN на сервере.
Локальная сеть головного офиса 192.168.111.0/24, локальные сети филиалов (office 2 и office 3 соответственно) — 192.168.22.0/24 и 192.168.35.0/24. От сервера, таким образом, потребуется обеспечивать доступ к этим сетям. С точки зрения модели, в качестве сервера подойдет любой маршрутизатор Keenetic с поддержкой интерфейсов типа OpenVPN и работы с USB-накопителями (эта функциональность требуется в силу особенности настройки маршрутизации между клиентами сервера). Также, поскольку производительность OpenVPN напрямую зависит от мощности центрального процессора, мы рекомендуем выбирать среди доступных модель с максимальными характеристиками по CPU. Для маршрутизаторов в филиалах поддержка работы с USB-накопителями не требуется.
а) Текст конфигурации OpenVPN на интерфейсе сервера (файл court.server.ovpn.txt):
- dev tun — обязательный параметр, в нашей схеме OpenVPN работает на 3-м уровне OSI, по причинам платформенной совместимости, производительности и сложности масштабирования при использовании режима второго уровня, tap
- topology subnet — данная директива включает набор параметров, специально предназначенный для распределения адресов между клиентами сервера
- server 172.16.128.0 255.255.255.0 — комплексная директива, включающая режим работы "сервер" и также параметры защиты соединения. указанный адрес сети будет использоваться благодаря предыдущей директиве в качестве внутреннего адресного пространства, для концов туннелей клиентов и сервера
- директивы push "route {адрес} {маска}" нужны для передачи клиентам маршрутов к сетям за каждым из маршрутизаторов в схеме
- client-to-client — указание разрешать трафик между клиентами, подключенными к серверу
- route {адрес} {маска} — разрешение маршрутизировать трафик указанной сети
- client-config-dir — директива служит для указания расположения специальных файлов, с описанием специфичных для отдельных клиентов параметров. в этом каталоге мы далее на шаге 3.в) поместим такие файлы для маршрутизаторов в филиалах
- параметры безопасности — мы используем алгоритм шифрования на кривых, для этого нужно отключить Diffie-Hellman'а (dh none) и указать выбранную кривую (ecdh-curve secp521r1 это разумный выбор согласно данным исследований).
- внутри конструкций
<ca>
...
</ca>,
<cert>
...
</cert>,
<key>
...
</key> и
<tls-crypt>
...
</tls-crypt>
необходимо поместить вместо "троеточий" текст соответственно сертификата корневого центра (из файла ca.crt), сертификата самого сервера (из файла court.server.crt), частного ключа сервера (из файла court.server.key), и статического ключа OpenVPN (из файла static.court.key). текст сертификата CA и текст статического ключа будет один и тот же и в конфигурациях клиентов, а сертификат устройства и его ключ будут отличаться. - keepalive 12 64 — комплексная настройка для режима сервера для поддержания туннельного соединения при отсутствии передачи пользовательских данных
dev tun
topology subnet
server 172.16.128.0 255.255.255.0
push "route 192.168.111.0 255.255.255.0"
push "route 192.168.22.0 255.255.255.0"
push "route 192.168.35.0 255.255.255.0"
client-to-client
route 192.168.22.0 255.255.255.0
route 192.168.35.0 255.255.255.0
client-config-dir /storage/ccd
dh none
ecdh-curve secp521r1
keepalive 12 64
<ca>
-----BEGIN CERTIFICATE-----
MIID9TCCA16gAwIBAgIJAKaJRcUMPKIpMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
VQQGEwJSVTELMAkGA1UECBMCTU8xDzANBgNVBAcTBk1vc2NvdzEZMBcGA1UEChMQ
S2luZ0tyaW1zb24sTHRkLjERMA8GA1UECxMISVQgRGVwdC4xGjAYBgNVBAMTEWNv
dXJ0LmtyaW1zb24uYml6MRYwFAYDVQQpFA1yb290X0NBQGNvdXJ0MR8wHQYJKoZI
hvcNAQkBFhBub25lQGtyaW1zb24uYml6MB4XDTE5MTExNzAwMTUzNloXDTI5MTEx
NDAwMTUzNlowga4xCzAJBgNVBAYTAlJVMQswCQYDVQQIEwJNTzEPMA0GA1UEBxMG
TW9zY293MRkwFwYDVQQKExBLaW5nS3JpbXNvbixMdGQuMREwDwYDVQQLEwhJVCBE
ZXB0LjEaMBgGA1UEAxMRY291cnQua3JpbXNvbi5iaXoxFjAUBgNVBCkUDXJvb3Rf
Q0FAY291cnQxHzAdBgkqhkiG9w0BCQEWEG5vbmVAa3JpbXNvbi5iaXowgZ8wDQYJ
KoZIhvcNAQEBBQADgY0AMIGJAoGBANHw6PG+Xw8xaEIT90P+NQMxSxS405mGOIIo
USB1FAL8yvqPvMtbQgOOJxq5MWvOKvgakW2zvZsjVNWI6ZExff2PDgg5PPsI8brf
p9RqX5cu6SBsMsOCVOpaHjlKRekx5Lao3D6gwGj8/hVkNEwzsPwOnHswxW7ch+K3
AM5SnvcxAgMBAAGjggEXMIIBEzAdBgNVHQ4EFgQUA9bmk0OO9ddOr3if4rjvOuX8
n88wgeMGA1UdIwSB2zCB2IAUA9bmk0OO9ddOr3if4rjvOuX8n8+hgbSkgbEwga4x
CzAJBgNVBAYTAlJVMQswCQYDVQQIEwJNTzEPMA0GA1UEBxMGTW9zY293MRkwFwYD
VQQKExBLaW5nS3JpbXNvbixMdGQuMREwDwYDVQQLEwhJVCBEZXB0LjEaMBgGA1UE
AxMRY291cnQua3JpbXNvbi5iaXoxFjAUBgNVBCkUDXJvb3RfQ0FAY291cnQxHzAd
BgkqhkiG9w0BCQEWEG5vbmVAa3JpbXNvbi5iaXqCCQCmiUXFDDyiKTAMBgNVHRME
BTADAQH/MA0GCSqGSIb3DQEBCwUAA4GBAEpxWIZxwTp189HNTTNBc8zfIvumSlcl
azUdcm/O2DJGamTtEGkF21kXpAld5BirFBhk5+UmjlB37xtEnVq5CU7H0Yh7CKul
6Y2RXTsjMKcOpOjECC1lEjd2AH4TfTTtQw/otVLBuHq/i51Kkv3IZ0Pq+KSZgoqF
UXixYZJ+pn+g
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIEWzCCA8SgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UEBhMCUlUx
CzAJBgNVBAgTAk1PMQ8wDQYDVQQHEwZNb3Njb3cxGTAXBgNVBAoTEEtpbmdLcmlt
c29uLEx0ZC4xETAPBgNVBAsTCElUIERlcHQuMRowGAYDVQQDExFjb3VydC5rcmlt
c29uLmJpejEWMBQGA1UEKRQNcm9vdF9DQUBjb3VydDEfMB0GCSqGSIb3DQEJARYQ
bm9uZUBrcmltc29uLmJpejAeFw0xOTExMTcwMDE4NDNaFw0yOTExMTQwMDE4NDNa
MIG0MQswCQYDVQQGEwJSVTELMAkGA1UECBMCTU8xDzANBgNVBAcTBk1vc2NvdzEZ
MBcGA1UEChMQS2luZ0tyaW1zb24sTHRkLjERMA8GA1UECxMISVQgRGVwdC4xITAf
BgNVBAMTGHNlcnZlci5jb3VydC5rcmltc29uLmJpejEVMBMGA1UEKRQMc2VydmVy
QGNvdXJ0MR8wHQYJKoZIhvcNAQkBFhBub25lQGtyaW1zb24uYml6MIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQC+yZtontw8WDzC8G48/yXbKkF0ye7Jcb1VisWL
zd03gRjEVJIV9VYtNq03plootYKhHNOR1P2943ge96pOFY8E3h7DY+awaz/CRVZL
zFzqhSgSvVdDXEqnUr1uHDdnroxnp/YLxJuEsQhpNNqvqPiw4CkGBEpgzVNp/zqX
m66QWwIDAQABo4IBfzCCAXswCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBkAw
NAYJYIZIAYb4QgENBCcWJUVhc3ktUlNBIEdlbmVyYXRlZCBTZXJ2ZXIgQ2VydGlm
aWNhdGUwHQYDVR0OBBYEFEOTcyqsatU58GO3enTIJ0QV7NrZMIHjBgNVHSMEgdsw
gdiAFAPW5pNDjvXXTq94n+K47zrl/J/PoYG0pIGxMIGuMQswCQYDVQQGEwJSVTEL
MAkGA1UECBMCTU8xDzANBgNVBAcTBk1vc2NvdzEZMBcGA1UEChMQS2luZ0tyaW1z
b24sTHRkLjERMA8GA1UECxMISVQgRGVwdC4xGjAYBgNVBAMTEWNvdXJ0LmtyaW1z
b24uYml6MRYwFAYDVQQpFA1yb290X0NBQGNvdXJ0MR8wHQYJKoZIhvcNAQkBFhBu
b25lQGtyaW1zb24uYml6ggkApolFxQw8oikwEwYDVR0lBAwwCgYIKwYBBQUHAwEw
CwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4GBADL9AzA3X/VHmw3D/9pb6cYB
2EGl/QtBhfhgYkP9o/dB8EwBYcymlK9da8p711MFSWkqs5EhzkzaJefPfGOyMHrH
/De7qtrzPIAlMVsI7zflt+b2JN8eg6vwZ8yRhP7xfZvqG3ZxAAHyyx/lktANpLnH
ozLP6zDfF/jZQTjvRrdV
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAL7Jm2ie3DxYPMLw
bjz/JdsqQXTJ7slxvVWKxYvN3TeBGMRUkhX1Vi02rTemWii1gqEc05HU/b3jeB73
qk4VjwTeHsNj5rBrP8JFVkvMXOqFKBK9V0NcSqdSvW4cN2eujGen9gvEm4SxCGk0
2q+o+LDgKQYESmDNU2n/OpebrpBbAgMBAAECgYEAskdB6WlI8zqgzKhO2sCxZzL9
J1zqvWKDQcQDBLjB1nPT6OH+AHbYqDdHdZEE/rVd8580NDmLQj2kqYtUoNKUaKCM
DKglUlKdu7j6bYtP464ZVQ1+6ekksSgOTsV+VTA9/UJwENLKB+ygDy6DkVbV6gAo
cDwSRrK2p3fmp20AD4ECQQD2a90osoYV9erXkD//u6f08Tf+b3Va+B2rQujC4CKC
a8SNZtYassbuO8E1zlHcW5WBsElKX5MH1H1dcCYxVjJJAkEAxjQhtReg/H/KbNhP
y/jITpz5SIl3fW6nKfBXt8sz/THey9kAvwhdwQbuGNqsArFej/1EWVNdr5GcAkeF
B9wtgwJAbRnkmRgxdZejmj0rmLYk7rW97NC8TMJ9oE3HcEB8BvJf25skQD3XBbM/
H+txIvcJgpniWSNnnZfeyXfV8RIQwQJACY6J8YlqIcKnqAfmERe10NSQ0IaQVGP5
e3QzRpFtuE+nRnz4JD3rB1umL1yb3qVeweKcYRI7+jMzKoj4SSC8sQJBAOPbpLZq
vGywZr0b6tcsl5okFKL+hnDkBCkOEDsRVd8qzijLuawGlVXlZzKGOhDS8lryvc9s
taqZoD1Q172BayU=
-----END PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
48affeafbb2ce38b0a64f5f05dddb57d
76afaa0ef7a015c2ab217aa32a49444a
790c37440b9b8ae9bc32dc3a6a7d1bb9
27ea1aec9cc28c441d575519bee0bec3
7031fbf8335b015d6d89606d842d052c
de560aff33d63253edf8dbdb0d97523e
db62859bcf98005bd2b11cf421472b8e
a00eec539d6635637fd00c283c3d67a6
bfbaba18160a17531911b3c67f449353
3082574e77d1d628a38485c38d5f552d
7c04caecf6663d6a76b9fe0a8db981ec
4ec9fbc0f52972f7347c9da1b7f53d90
47c5debdc32460757f4e6aac8a38a73f
3c2784937735c81e0003804cd202ea59
c110ff3f85331482c54baaf5b65bbe9a
cd19d345ad9a2a37c1c9753d99abb490
-----END OpenVPN Static key V1-----
</tls-crypt>
б) Настройки самого интерфейса (меню Интернет — Другие подключения — VPN-подключения — Добавить подключение) устанавливаем следующим образом:
- Использовать для выхода в Интернет — отключено
- Имя подключения — любое удобное имя
- Получать маршруты от удаленной стороны — эту настройку следует включить
- Конфигурация OpenVPN — нужно перенести текст подготовленной конфигурации как есть, из текстового редактора
- Расписание работы — при необходимости можно задать расписание работы интерфейса сервера
- Подключаться через — при необходимости можно явно указать интерфейс, на котором будет работать (принимать подключения) OpenVPN-сервер, аналогичный эффект достигается разграничением при помощи сетевого экрана (см. ниже, пункт 3.в)).
- Подстройка TCP-MSS — включено
- Размер MTU — когда настройка не указана, MTU рассчитывается автоматически
в) Для работы схемы также потребуется сделать несколько дополнительных настроек.
- Необходимо разрешить входящий трафик на порт UDP номер 1194, на том интерфейсе, на адрес которого будут обращаться подключающиеся к серверу клиенты. В нашем примере это интерфейс Провайдер. Правило выглядит следующим образом:
Можно разрешить подключения на нескольких внешних интерфейсах, если это требуется. - Во внутреннем хранилище маршрутизатора нужно создать объявленный (см. пункт 3.а)) в конфигурации интерфейса OpenVPN каталог ccd и поместить в нем файлы с параметрами для клиентов — маршрутизаторов в филиалах 2 и 3. В меню Управление — Приложения нужно перейти в меню Встроенное хранилище. Открыв его, нужно нажать кнопку добавления каталога и создать папку с именем ccd:
Имена файлов должны соответствовать указанным при выпуске сертификатов для этих маршрутизаторов Common Name (CN), в нашем случае это francesca.court.krimson.biz и lorenzo.court.krimson.biz:
Содержимое файлов следующее, это (опционально) комментарий-пояснение и директива iroute, благодаря которой OpenVPN получит возможность направлять трафик в указанную подсеть через подключение данного клиента.
файл с именем "francesca.court.krimson.biz":#francesca.court.krimson.biz, client02
iroute 192.168.22.0 255.255.255.0
файл с именем "lorenzo.court.krimson.biz":#lorenzo.court.krimson.biz, client03
iroute 192.168.35.0 255.255.255.0
Подготовленные файлы загружаем через веб-интерфейс маршрутизатора-сервера в каталог storage:ccd - Необходимо также разрешить входящий трафик на интерфейсе сервера. По умолчанию, интерфейс OpenVPN создается с уровнем безопасности public, и входящие пакеты поэтому отбрасываются. Добавим разрешающее правило в сетевом экране (меню Сетевые правила — Межсетевой экран):
4. Конфигурация для подключения с Windows-компьютера.
Проверим работу сервера, подключившись к нему с удаленного компьютера. Мы должны получить доступ в локальную сеть маршрутизатора головного офиса, 192.168.111.0/24.
Файл court.client01.ovpn нужно подгрузить в установленный на компьютере OpenVPN-клиент (запускать ярлык OpenVPN-GUI необходимо от имени Администратора, иначе приложение не будет иметь достаточных для изменения таблицы маршрутизации привилегий). Содержимое файла следующее, директива remote указывает адрес сервера (в нашем примере, для данного компьютера сервер доступен по адресу nottingham.keenetic.link):
dev tun
client
remote nottingham.keenetic.link
remote-cert-tls server
auth-nocache
<ca>
-----BEGIN CERTIFICATE-----
MIID9TCCA16gAwIBAgIJAKaJRcUMPKIpMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
VQQGEwJSVTELMAkGA1UECBMCTU8xDzANBgNVBAcTBk1vc2NvdzEZMBcGA1UEChMQ
S2luZ0tyaW1zb24sTHRkLjERMA8GA1UECxMISVQgRGVwdC4xGjAYBgNVBAMTEWNv
dXJ0LmtyaW1zb24uYml6MRYwFAYDVQQpFA1yb290X0NBQGNvdXJ0MR8wHQYJKoZI
hvcNAQkBFhBub25lQGtyaW1zb24uYml6MB4XDTE5MTExNzAwMTUzNloXDTI5MTEx
NDAwMTUzNlowga4xCzAJBgNVBAYTAlJVMQswCQYDVQQIEwJNTzEPMA0GA1UEBxMG
TW9zY293MRkwFwYDVQQKExBLaW5nS3JpbXNvbixMdGQuMREwDwYDVQQLEwhJVCBE
ZXB0LjEaMBgGA1UEAxMRY291cnQua3JpbXNvbi5iaXoxFjAUBgNVBCkUDXJvb3Rf
Q0FAY291cnQxHzAdBgkqhkiG9w0BCQEWEG5vbmVAa3JpbXNvbi5iaXowgZ8wDQYJ
KoZIhvcNAQEBBQADgY0AMIGJAoGBANHw6PG+Xw8xaEIT90P+NQMxSxS405mGOIIo
USB1FAL8yvqPvMtbQgOOJxq5MWvOKvgakW2zvZsjVNWI6ZExff2PDgg5PPsI8brf
p9RqX5cu6SBsMsOCVOpaHjlKRekx5Lao3D6gwGj8/hVkNEwzsPwOnHswxW7ch+K3
AM5SnvcxAgMBAAGjggEXMIIBEzAdBgNVHQ4EFgQUA9bmk0OO9ddOr3if4rjvOuX8
n88wgeMGA1UdIwSB2zCB2IAUA9bmk0OO9ddOr3if4rjvOuX8n8+hgbSkgbEwga4x
CzAJBgNVBAYTAlJVMQswCQYDVQQIEwJNTzEPMA0GA1UEBxMGTW9zY293MRkwFwYD
VQQKExBLaW5nS3JpbXNvbixMdGQuMREwDwYDVQQLEwhJVCBEZXB0LjEaMBgGA1UE
AxMRY291cnQua3JpbXNvbi5iaXoxFjAUBgNVBCkUDXJvb3RfQ0FAY291cnQxHzAd
BgkqhkiG9w0BCQEWEG5vbmVAa3JpbXNvbi5iaXqCCQCmiUXFDDyiKTAMBgNVHRME
BTADAQH/MA0GCSqGSIb3DQEBCwUAA4GBAEpxWIZxwTp189HNTTNBc8zfIvumSlcl
azUdcm/O2DJGamTtEGkF21kXpAld5BirFBhk5+UmjlB37xtEnVq5CU7H0Yh7CKul
6Y2RXTsjMKcOpOjECC1lEjd2AH4TfTTtQw/otVLBuHq/i51Kkv3IZ0Pq+KSZgoqF
UXixYZJ+pn+g
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIEPzCCA6igAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UEBhMCUlUx
CzAJBgNVBAgTAk1PMQ8wDQYDVQQHEwZNb3Njb3cxGTAXBgNVBAoTEEtpbmdLcmlt
c29uLEx0ZC4xETAPBgNVBAsTCElUIERlcHQuMRowGAYDVQQDExFjb3VydC5rcmlt
c29uLmJpejEWMBQGA1UEKRQNcm9vdF9DQUBjb3VydDEfMB0GCSqGSIb3DQEJARYQ
bm9uZUBrcmltc29uLmJpejAeFw0xOTExMTcwMDI3MDhaFw0yOTExMTQwMDI3MDha
MIGyMQswCQYDVQQGEwJSVTELMAkGA1UECBMCTU8xDzANBgNVBAcTBk1vc2NvdzEZ
MBcGA1UEChMQS2luZ0tyaW1zb24sTHRkLjERMA8GA1UECxMISVQgRGVwdC4xIDAe
BgNVBAMTF2FkbWluLmNvdXJ0LmtyaW1zb24uYml6MRQwEgYDVQQpFAthZG1pbkBj
b3VydDEfMB0GCSqGSIb3DQEJARYQbm9uZUBrcmltc29uLmJpejCBnzANBgkqhkiG
9w0BAQEFAAOBjQAwgYkCgYEAwSrTKr9xOybCO27U/4gf6c1m3eDoOmARJTkB42Xw
c+vXiXbLfJuYDwPmGqrEaNIEPIIV9ZeZSve4o4+Ds1R15Yf9B5bE1Y/7xt58Kua8
tw1DaCmbZII0F/99ebgpZLQTPHluKggfzAvQEc4aQT9I0BuT1QFWR+5cUalQMj5N
tpcCAwEAAaOCAWUwggFhMAkGA1UdEwQCMAAwLQYJYIZIAYb4QgENBCAWHkVhc3kt
UlNBIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUXCRBEVaZmwqoyM46
H56VrSq1xqQwgeMGA1UdIwSB2zCB2IAUA9bmk0OO9ddOr3if4rjvOuX8n8+hgbSk
gbEwga4xCzAJBgNVBAYTAlJVMQswCQYDVQQIEwJNTzEPMA0GA1UEBxMGTW9zY293
MRkwFwYDVQQKExBLaW5nS3JpbXNvbixMdGQuMREwDwYDVQQLEwhJVCBEZXB0LjEa
MBgGA1UEAxMRY291cnQua3JpbXNvbi5iaXoxFjAUBgNVBCkUDXJvb3RfQ0FAY291
cnQxHzAdBgkqhkiG9w0BCQEWEG5vbmVAa3JpbXNvbi5iaXqCCQCmiUXFDDyiKTAT
BgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQELBQAD
gYEAROMLZNSrg6hEbRN9oBfeGtCWreUJ8jDXxdwNkuHuLndAj7VrFo882tO1IXrL
hpSZ2dcvg9HETOxRbyoGlo5TadgIw1yS4vXkkkjk1FuVG5JTVH4Oxdh3iVGhKgL2
yF5tzxggEaLPLKwGcOZkEIWJNtzINm3gActbwTZk92Y19R4=
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMEq0yq/cTsmwjtu
1P+IH+nNZt3g6DpgESU5AeNl8HPr14l2y3ybmA8D5hqqxGjSBDyCFfWXmUr3uKOP
g7NUdeWH/QeWxNWP+8befCrmvLcNQ2gpm2SCNBf/fXm4KWS0Ezx5bioIH8wL0BHO
GkE/SNAbk9UBVkfuXFGpUDI+TbaXAgMBAAECgYAT2SCljdJGr67ZiIPeVdBhp7dg
KRHznZdlabwl732Li7oz57706M/xCweDyfQwiRPiW8OB3rfjmhygwchYjt8mLr5Z
jP4i5FHVURNRmkjkRyHDL3WwJ4Xu+ZeRiqp2a5iDHw8eeD4NDnNVdJS/Zc2nF3iH
cLrrJkJeLXENafLAIQJBAPFutEvAYS4vs2h6ub5lg/qaX6tutkkHNNJN1yp6Fb7H
QNjPD0K1WKVeifx3E1g0P0yHy+7g1esZ1IDiSUDFcMkCQQDM0pdKa8leWSEcuEX8
hwCWMboOraVIEwR/IMP/qB7Aa0fnZfJFNLkGx8Eme0NmFwpq2eVKBkqB3xku2GYG
a/xfAkEAg3AwidkHTxy7AJNn0eb0bhdjJDKW3LUmpaOpEz/53K4feKlpdnjB9O2+
E4tEJc3z9BcuCDOxYlfin/QRy0hyOQJALKUWfw1BhkQtOIJeFu4iTZqnMH3fEfe7
Oi6dKkOt+EkqEiEhjr4wOm8eBdJGXaFWDvZRyTHX2bkUVyaqDmpJRwJAM/SE0rDk
d6otTMjqZjGJ6L0eyYcx+NVmsocN1rxOPj1CBTtLYprb2YENW1hoE4eeLF6s8Pj3
Rzkb8u46DCTPAQ==
-----END PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
48affeafbb2ce38b0a64f5f05dddb57d
76afaa0ef7a015c2ab217aa32a49444a
790c37440b9b8ae9bc32dc3a6a7d1bb9
27ea1aec9cc28c441d575519bee0bec3
7031fbf8335b015d6d89606d842d052c
de560aff33d63253edf8dbdb0d97523e
db62859bcf98005bd2b11cf421472b8e
a00eec539d6635637fd00c283c3d67a6
bfbaba18160a17531911b3c67f449353
3082574e77d1d628a38485c38d5f552d
7c04caecf6663d6a76b9fe0a8db981ec
4ec9fbc0f52972f7347c9da1b7f53d90
47c5debdc32460757f4e6aac8a38a73f
3c2784937735c81e0003804cd202ea59
c110ff3f85331482c54baaf5b65bbe9a
cd19d345ad9a2a37c1c9753d99abb490
-----END OpenVPN Static key V1-----
</tls-crypt>
Процесс подключения должен завершаться сообщением Initialization Sequence Completed.
Как видим, после подключения на ping с компьютера отвечают как локальный интерфейс маршрутизатора в головном офисе 192.168.111.1, так и хост в его локальной сети 192.168.111.61.
5. Подключим теперь к серверу маршрутизаторы в филиалах. Процедура состоит из добавления интерфейса OpenVPN, и включения на нем разрешающего правила сетевого экрана для входящего трафика.
5.1. Маршрутизатор в офисе 2.
Содержимое файла конфигурации court.client02.ovpn.txt, которое требуется перенести в настройку интерфейса:
- необходимо указать режим работы dev tun
- директива client включает набор указаний для получения адреса и маршрутов с удаленной стороны (на которой работает настройка server)
- адрес remote мы указали согласно конфигурации коммутации в нашей схеме, по сути этот адрес может быть тем же что и в настройке для клиента номер 1
- директива remote-cert-tls server включает проверку сертификата удаленной стороны
dev tun
client
remote 192.168.201.14
remote-cert-tls server
<ca>
-----BEGIN CERTIFICATE-----
MIID9TCCA16gAwIBAgIJAKaJRcUMPKIpMA0GCSqGSIb3DQEBCwUAMIGuMQswCQYD
VQQGEwJSVTELMAkGA1UECBMCTU8xDzANBgNVBAcTBk1vc2NvdzEZMBcGA1UEChMQ
S2luZ0tyaW1zb24sTHRkLjERMA8GA1UECxMISVQgRGVwdC4xGjAYBgNVBAMTEWNv
dXJ0LmtyaW1zb24uYml6MRYwFAYDVQQpFA1yb290X0NBQGNvdXJ0MR8wHQYJKoZI
hvcNAQkBFhBub25lQGtyaW1zb24uYml6MB4XDTE5MTExNzAwMTUzNloXDTI5MTEx
NDAwMTUzNlowga4xCzAJBgNVBAYTAlJVMQswCQYDVQQIEwJNTzEPMA0GA1UEBxMG
TW9zY293MRkwFwYDVQQKExBLaW5nS3JpbXNvbixMdGQuMREwDwYDVQQLEwhJVCBE
ZXB0LjEaMBgGA1UEAxMRY291cnQua3JpbXNvbi5iaXoxFjAUBgNVBCkUDXJvb3Rf
Q0FAY291cnQxHzAdBgkqhkiG9w0BCQEWEG5vbmVAa3JpbXNvbi5iaXowgZ8wDQYJ
KoZIhvcNAQEBBQADgY0AMIGJAoGBANHw6PG+Xw8xaEIT90P+NQMxSxS405mGOIIo
USB1FAL8yvqPvMtbQgOOJxq5MWvOKvgakW2zvZsjVNWI6ZExff2PDgg5PPsI8brf
p9RqX5cu6SBsMsOCVOpaHjlKRekx5Lao3D6gwGj8/hVkNEwzsPwOnHswxW7ch+K3
AM5SnvcxAgMBAAGjggEXMIIBEzAdBgNVHQ4EFgQUA9bmk0OO9ddOr3if4rjvOuX8
n88wgeMGA1UdIwSB2zCB2IAUA9bmk0OO9ddOr3if4rjvOuX8n8+hgbSkgbEwga4x
CzAJBgNVBAYTAlJVMQswCQYDVQQIEwJNTzEPMA0GA1UEBxMGTW9zY293MRkwFwYD
VQQKExBLaW5nS3JpbXNvbixMdGQuMREwDwYDVQQLEwhJVCBEZXB0LjEaMBgGA1UE
AxMRY291cnQua3JpbXNvbi5iaXoxFjAUBgNVBCkUDXJvb3RfQ0FAY291cnQxHzAd
BgkqhkiG9w0BCQEWEG5vbmVAa3JpbXNvbi5iaXqCCQCmiUXFDDyiKTAMBgNVHRME
BTADAQH/MA0GCSqGSIb3DQEBCwUAA4GBAEpxWIZxwTp189HNTTNBc8zfIvumSlcl
azUdcm/O2DJGamTtEGkF21kXpAld5BirFBhk5+UmjlB37xtEnVq5CU7H0Yh7CKul
6Y2RXTsjMKcOpOjECC1lEjd2AH4TfTTtQw/otVLBuHq/i51Kkv3IZ0Pq+KSZgoqF
UXixYZJ+pn+g
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIERDCCA62gAwIBAgIBAzANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UEBhMCUlUx
CzAJBgNVBAgTAk1PMQ8wDQYDVQQHEwZNb3Njb3cxGTAXBgNVBAoTEEtpbmdLcmlt
c29uLEx0ZC4xETAPBgNVBAsTCElUIERlcHQuMRowGAYDVQQDExFjb3VydC5rcmlt
c29uLmJpejEWMBQGA1UEKRQNcm9vdF9DQUBjb3VydDEfMB0GCSqGSIb3DQEJARYQ
bm9uZUBrcmltc29uLmJpejAeFw0xOTExMTcwMDM2NTlaFw0yOTExMTQwMDM2NTla
MIG3MQswCQYDVQQGEwJSVTELMAkGA1UECBMCTU8xDzANBgNVBAcTBk1vc2NvdzEZ
MBcGA1UEChMQS2luZ0tyaW1zb24sTHRkLjEQMA4GA1UECxMHRmluYW5jZTEkMCIG
A1UEAxMbZnJhbmNlc2NhLmNvdXJ0LmtyaW1zb24uYml6MRYwFAYDVQQpFA1vZmZp
Y2UyQGNvdXJ0MR8wHQYJKoZIhvcNAQkBFhBub25lQGtyaW1zb24uYml6MIGfMA0G
CSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpt8ICWgCbGtLL+vklNlgHyjUBMf/bsOW3
0GyjgqAXYQajbL6011Q+O4XcVROcnNRlzqLy9GQTlbYOxTaRRDUDRaqj4yv5asKM
REjUqLPt15l33KFjC9RlIpg4wP3ifnuuAcuLyNHCfS5l3CI6cdnhiHaPgSEbPt/D
3Fktb0L3SQIDAQABo4IBZTCCAWEwCQYDVR0TBAIwADAtBglghkgBhvhCAQ0EIBYe
RWFzeS1SU0EgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRiqHycJmWq
BhyFD7noVYvM7eaKjjCB4wYDVR0jBIHbMIHYgBQD1uaTQ471106veJ/iuO865fyf
z6GBtKSBsTCBrjELMAkGA1UEBhMCUlUxCzAJBgNVBAgTAk1PMQ8wDQYDVQQHEwZN
b3Njb3cxGTAXBgNVBAoTEEtpbmdLcmltc29uLEx0ZC4xETAPBgNVBAsTCElUIERl
cHQuMRowGAYDVQQDExFjb3VydC5rcmltc29uLmJpejEWMBQGA1UEKRQNcm9vdF9D
QUBjb3VydDEfMB0GCSqGSIb3DQEJARYQbm9uZUBrcmltc29uLmJpeoIJAKaJRcUM
PKIpMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAsGA1UdDwQEAwIHgDANBgkqhkiG9w0B
AQsFAAOBgQBYp+o3xEObbnOdGtCn7Ewf3T+e/LZl3qrd8/wmwM9xJKhGTw0HNwj5
sFyIWNC8t7sXdKPM3ZSA1oQVDfHqozHl6vMj/cf6nfDSXCFRyxJxbjBj0C+Pkslm
0W1MY6x0Y279L/XYzF1ICH+Kfw5i28cMnz47qInKEATeG+z4xE8BkQ==
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKm3wgJaAJsa0sv6
+SU2WAfKNQEx/9uw5bfQbKOCoBdhBqNsvrTXVD47hdxVE5yc1GXOovL0ZBOVtg7F
NpFENQNFqqPjK/lqwoxESNSos+3XmXfcoWML1GUimDjA/eJ+e64By4vI0cJ9LmXc
Ijpx2eGIdo+BIRs+38PcWS1vQvdJAgMBAAECgYBrluxMpVXA/g4n9aA/8OV5eryD
V3kFgmz+TAiy1zo51+5nZ6a16dOj6AQCG4TlQZ58M7SlJDzVFZFmZ6siCAU6VxXY
E0ATAAM1KlzgOtknOA6Kk0+Whu+UGLUO55lwzO1JDPEXZEGkS5NnDmQXRpr/tYjr
hq6Aouq4WhQnrOeCIQJBANzPtiRAyKl5XWjhvB+0zELdCxcUpT2odW2L0Npl4KUo
ueZfHq5o/XYxWAnDv+uk0Nfeyt9buc8uyk3sEyhnplUCQQDEw54Q/lospgjnGP85
Vw9u3eeKiv4R9q3oxrSZbtsgKPqsm6ksP2IfR8TEqHWzjoiCf5UdPew92JAidIkM
QzklAkEAquRywhIFeuw79+0krKE/qMvsRlurG1IiN7sK08wfFZO0dG/Pjgohh/Te
fwgpo9U18Kwz9LPH1WoQFkiL9yxo1QJAFR/bTH/CNqDsu8LXQ9Sw93ojbaBWfp85
NJCAuyhHpkBACV/83Z9AbZNK8MIVQN3AkiIYZDdNsaYac1iHjiV5cQJAbt6bQO43
0YyaUUu8ThW/rg+yia8uBlLzWB1Kal04RRbXVO7EvI03ixzepPZTY2ojxYMmCEcH
KunXT8dyHiWR2Q==
-----END PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
48affeafbb2ce38b0a64f5f05dddb57d
76afaa0ef7a015c2ab217aa32a49444a
790c37440b9b8ae9bc32dc3a6a7d1bb9
27ea1aec9cc28c441d575519bee0bec3
7031fbf8335b015d6d89606d842d052c
de560aff33d63253edf8dbdb0d97523e
db62859bcf98005bd2b11cf421472b8e
a00eec539d6635637fd00c283c3d67a6
bfbaba18160a17531911b3c67f449353
3082574e77d1d628a38485c38d5f552d
7c04caecf6663d6a76b9fe0a8db981ec
4ec9fbc0f52972f7347c9da1b7f53d90
47c5debdc32460757f4e6aac8a38a73f
3c2784937735c81e0003804cd202ea59
c110ff3f85331482c54baaf5b65bbe9a
cd19d345ad9a2a37c1c9753d99abb490
-----END OpenVPN Static key V1-----
</tls-crypt>
Настройка интерфейса OpenVPN на маршрутизаторе в офисе 2:
Правило сетевого экрана:
После подключения, в таблице маршрутизации появляются записи:
Обратите внимание, указанная в конфигурации сервера директива push "route 192.168.22.0 255.255.255.0" не была выслана данному клиенту, так как для него сеть 192.168.22.0/24 указана при помощи iroute в файле в каталоге установки client-config-dir.
5.2. Аналогично, настраивается и маршрутизатор в филиале 3. Таблица маршрутизации на нем после подключения будет выглядеть следующим образом:
После подключения данных устройств, схема приобретает законченный вид, и с компьютера администратора теперь на ping отвечают и сети в филиалах тоже:
6. Для подключения с Android-смартфона, как и с iOS-смартфона, следует импортировать в мобильное приложение OpenVPN Connect файл конфигурации и использовать его для установления соединения. Пример файла конфигурации — court.client04.ovpn либо court.client05.ovpn вы найдете в архиве vanilla.zip.