Я настраиваю сеть VPN с множеством маленьких устройств (использующих OpenWRT). В моем случае все устройства идентифицируются по номеру, и я хотел бы, чтобы их IP-адреса совпадали с их идентификатором (например, у устройства номер 6 будет IP-адрес в X.X.X.6).
Я в курсе client-config-dir
и ifconfig-push
но я не могу их использовать, потому что все мои устройства используют один и тот же сертификат (duplicate-cn
включен). Это требование, поскольку создание одного сертификата для каждого устройства будет слишком ограничивающим (более того, мы не хотим изменять конфигурацию VPN-сервера, если мы добавляем устройство в систему)
Можно ли указать IP-адрес в файле конфигурации клиента? Я не нашел ничего в документации по этой конкретной теме ... И все, что я пробовал, не увенчалось успехом.
По сути, я имел в виду следующее:
Предположим, мы настраиваем корпоративную VPN и хотим установить отдельные политики доступа для 3 разных классов пользователей:
System administrators -- full access to all machines on the network
Employees -- access only to Samba/email server
Contractors -- access to a special server only
Основной подход, который мы выберем, - это (а) выделить каждый класс пользователей в свой собственный диапазон виртуальных IP-адресов и (б) управлять доступом к машинам путем настройки правил брандмауэра, которые отключают виртуальный IP-адрес клиента.
В нашем примере предположим, что у нас есть переменное количество сотрудников, но только один системный администратор и два подрядчика. Наш подход к распределению IP-адресов будет заключаться в том, чтобы поместить всех сотрудников в пул IP-адресов, а затем выделить фиксированные IP-адреса для системного администратора и подрядчиков.
Обратите внимание, что одним из предварительных условий этого примера является наличие программного брандмауэра, работающего на сервере OpenVPN, который дает вам возможность определять определенные правила брандмауэра. В нашем примере мы предположим, что брандмауэр - это Linux iptables.
Во-первых, давайте создадим карту виртуальных IP-адресов в соответствии с классом пользователя:
Class Virtual IP Range Allowed LAN Access Common Names
Employees 10.8.0.0/24 Samba/email server at 10.66.4.4 [variable]
Sys Admins 10.8.1.0/24 Entire 10.66.4.0/24 subnet sysadmin1
Contractors 10.8.2.0/24 Contractor server at 10.66.4.12 contractor1, contractor2
Затем давайте переведем эту карту в конфигурацию сервера OpenVPN. Прежде всего, убедитесь, что вы выполнили описанные выше действия, чтобы сделать подсеть 10.66.4.0/24 доступной для всех клиентов (пока мы настроим маршрутизацию, чтобы разрешить клиентский доступ ко всей подсети 10.66.4.0/24, мы затем наложим ограничения доступа с использованием правил брандмауэра для реализации указанной выше таблицы политик).
Во-первых, определите статический номер модуля для нашего интерфейса tun, чтобы мы могли ссылаться на него позже в наших правилах брандмауэра:
dev tun0
В файле конфигурации сервера определите пул IP-адресов сотрудников:
server 10.8.0.0 255.255.255.0
Добавьте маршруты для диапазонов IP-адресов системного администратора и подрядчика:
route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0
Поскольку мы будем назначать фиксированные IP-адреса для конкретных системных администраторов и подрядчиков, мы будем использовать каталог конфигурации клиента, ccd
:
client-config-dir ccd
Теперь поместите специальные файлы конфигурации в ccd
подкаталог для определения фиксированного IP-адреса для каждого VPN-клиента, не являющегося сотрудником, следующим образом.
ccd/sysadmin1
файл:
ifconfig-push 10.8.1.1 10.8.1.2
ccd/contractor1
файл:
ifconfig-push 10.8.2.1 10.8.2.2
ccd/contractor2
файл:
ifconfig-push 10.8.2.5 10.8.2.6
Каждая пара адресов ifconfig-push представляет конечные IP-точки виртуального клиента и сервера. Они должны быть взяты из последовательных подсетей / 30, чтобы быть совместимыми с клиентами Windows и драйвером TAP-Windows. В частности, последний октет IP-адреса каждой пары конечных точек должен быть взят из этого набора:
[ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]
На этом настройка OpenVPN завершена. Последний шаг - добавить правила брандмауэра, чтобы завершить политику доступа.
Источник: https://openvpn.net/index.php/open-source/documentation/howto.html#policy
Вы сможете сделать это с помощью ifconfig-pool-persist
вариант конфигурации. Вы можете предварительно настроить файл и установить seconds = 0
чтобы OpenVPN читал только файл.
Мы используем его, чтобы гарантировать, что одному и тому же пользователю назначен один и тот же IP-адрес при подключении через VPN в целях аудита.
--ifconfig-pool-persist file [секунды] Сохранять / удалять данные ifconfig-pool в файл с интервалами в секундах (по умолчанию = 600), а также при запуске и завершении работы программы. Цель этой опции - обеспечить долгосрочную связь между клиентами (обозначаемыми их общим именем) и виртуальным IP-адресом, назначенным им из ifconfig-pool. Поддержание долгосрочной связи полезно для клиентов, поскольку позволяет им эффективно использовать параметр --persist-tun.
Файл представляет собой файл ASCII с разделителями-запятыми в формате,.
Если секунды = 0, файл будет считаться доступным только для чтения. Это полезно, если вы хотите рассматривать файл как файл конфигурации.
Обратите внимание, что записи в этом файле обрабатываются OpenVPN только как предложения, основанные на прошлых ассоциациях между общим именем и IP-адресом. Они не гарантируют, что данное общее имя всегда будет получать данный IP-адрес. Если вам нужно гарантированное назначение, используйте --ifconfig-push
У меня возникли проблемы с настройкой, например @jas_raj. Сейчас делаю следующее:
1) В / etc / openvpn создайте новую папку. Например "реж"
2) server.conf добавить строку "клиент-config-каталог каталог /"
3) Внутри «dir» вам нужно создать новый файл с ** тем же именем, которое вы указали в своем сертификате **, и введите:
ifconfig-push IP-МАСКА
Например: ifconfig-push 10.0.0.10 255.0.0.0