Некоторые картинки не загружаются из РФ и РК, используйте VPN.

среда, 15 февраля 2023 г.

OpenVPN ошибка GET INST BY VIRT

Задача из разряда объединение сетей, а точнее - через клиента получить доступ к сети самого клиента. Так как так мы решали задачу доступа сервера Zabbix к узлам, то и  роль VPN сервера упала на сервер Zabbix. В качестве поставщика VPN выбрали OpenVPN. В качестве клиента выступает Mikrotik CRS326-24S+2Q+RM

Для понимания общей схемы, на коленке вот такую штуку нарисовал, сразу понятно, что косяк может возникнуть в любом месте


Ответ в самом низу

Сам CRS доступа в интернет не имеет, зато у него есть доступ к 3 серверам с доступом в интернет.
На самих серверах форвардинг уже включен был (ip_forward=1), плюс -P FORWARD -J DROP, нам осталось только добавить MASQUERADE и -A FORWARD -d $address_vpn -j ACCEPT, безопасности для только для IP нашего VPN сервера.
На CRS добавляем маршрут $address_vpn to $address_node[1-N], вот тут можно увеличить отказоустойчивость настроив метрики и прочее, для использования любого из 3х серверов в качестве шлюза до VPN сервера.
Также на CRS надо добавить MASQUERADE (или чистый src nat)  и проверить правила на возможные блокировки
В конфиге VPN сервера добавляем route, чтобы не делать это каждый раз вручную

Вроде ничего сложного, но с VPN сервера узлы сети (10.0.73.0/24) за клиентом не пинговались. Трассировка в никуда, ping - timeout, tcpdump показывает что мои icmp запросы уходят, но не возвращаются. Теста ради подключили CRS openvpn`ом к другому VPN серверу, который развернут на  Mikrotik CHR и там узлы за CRS доступны. Т.о. начали грешить на саму операционную систему (Debian 10), ибо некоторые части тоже глючили. Быстро развернули новый сервер, без заббикса, только openvpn и ничего более...
Подключаю CRS и получаем ровно тот же результат О_О

Врубили verb 6 для логирования в server.conf , tmux`ом разделил окно, в одном tail -f /var/log/openvpn/openvpn.log, а втором пинг до проблемных узлов и ...... тишина, в логах ничего О_О

Тут мне указали на то, что 6 - это не самое дно, врубили 9 и тут появилась новая информация:

GET INST BY VIRT: 10.0.73.233 [failed]

Начали копать и выяснили, что для реализации поставленной задачи в указанной конфигурации нужно использовать client-config-dir.

Раскомментировал строку в server.conf:

client-config-dir /etc/openvpn/ccd

Создал новый файл в каталоге /etc/openvpn/ccd со следующим содержимым:

iroute 10.0.73.0 255.255.255.0

Файл должен иметь имя сертификата, т.е. если серт client1.crt, то и файл в ccd также client1

При этом в самом server.conf также присутствует:

route 10.0.73.0 255.255.255.0

Без него маршруты вручную пришлось бы добавлять при каждом запуске

Также в самом конфигурационном файле отмечается, что ccd надо включать только для server режима и использовании tun интерфейса, а так как ранее мне не удавалось завести с tap интерфейсом ovpn на Mikrotik, то другие варианты не рассматривались.

Собственно указанные настройки проблему решили в корне.

Комментариев нет:

Отправить комментарий