Openvpn исключить ip в пуле

Openvpn исключить ip в пуле

У меня есть сервер OpenVPN, работающий на Linux Ubuntu box. К этому серверу подключается несколько клиентов (более 500), поэтому я установил опцию server-bridge следующим образом:

server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254

Это работает отлично. Клиенты получают динамический IP-адрес, и он переходит из блока 200 в блок 201, когда количество клиентов превышает 255.

У меня есть внутреннее приложение, которое подключается к этим клиентам, но оно дает сбой на IP-адресах 10.0.200.255 и 10.0.201.0.

Эти IP-адреса находятся в указанном мной диапазоне, но я не могу их использовать.

Есть ли способ исключить их из моего пула?

Или мне нужно изменить настройки?

решение1

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

Я предлагаю 3 возможных решения:

  • Обходной путь, но не гарантируется работа
  • Режим DHCP-прокси, просто, чисто и много других опций
  • Несколько экземпляров, более сложный, может иметь преимущества в производительности

Однако я рекомендую устранить основную причину проблемы — неисправное внутреннее приложение.

Обходной путь

В файле конфигурации сервера добавьте:

server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254
ifconfig-pool-persist ipp.txt 0

В 0конце директивы ifconfig-pool-persistрассматривается ipp.txtкак файл конфигурации, доступный только для чтения.

Создайте файл /etc/openvpn/ipp.txt:

reserved-not-used-cn-1,10.0.200.255
reserved-not-used-cn-2,10.0.201.0
reserved-not-used-cn-3,10.0.201.255
...

Добавьте все зарезервированные IP-адреса в этот файл, отформатированный как <Common-Name>,<IP-address>. Для значения в поле <Common-Name>выберите то, что никогда не будет использоваться ни в одном клиентском сертификате.

Как указано на странице руководства OpenVPN, это не гарантируется всегда:

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

Режим DHCP-прокси

Так как вы используетеКРАНнастройка, это может быть лучшим решением. Это позволяет использовать полнофункциональныйDHCP-серверна стороне сервера подсети или на самом сервере, в зависимости от конфигурации. Чтобы настроить мост Ethernet, вы должны сначала использовать возможности моста вашей ОС для соединения интерфейса TAP с другим интерфейсом.

OpenVPNКонфигурация сервера:

server-bridge

Данная директива распространяется следующим образом:

mode server
tls-server
push "route-gateway dhcp"

DHCPDКонфигурация сервера:

subnet 10.0.100.1 netmask 255.255.0.0 {
  range 10.0.200.1 10.0.200.254;
  range 10.0.201.1 10.0.201.254;
  range 10.0.202.1 10.0.202.254;
  range 10.0.203.1 10.0.203.254;
  ...
}

Несколько экземпляров

Альтернативой было бы создание отдельного экземпляра openvpn для каждой /24подсети с использованием нескольких файлов конфигурации. Но это требует использования другого порта для каждого экземпляра.

Файл конфигурации экземпляра 1:

port 11941
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.200.254

Файл конфигурации экземпляра 2:

port 11942
server-bridge 10.0.100.1 255.255.0.0 10.0.201.1 10.0.201.254

...

Для этого потребуется:

  • либо клиентские конфигурации, специфичные для диапазона IP-адресов, с соответствующими номерами портов,
  • или например, использовать iptablesбалансировку нагрузки на входящие соединения на порту 1194и равномерно распределять их по всем экземплярам

Это решение может иметь преимущества в производительности, как объясненоздесь.

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