Какой параметр контролирует диапазон IP-адресов клиентов на сервере OpenVPN?

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

У меня есть сервер OpenVPN 2.5.9 на Ubuntu 22.04. Он был настроен кем-то другим и правильно работает с 4 клиентами на Linux. Соединение между клиентами является важной частью использования.

Мне хотелось бы добавить клиента на Windows. Я использовал сертификат и ключ с одной из Linux-систем (которая оффлайн) на Windows-клиенте.

Windows-клиент подключается, но не может пинговать VPN-сервер или каких-либо других клиентов.

В конфигурации сервера это единственные строки без комментариев:

port 1194
proto udp
dev tun
ca ca.crt
cert my_server.crt
key my_server.key  # Этот файл должен оставаться в секрете
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
client-to-client
keepalive 10 120
cipher AES-256-CBC
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1

Я использовал существующие файлы клиента client4.crt и client4.key для Windows-клиента.
Файлы client4.crt, client4.key и ca.crt находятся в папке C:\Program Files\OpenVPN\config, вместе с client4.ovpn, ниже:

client
dev               tun1
proto             udp
remote            10.75.31.11 1194
script-security   2
resolv-retry      infinite
nobind
persist-key
persist-tun
verb              3
ca                ca.crt
cert              "client4.crt"
key               "client4.key"
comp-lzo
cipher            AES-256-CBC

Конфигурация, похоже, по умолчанию устанавливается в режим “net30”, где каждый клиент помещается в подсеть /30, используя средние два из четырех адресов. Серверная часть туннеля на 1 меньше, чем адрес клиента.

Четырем клиентам Linux были назначены IP-адреса:

10.8.0.22,     10.8.0.10,     10.8.0.6,     10.8.0.26

Сервер расположен на 10.8.0.1

Новому клиенту Windows назначен адрес 10.8.0.34.
Он не может пинговать серверную часть своего соединения 10.8.0.33, сервер на 10.8.0.1 или другого клиента на 10.8.0.6

Конфигурация сервера указывает на файл журнала по адресу /var/log/openvpn/openvpn-status.log. Он содержит:

OpenVPN CLIENT LIST
Updated,2024-11-16 23:42:17
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
client4,10.75.31.12:59106,13991,3394,2024-11-16 23:42:11
client2,10.250.32.11:50632,46677,47326,2024-11-16 21:02:55
client3,10.250.32.8:39521,45671,47286,2024-11-16 21:02:55
client1,10.250.32.22:53990,104410,104646,2024-11-16 21:02:55
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.22,client2,10.250.32.11:50632,2024-11-16 21:02:56
10.8.0.34,client4,10.75.31.12:59106,2024-11-16 23:42:11
10.8.0.6,client1,10.250.32.22:53990,2024-11-16 23:42:03
10.8.0.26,client3,10.250.32.8:39521,2024-11-16 21:02:56
GLOBAL STATS
Max bcast/mcast queue length,4
END

Все выглядит разумно, так как client4 исходит из 10.75.31.12.

Из журнала клиента Windows я вижу следующее:

Sat Nov 16 23:50:32 2024 MANAGEMENT: >STATE:1731819032,ASSIGN_IP,,10.8.0.34,
Sat Nov 16 23:50:32 2024 open_tun, tt->ipv6=0
Sat Nov 16 23:50:32 2024 TAP-WIN32 device [Ethernet] opened: \\.\Global\{7D8E400D-77CB-493A-AA2B-6E4A743EC55B}.tap
Sat Nov 16 23:50:32 2024 TAP-Windows Driver Version 9.21 
Sat Nov 16 23:50:32 2024 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.34/255.255.255.252 on interface {7D8E400D-77CB-493A-AA2B-6E4A743EC55B} [DHCP-serv: 10.8.0.33, lease-time: 31536000]
Sat Nov 16 23:50:32 2024 NOTE: FlushIpNetTable failed on interface [25] {7D8E400D-77CB-493A-AA2B-6E4A743EC55B} (status=5) : Access is denied.  
Sat Nov 16 23:50:37 2024 TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
Sat Nov 16 23:50:37 2024 MANAGEMENT: >STATE:1731819037,ADD_ROUTES,,,
Sat Nov 16 23:50:37 2024 C:\Windows\system32\route.exe ADD 10.8.0.0 MASK 255.255.255.0 10.8.0.33
Sat Nov 16 23:50:37 2024 ROUTE: route addition failed using CreateIpForwardEntry: Access is denied.   [status=5 if_index=25]
Sat Nov 16 23:50:37 2024 Route addition via IPAPI failed [adaptive]
Sat Nov 16 23:50:37 2024 Route addition fallback to route.exe
Sat Nov 16 23:50:37 2024 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Sat Nov 16 23:50:37 2024 ERROR: Windows route add command failed [adaptive]: returned error code 1
Sat Nov 16 23:50:37 2024 Initialization Sequence Completed
Sat Nov 16 23:50:37 2024 MANAGEMENT: >STATE:1731819037,CONNECTED,SUCCESS,10.8.0.34,10.75.31.11

