Назад | Перейти на главную страницу

Можно ли использовать inet-адрес, присвоенный интерфейсу P-t-P tun, для inet-адреса клиента, если на сервере заканчиваются все адреса в подсети?

У меня есть сервер OpenVPN с адресом Inet 10.8.0.1, обслуживающий подсеть 10.8.0.0/24. У меня есть два клиента, подключенных к этому серверу, и журнал состояния (/etc/openvpn/openvpn-status.log) выглядит следующим образом:

OpenVPN CLIENT LIST
Updated,Wed Aug  9 15:56:38 2017
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
client1,10.0.0.177:54810,4648,4853,Wed Aug  9 15:56:28 2017
client2,10.0.0.224:53999,4731,4935,Wed Aug  9 15:56:16 2017
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.6,client1,10.0.0.177:54810,Wed Aug  9 15:56:28 2017
10.8.0.10,client2,10.0.0.224:53999,Wed Aug  9 15:56:16 2017
GLOBAL STATS
Max bcast/mcast queue length,0
END

Теперь на клиенте 2, когда я запускаю (ifconfig), я получаю следующее для интерфейса tun:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.10  P-t-P:10.8.0.9  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Внутренний адрес P-t-P читается как 10.8.0.9. Где этот интерфейс присутствует в подсети? Это на клиенте или на сервере? Traceroute на этом интерфейсе от клиента дает мне следующее:

traceroute to 10.8.0.9 (10.8.0.9), 64 hops max
  1   10.8.0.1  0.348ms  0.210ms  0.163ms
  2   *  *  *
  3   *  *  *
  4   *  *  *
  5   * ^C

Теперь, если это похоже на фиктивный inet-адрес, может ли этот inet-адрес использоваться для клиента сервером OpenVPN, если у него заканчиваются адреса, в случае, если он достигает ограничения в 254 VPN-клиентов?

Заранее спасибо!

Ваш сервер OpenVPN, похоже, настроен с использованием топологии net30. Эта топология требуется для совместимости с действительно старыми клиентами, работающими в более старых версиях Windows.

Эта топология в основном использует /24 подсеть, которую вы назначили для VPN, и разбивает ее на 64 подсети с 30-битными масками. Это означает, что у вас может быть не более 63 подключенных клиентов.

В net30 00 (двоичные биты) и 11 адреса не используются, 01 адрес назначается соединению PTP на сервере и 10 адрес используется на клиенте.

Итак, учитывая 10.8.0.6,client1,... клиент. подсеть 10.8.0.4. Широковещательный адрес 10.8.0.7. Адрес, принадлежащий серверу OpenVPN: 10.8.0.5 (хотя на самом деле вы не увидите, что он назначен на сервере), а адрес, назначенный клиенту, 10.8.0.6.

$ ipcalc 10.8.0.4/30

Address:   10.8.0.4             00001010.00001000.00000000.000001 00
Netmask:   255.255.255.252 = 30 11111111.11111111.11111111.111111 00
Wildcard:  0.0.0.3              00000000.00000000.00000000.000000 11
=>
Network:   10.8.0.4/30          00001010.00001000.00000000.000001 00
HostMin:   10.8.0.5             00001010.00001000.00000000.000001 01
HostMax:   10.8.0.6             00001010.00001000.00000000.000001 10
Broadcast: 10.8.0.7             00001010.00001000.00000000.000001 11

В наши дни вам было бы намного лучше переключить свой сервер на использование topology subnet. Эта опция сообщает OpenVPN 10.8.0.0/24 как одну подсеть, а не разбивать ее на кучу более мелких подсетей. Каждый клиент будет использовать только 1 адрес из возможных ~ 253, доступных в подсети, вместо обычных 4, как это происходит с net30.

режим топологии

Настройте топологию виртуальной адресации при работе в режиме --dev tun. Эта директива не имеет значения в режиме касания --dev, который всегда использует топологию подсети. Если вы установите эту директиву на сервере, директивы --server и --server-bridge также автоматически передадут выбранную вами настройку топологии клиентам. Эту директиву также можно вручную отправить клиентам. Как и директива --dev, эта директива всегда должна быть совместима между клиентом и сервером.

режим может быть одним из:

net30 - используйте топологию «точка-точка», выделяя одну подсеть / 30 для каждого клиента. Это сделано для обеспечения семантики «точка-точка», когда некоторые или все подключающиеся клиенты могут быть системами Windows. Это значение по умолчанию в OpenVPN 2.0.

подсеть - используйте подсеть, а не топологию «точка-точка», настроив интерфейс tun с локальным IP-адресом и маской подсети, аналогично топологии, используемой в --dev tap и режиме моста Ethernet. Этот режим выделяет один IP-адрес для каждого подключающегося клиента и также работает в Windows. Доступно, только если сервер и клиенты имеют OpenVPN 2.1 или выше или OpenVPN 2.0.x, который был вручную исправлен с помощью кода директивы --topology. При использовании в Windows требуется версия 8.2 или выше драйвера TAP-Win32. При использовании в * nix требует, чтобы драйвер tun поддерживал команду ifconfig (8), которая устанавливает подсеть вместо IP-адреса удаленной конечной точки.