Как установить статический IP (на стороне клиента) в OpenVPN?

Как установить статический IP (на стороне клиента) в OpenVPN?

Я настраиваю сеть 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

Связанный контент