Почему происходит сбой при выделении статического IP-адреса клиента в OpenVPN?

8

Я использую сервер OpenVPN и хочу назначить конкретному клиенту статический IP-адрес.

Это мой server.conf. Я думаю, что это настраивает пул виртуальных IP-адресов, чтобы охватить от 10.5.24.209 до 10.5.24.223.

port 443
proto tcp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.5.24.208 255.255.255.240
#This netmask should span IPs .208-.223.
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 168.xx.xx.xx"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
client-to-client
client-config-dir ccd

Это содержимое /etc/openvpn/ccd/W7LocalVM, где W7LocalVM - это общее имя моего клиента. Я не совсем понимаю, что делает эта директива, но я думаю, что первый IP должен быть желаемым статическим IP моего клиента, а второй IP должен быть IP моего сервера.

ifconfig-push 10.5.24.210 10.5.24.209

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

Mon Aug 07 14:07:34 2017 Set TAP-Windows TUN subnet mode network/local/netmask = 10.5.24.208/10.5.24.210/10.5.24.209 [SUCCEEDED]
Mon Aug 07 14:07:34 2017 MANAGEMENT: Client disconnected
Mon Aug 07 14:07:34 2017 ERROR: --ip-win32 dynamic [offset] : offset is outside of --ifconfig subnet
Mon Aug 07 14:07:34 2017 Exiting due to fatal error

Я думал, что IP 10.5.24.210 будет в подсети, определенной на стороне сервера, и я не понимаю, почему я получаю эту ошибку. Может ли кто-нибудь помочь мне в этом?

Магнус
источник
1
Я бы посоветовал спросить об этом при сбое сервера, чтобы получить более полезную обратную связь, поскольку этот сайт посвящен вопросам администрирования сервера.
EJoshuaS - Восстановить Монику
Хорошо. Спасибо. Не знал об этом сообществе. Должен ли я сделать репост, или есть какая-то функция, которая позволяет мне перенести сообщение?
Магнус
1
Вы можете пометить вмешательство модератора и попросить его перенести. (Для нескольких сайтов, таких как Super User, сообщество может проголосовать за миграцию, но модераторы должны перейти на этот сайт).
EJoshuaS - Восстановить Монику

Ответы:

4

Эта проблема возникает из-за того, что openvpn пытается проанализировать ваши параметры ifconfig как ip, за которым следует маска подсети.

Согласно справочной странице:

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

...

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

Эта опция существует в OpenVPN 2.1 или выше.

Примечание. Использование подсети --topology меняет интерпретацию аргументов --ifconfig на «маска сети адреса», а не «локально удаленный».

--ifconfig l rn

Установите параметры адаптера TUN / TAP. l - это IP-адрес локальной конечной точки VPN. Для устройств TUN в режиме точка-точка rn - это IP-адрес удаленной конечной точки VPN. Для устройств TAP или устройств TUN, используемых с подсетью --topology , rn - маска подсети виртуального сегмента сети, который создается или подключается . Для устройств TUN, которые обеспечивают виртуальные двухточечные IP-соединения (при использовании в режиме --topology net30 или p2p), правильное использование --ifconfig - это использование двух частных IP-адресов, которые не являются членами какой-либо существующей подсети. который используется. IP-адреса могут быть последовательными и их порядок должен быть обратным на удаленном узле. После того, как VPN-соединение установлено, при пинге rn вы будете пинговать через VPN.

Для устройств TAP, которые обеспечивают ....

Внутри вашего серверного кода вы устанавливаете свою топологию subnet, а затем отправляете ее клиенту, используя serverинструкцию.

Согласно приведенной выше документации, вместо отправки вашего ifconfig с использованием «локального», «удаленного» адреса, вам необходимо добавить следующее в «/ etc / openvpn / ccd / W7LocalVM»:

ifconfig-push 10.5.24.210 255.255.255.252
push route 10.5.24.210 255.255.255.252
# ifconfig 10.5.24.209 255.255.255.252

Последняя строка, вероятно, не нужна, но оставлена ​​в качестве примера того, что ifconfig-push «должен» делать на стороне сервера, чтобы соединение работало.

Ferrybig
источник
Я написал здесь комментарий, спрашивая, почему вы предлагаете выделить четыре IP-адреса для каждого клиента, но я был достаточно трудолюбив, чтобы найти ответ на этот вопрос в FAQ. Спасибо за решение загадки!
Магнус