Ошибка команды добавления маршрута вероятно является проблемой, но я не уверен, как её решить. OpenVPN работает как служба, так что я не знаю, как можно увеличить его привилегии.

Я смог выполнить команду маршрута из журнала в окне CMD с повышенными привилегиями, и она выполниться успешно.

C:\Windows\system32>C:\Windows\system32\route.exe ADD 10.8.0.0 MASK 255.255.255.0 10.8.0.33
 OK!

После этого соединение между клиентом Windows и VPN по прежнему отсутствует. Брандмауэр Windows отключен во время отладки этой проблемы.

Файл /var/log/openvpn/ipp.txt должен отслеживать IP-адреса клиентов.

client1,10.8.0.4,
client,10.8.0.8,
client1,10.8.0.12,
client,10.8.0.16,
my_server,10.8.0.20,
client3,10.8.0.24,
client4,10.8.0.32,

Я не уверен, почему client1 указан дважды. Возможно, это артефакт раннего тестирования, вместе с клиентом без номера?

Должен ли я удалить ipp.txt и позволить серверу заново создать его?
Есть ли какие-либо другие настройки или файлы, которые ограничивают общее количество клиентов?
Есть серверная настройка для
;max-clients 100
но она закомментирована. Клиенты подключаются, просто не передают трафик с клиента Windows. Не работающий клиент Windows имеет самый высокий адрес 10.8.0.32. Существует ли какая-либо другая настройка, которая контролирует разрешенный диапазон адресов, поддерживаемых в конфигурации с использованием опции client-to-client?

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

Вопрос: Какой параметр управляет диапазоном IP-адресов клиентов на сервере OpenVPN?

Ответ:

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

server 10.8.0.0 255.255.255.0

Этот параметр создает виртуальную сеть, где сервер использует подсеть 10.8.0.0 с маской подсети 255.255.255.0 (или CIDR /24). Это означает, что сервер может выделить клиентам диапазон IP-адресов от 10.8.0.2 до 10.8.0.254, поскольку 10.8.0.1 зарезервирован за самим сервером.

Возможные проблемы:

  1. Проблемы с маршрутизацией и доступом: Вы упомянули, что Windows-клиент получает IP-адрес 10.8.0.34 и не может пинговать сервер или другие клиенты. Важно проверить маршрутизацию на Windows-клиенте и убедиться, что таблица маршрутизации правильно настроена. Логи указывают на ошибки при добавлении маршрута. Это может быть связано с недостатком прав; попробуйте запустить OpenVPN GUI от имени администратора.

  2. Конфликт IP-адресов: Убедитесь, что другие клиенты не используют тот же IP-адрес. В вашем случае, другие активные клиенты получают адреса, находящиеся в диапазоне 10.8.0.2 до 10.8.0.254. Проверьте, нет ли конфликтов.

  3. Файл ipp.txt: Удаление или переименование файла /var/log/openvpn/ipp.txt может помочь в случае некорректного учета IP-адресов. При следующем подключении сервер создаст новый файл и перераспределит IP-адреса клиентам.

  4. Параметр client-to-client: Данный параметр позволяет клиентам обмениваться трафиком между собой. Убедитесь, что этот параметр включен и правильно настроен — в вашем файле конфигурации он присутствует и активен.

  5. Настройки фаервола: Несмотря на то что вы отключили фаервол на Windows-клиенте для отладки, убедитесь, что фаервол на сервере Linux также не блокирует UDP-трафик на порту 1194.

  6. Проверка других конфигурационных параметров: Если в будущем вам потребуется добавить больше клиентов, вы можете раскомментировать строку ;max-clients 100, чтобы увеличить количество поддерживаемых подключений.

Заключение:

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

Если у вас есть дополнительные вопросы или требуется помощь с другими аспектами настройки OpenVPN, не стесняйтесь обращаться к экспертам в этой области.

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

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