FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
technotrance
рядовой
Сообщения: 19
Зарегистрирован: 2013-01-29 9:05:06
Откуда: Екатеринбург
Контактная информация:

FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Непрочитанное сообщение technotrance » 2022-01-17 6:02:58

Здравствуйте!
Имеется тестовый сервер с FreeBSD 12.3 + OpenVPN 2.5.5. Схема на приложенной картинке.
Конфиг /etc/rc.conf:

Код: Выделить всё

ifconfig_re0="inet 192.168.0.250 netmask 255.255.255.0"
defaultrouter="192.168.0.1"

cloned_interfaces="tap0 bridge0"
ifconfig_bridge0="inet 10.0.0.1 netmask 255.255.255.0 addm sk0 addm tap0 up"
openvpn_enable="YES"
openvpn_if="tap bridge"
openvpn_configfile="/usr/local/etc/openvpn/golovnoy.conf"
ifconfig_tap0="up"
ifconfig_sk0="up"
Конфиг /usr/local/etc/openvpn/golovnoy.conf:

Код: Выделить всё

port 1194
proto udp4
dev tap0
ca keys/office1/ca.crt
cert keys/office1/forserv.crt
key keys/office1/forserv.key
dh keys/office1/dh2048.pem
server-bridge 10.0.0.1 255.255.255.0 10.0.0.10 10.0.0.20
crl-verify keys/office1/crl.pem
ifconfig-pool-persist servers/golovnoy/logs/ipp.txt
cipher AES-256-GCM
user nobody
group nobody
status servers/golovnoy/logs/openvpn-status.log
log-append servers/golovnoy/logs/openvpn.log
verb 2
mute 20
max-clients 100
keepalive 10 120
client-config-dir /usr/local/etc/openvpn/servers/golovnoy/ccd
client-to-client
persist-key
persist-tun
ccd-exclusive
Собственно, подключения работают, клиент1 и клиент2 подключаются. Друг друга видят. Сервер ESXi тоже видят.
И вроде всё хорошо, однако, если демона openvpn перезапустить, то наблюдается следующее:
После восстановления подключения, клиент1 и клиент 2 продолжают видеть друг друга. Однако сервер ESXi видеть перестают. И даже сам OpenVPN сервер перестают пинговать по адресу 10.0.0.1. Переподключение клиентов не помогает. Помогает лишь полная перезагрузка машины с FreeBSD+OpenVPN.
Подскажите, в какую сторону копать? Требуется, чтобы, при перезапуске OpenVPN демона, соединения восстанавливались и продолжали работать корректно.
Вложения
shem.png

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

guest
проходил мимо

FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Непрочитанное сообщение guest » 2022-01-17 12:59:38

tap0 из бриджа вываливается или уходит в down, в итоге
бридж из sk0 и tap0 не работает - это мысли на вскидку.

Demis
прапорщик
Сообщения: 469
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Непрочитанное сообщение Demis » 2022-01-17 14:47:37

А почему в конфиге:
technotrance писал(а):
2022-01-17 6:02:58
openvpn_if="tap bridge"
без нулей? (а не tap0 bridge0)...

Аватара пользователя
technotrance
рядовой
Сообщения: 19
Зарегистрирован: 2013-01-29 9:05:06
Откуда: Екатеринбург
Контактная информация:

FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Непрочитанное сообщение technotrance » 2022-01-18 5:47:52

guest писал(а):
2022-01-17 12:59:38
tap0 из бриджа вываливается или уходит в down, в итоге
бридж из sk0 и tap0 не работает - это мысли на вскидку.
Такое предположение было. Но как это можно исправить?
Demis писал(а):
2022-01-17 14:47:37
без нулей? (а не tap0 bridge0)...
Да, без нулей. Кстати, если эту строчку и вовсе закомментировать, то клинеты всё равно подключаются нормально. Однако проблему после перезапуска openvpn демона это не решает.

Demis
прапорщик
Сообщения: 469
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Непрочитанное сообщение Demis » 2022-01-18 9:43:33

technotrance писал(а):
2022-01-18 5:47:52
если эту строчку и вовсе закомментировать
Это все понятно. Я-бы обратил внимание на примере https://openvpn.net/community-resources ... -bridging/ в каком случае "с нулями", а в каком без оных. И, на мой взгляд, "это объясняет|наталкивает на мысль" (частично) почему перезапуск может не срабатывать.

Demis
прапорщик
Сообщения: 469
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Непрочитанное сообщение Demis » 2022-01-18 10:16:39

