%20%D0%B2%20OpenVPN%3F.png)
Я настраиваю сеть VPN с большим количеством небольших устройств (работающих под управлением OpenWRT). В моем случае все устройства идентифицируются по номеру, и я хотел бы, чтобы их IP-адреса соответствовали их ID (например: устройство номер 6 будет иметь IP в XXX6).
Я знаю об этом client-config-dir
, ifconfig-push
но не могу их использовать, потому что все мои устройства используют один и тот же сертификат ( duplicate-cn
включено). Это требование, поскольку генерация одного сертификата для каждого устройства будет слишком ограничивающей (более того, мы не хотим менять конфигурацию VPN-сервера, если добавим устройство в систему)
Можно ли задать IP-адрес в файле конфигурации клиента? Я не нашел ничего в документации по этой теме... И все, что я пробовал, не увенчалось успехом.
По сути, я имею в виду следующее:
- Клиент подключается к VPN-серверу и запрашивает определенный адрес («дайте мне IP: 172.16.0.22»).
- Если адрес уже занят, рукопожатие не удается. Если он свободен, клиенту дается адрес, который он просил ранее
решение1
Вы должны иметь возможность сделать это с помощью ifconfig-pool-persist
параметра конфигурации. Вы можете предварительно настроить файл и seconds = 0
указать OpenVPN только читать файл.
Мы используем его для того, чтобы гарантировать, что одному и тому же пользователю назначается один и тот же IP-адрес при подключении через VPN в целях аудита.
--ifconfig-pool-persist file [секунды] Сохранять/не сохранять данные ifconfig-pool в файле с интервалом в секундах (по умолчанию = 600), а также при запуске и завершении работы программы. Цель этой опции — обеспечить долгосрочную связь между клиентами (обозначенными их общим именем) и виртуальным IP-адресом, назначенным им из ifconfig-pool. Поддержание долгосрочных связей полезно для клиентов, поскольку позволяет им эффективно использовать опцию --persist-tun.
file — это файл ASCII с разделителями-запятыми, отформатированный как ,.
Если секунды = 0, файл будет рассматриваться как файл только для чтения. Это полезно, если вы хотите рассматривать файл как файл конфигурации.
Обратите внимание, что записи в этом файле рассматриваются OpenVPN только как предложения, основанные на прошлых ассоциациях между общим именем и IP-адресом. Они не гарантируют, что данное общее имя всегда получит данный IP-адрес. Если вы хотите гарантированное назначение, используйте --ifconfig-push
решение2
Предположим, мы настраиваем корпоративную VPN и хотим установить отдельные политики доступа для трех различных классов пользователей:
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
решение3
У меня были некоторые проблемы с настройкой, как у @jas_raj. Сейчас я делаю следующее:
1) В /etc/openvpn создайте новую папку. Например "реж"
2) server.conf добавить строку "client-config-dir каталог/"
3) Внутри «dir» вам нужно создать новый файл с **тем же именем, которое вы написали в своем сертификате** и ввести:
ifconfig-push IP-МАСКА
Например: ifconfig-push 10.0.0.10 255.0.0.0