OpenVPN: привязка IP клиента к CN его сертификата (IP to Certificate binding)

Зачастую требуется, чтобы удаленные клиенты, подключаясь к VPN-серверу (будь то openvpn, IPSec или что-то еще) постоянно получали одни и те же адреса внутри туннеля. Такая потребность возникает когда нужно обеспечить непрерывный мониторинг клиентских ПК, если эти клиентские ПК, например, являются платежными терминалами, с установленными Windows Embedded.  Благодаря подобной привязке можно в том же Nagios указать, что 10.10.220.10 — это адрес платежного терминала расположенного по адресу Пушкинская, д.20, а 10.10.220.15 — терминала, расположенного на Некрасова, д.14.

Итак, в OpenVPN за назначение адресов клиентам, равно как и самому серверу, отвечает следующая строчка файла server.conf:

server 10.10.220.0 255.255.255.0

Так, сервер получит первый адрес подсети, 10.10.220.1, а клиенты — свободные адреса из пула. При использовании tun-интерфейса клиенты будут получать адреса 10.10.220.4, 10.200.220.8, 10.200.220.12 и т.д.

Нужно, чтобы Клиент_1 всегда получал адрес 10.10.220.12, а Клиент_2 всегда получал адрес 10.10.220.16. Для этого в server.conf OpenVPN есть/должна быть такая строчка:

ifconfig-pool-persist ipp.txt

Она указывает, что прежде чем раздавать клиентам свободные адреса из пула, сервер должен заглянуть в файл ipp.txt и посмотреть, нет ли для того или иного клиента привязки его имени к IP-адресу. Если такая привязка есть — нужно взять адрес из этого (ipp.txt) файла и назначить его клиенту.

Так как взаимная аутентификация сервера и клиента осуществляется по 802.1x серификатам, целесообразно привязывать IP адрес к сертификату. Для привязки сертификата берется атрибут CN (common name) поля Subject сертификата клиента. Т.е., если в сертификате клиента  поле Subject выглядит так:

E = admin@sommail.ru
CN =Client_01
OU = somedep
O = SomeOrg Inc.
L = Saint-Petersburg
C = RU

то запись для Клиента_1 в файле ipp.txt будет выглядеть так: Client_01,10.10.220.12

Соответственно, весь файл для обозначенной задачи будет содержать две строчки:

Client_01,10.10.220.12
Client_01,10.10.220.16

На самом деле, в данном случае, т.к. клиенты представляют собой терминалы на Windows Embedded и используется технология net30, они (клиенты) получат в последнем октете не 12 и 16, а 14 и 18 соответственно, но на практике это не принципиально, т.к. важно то, что (14 и 18) адреса клиенты будут получать постоянно.

P.S. OpenVPN сервер по дефолту сам сохраняет IP подключающихся клиентов в файл ipp.txt (или как он у вас называется), при настройке мониторинга, можно просто посмотреть в этот файл и забрать данные оттуда, ничего самостоятельно не туда не добавляя.


Не забывайте оставлять комментарии, если пост был вам полезен!
Опубликовано в Сети Метки: , , ,
17 comments on “OpenVPN: привязка IP клиента к CN его сертификата (IP to Certificate binding)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Заодно посмотрите мои фоты в моем профиле вконтакте. Любые вопросы по существу статей можете задать там же.
Hostenko — лучший WordPress-хостинг