Приведу свой пример, еще ДО и БЕЗ подъема vpn, настройка бриджа:

Код: Выделить всё

cloned_interfaces="lagg0 bridge0 tap0"
ifconfig_lagg0="laggproto lacp laggport igb0 laggport igb1"
ifconfig_lagg0_alias0="inet 192.168.1.14 netmask 255.255.255.0"
ifconfig_tap0=" mtu 9000 up"
autobridge_interfaces="bridge0"
autobridge_bridge0="lagg0 tap0"
ifconfig_bridge0_alias0="inet 192.168.211.7 netmask 255.255.255.0"
ifconfig_bridge0="addm lagg0 addm tap0 up"
Пробел в " mtu 9000 up" - стоит не случайно.
Равно как И если написать

Код: Выделить всё

ifconfig_lagg0_alias0="inet 192.168.1.14 netmask 255.255.255.0 mtu 9000 up"
ifconfig_bridge0_alias0="inet 192.168.211.7 netmask 255.255.255.0 addm lagg0 addm tap0 up"
то, не работало (на FreeBSD 11.1 amd64) как дОлжно.
Помог разбор разбор стартового скрипта, где увидел, что например кусок "addm lagg0 addm tap0 up" просто откидывал второй интерфейс.

Уточню, мой пример без опенвпн, но танцы с бубном были именно из-за перезапуска tap0.
Пришлось разбираться - почему это происходит.
Ведь если интефейс нормально не создается/не рестартует/не конфигурится, то и другим даемонам (тому-же опенвпн) не с чем работать.
В моем случае lagg0 это igb0 и igb1, который конфигурируется тоже отдельной строкой:

Код: Выделить всё

ifconfig_lagg0="laggproto lacp laggport igb0 laggport igb1"
Общая схематика, упрощенно, такая: igb0 + igb1=lagg0 -> bridge0 -> tap0
Мог чего-то подзабыть.

Аватара пользователя
technotrance
рядовой
Сообщения: 19
Зарегистрирован: 2013-01-29 9:05:06
Откуда: Екатеринбург
Контактная информация:

FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Непрочитанное сообщение technotrance » 2022-01-20 17:07:50

Demis писал(а):
2022-01-18 9:43:33
Это все понятно. Я-бы обратил внимание на примере https://openvpn.net/community-resources ... -bridging/ в каком случае "с нулями", а в каком без оных. И, на мой взгляд, "это объясняет|наталкивает на мысль" (частично) почему перезапуск может не срабатывать.
На самом деле, всё ещё понятнее, если посмотреть, что написано в скрипте /usr/local/etc/rc.d/openvpn:

Код: Выделить всё

# NAME_enable="NO"      # set to YES to enable openvpn
# NAME_if=              # driver(s) to load, set to "tun", "tap" or "tun tap"
#                       # it is OK to specify the if_ prefix.
#
# # optional:
# NAME_flags=                           # additional command line arguments
# NAME_configfile="/usr/local/etc/openvpn/NAME.conf"    # --config file 
# NAME_dir="/usr/local/etc/openvpn"     # --cd directory
Соответственно свой rc.conf привёл к такому виду:

Код: Выделить всё

openvpn_enable="YES"
openvpn_if="tap"
openvpn_configfile="/usr/local/etc/openvpn/golovnoy.conf"
openvpn_dir="/usr/local/etc/openvpn"
Свою же проблему тоже решил. Как и сказали выше, смотреть надо было в сторону того, что чего-то отваливается после остановки демона OpenVPN. Так и было. Отваливался интерфейс tap0. А значит решение было такое:
В конфиг OpenVPN добавил две строки:

Код: Выделить всё

script-security 2
up servers/golovnoy/bin/tapup.sh
ну и сам скрипт tapup.sh:

Код: Выделить всё

#!/bin/sh

/sbin/ifconfig tap0 up
Всё. Теперь демон OpenVPN, при запуске, поднимает интерфейс tap0, если он в дауне. Соответственно и клиенты успешно цепляются заново.

Аватара пользователя
technotrance
рядовой
Сообщения: 19
Зарегистрирован: 2013-01-29 9:05:06
Откуда: Екатеринбург
Контактная информация:

FreeBSD 12.3 + OpenVPN 2.5.5 восстановление соединения.

Непрочитанное сообщение technotrance » 2022-01-20 17:17:42

technotrance писал(а):
2022-01-20 17:07:50
ну и сам скрипт tapup.sh:
И не забыть права дать:

Код: Выделить всё

chmod 755 /usr/local/etc/openvpn/servers/golovnoy/bin/tapup.sh