Как освободить неиспользуемые IP-адреса в OpenVPN Connect

Вопрос или проблема

У меня есть пара OPNSense с серверами OpenVPN, настроенными для высокой доступности с DUO. Система и ее компоненты обновлены на сегодняшний день.

Каждый раз, когда я быстро отключаюсь и подключаюсь к Wi-Fi, имитируя достаточные потери пакетов, что также происходит с нашими клиентами с нестабильным интернет-соединением, я получаю новый IP-адрес, а старый все еще остается в системе. Не нужно объяснять, что для большего числа пользователей /24 сеть, которую я настроил для VPN подсети, быстро исчерпывается.

Я пытался добавить следующее по одному и все сразу в файл клиента ovpn: ip-win32 dynamic 10 (10 секунд только для отладки), persist-local-ip, persist-remote-ip, explicit-exit-notify 3, также установил persist-remote-ip в конфигурации сервера.

Может ли сервер быть настроен на освобождение неиспользуемых IP-адресов, если они больше не используются? Или на восстановление ранее использованного IP в случае отключения / повторного подключения, если он все еще доступен? Разве один из вариантов, которые я пробовал и упомянул выше, не должен был делать что-то подобное?

Или единственное решение здесь — настроить более крупную сеть, например, /16? Максимальное количество пользователей может достигать 100 одновременно. Даже если они теряют несколько пакетов, пул IP адресов исчерпается быстрее, чем освободится.

Дополнительная информация о сервере, которую я только что оформил в код: TUN type, subnet topology, /24 network for the clients, split tunnel, reneg time 72000 (мы не хотим блокировок DUO), duplicate-cn, persist-remote-ip, route-nopull, UDP. Я могу предоставить больше информации или деталей файла ovpn тоже. Ничего слишком специфичного, конечно.

Что ж. После того как моя (левая) рука не знала, что делает правая рука (мой коллега), и пройдя через настройки сервера, я понял, что теперь есть опция, которой не было, когда я изначально настраивал сервер, а именно “Username as CN“, которая позволяет использовать уникальный CN, и клиент не будет отправлять CN из сертификата. Я не проверял это раньше, потому что этого не было, так что моим решением было разрешить “duplicate-cn“.

Суть в том, что отметив “Username as CN” (видно только в расширенном режиме), удалив “duplicate-cn“, и добавив “persist-remote-ip” в выпадающем меню “Options”, все заработало. Независимо от того, прерывается ли соединение резко, неожиданно или с помощью кнопки отключения, клиент не получит совершенно новый и все еще свободный IP-адрес, а вернет свой старый. Недостатком является то, что одновременно может подключаться только одно устройство на пользователя. Что вполне устраивает в моей среде.

Ответ или решение

Как освобождать неиспользуемые IP-адреса в OpenVPN Connect

Ваша проблема с исчерпанием IP-адресов в OpenVPN решается несколькими способами, и вы уже приближаетесь к решению. Давайте рассмотрим подходы для управления использованием IP-адресов в вашей конфигурации OpenVPN.

1. Опции для управления IP-адресами

  • Опция persist-remote-ip: Эта опция помогает сохранить IP-адреса за клиентами при переподключении. Убедитесь, что она включена как на сервере, так и на клиенте.

  • Опция duplicate-cn: Если включена, это позволяет нескольким клиентам использовать один и тот же CN. Это может привести к исчерпанию IP-адресов, особенно если у вас много клиентов. Вы решили эту проблему, отключив duplicate-cn и воспользовавшись опцией "Username as CN". Это подходящий шаг, поскольку теперь каждый клиент получает уникальный IP.

  • Опция persist-local-ip: Непосредственно не решает проблему, но может быть полезной в некоторых сценариях. Эта опция позволяет клиенту сохранить свой локальный IP при переподключении.

  • Опция explicit-exit-notify: Эта опция может помочь при отключении клиентов, тем самым позволяя серверу быстрее освобождать IP-адреса.

2. Настройка сервера

Для вашего случая оптимальными будут следующие настройки:

  • Проверьте опцию "Username as CN" (доступна в расширенном режиме) и убедитесь, что она включена. Это позволяет уникально идентифицировать каждого пользователя, предотвращая конфликты.

  • Установите регистр IP-адресов, чтобы отслеживать использование IP-адресов. Это позволит вам определить, сколько адресов находится "в свободном доступе".

  • Периодически проверяйте конфигурацию сервера на наличие утечек памяти или зависаний, которые могут приводить к задержке освобождения адресов.

3. Увеличение диапазона IP-адресов

Если даже после всех корректировок вы сталкиваетесь с нехваткой адресов, рассмотрите возможность увеличения подсети, например, до /24 или /16, чтобы обеспечить большее количество доступных IP-адресов.

4. Мониторинг и диагностика

Регулярный мониторинг сети и зарегистрированных IP-адресов может помочь выявить, какие клиенты остаются подключенными дольше. Это поможет вам определить, действительно ли ваши настройки решают проблему.

Заключение

Надеюсь, приведенные рекомендации помогут вам оптимизировать использование IP-адресов в OpenVPN. Ваша конфигурация с "Username as CN" и отключение duplicate-cn — это правильный шаг. Убедитесь, что ваши клиенты настроены должным образом, и контролируйте использование IP-адресов для последующей оптимизации сети. Если ваши требования увеличатся, не стесняйтесь рассмотреть увеличение подсети в соответствии с вашим реальным трафиком.

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

Капча загружается...