ServerAdmin.ru
28.8K subscribers
293 photos
34 videos
13 files
2.62K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
Меня частенько спрашивают, какое решение для организации vpn я предпочитаю. Отвечаю - Openvpn. Закономерный вопрос далее, а чем он лучше всех остальных. Отвечаю по пунктам то, что ценю конкретно я:

1. Самое главное - простой и удобный механизм передачи маршрутов клиенту. Все настраивается и управляется централизованно с сервера. Считаю это основным преимуществом openvpn.
2. Легко конфигурируется на один из протоколов tcp или udp, а так же на любой порт. Выбрав tcp 443, легко проходить любые блокировки. Например, сейчас я сижу в автосервисе в зоне ожидания, использую публичный wifi, который пускает только по 80-му и 443-му порту. Все остальное закрыто. Чтобы подключаться по ssh, я просто использую свой vpn сервер, который работает по 443 порту.
3. Есть клиенты под все популярные платформы и системы. Конфигурация передается в одном файле. Я даже sip телефоны настраивал на работу через openvpn, так как в них был встроенный openvpn client.
4. Ну и в целом это популярный и проверенный временем продукт. Легко настраивается, легко решаются проблемы. Хорошее логирование на стороне клиента. Легко дебажить проблемы.

Существенный минус openvpn - низкая производительность по сравнению с аналогами. Но минус этот становится заметен только на скоростях 100+ мегабит. Мне не так часто приходится сталкиваться с такими каналами в интернет, так что для меня не существенно. Чаще всего все же скорость в районе 100 мегабит или ниже.

В статье пример объединения офисов через openvpn - https://serveradmin.ru/nastroyka-openvpn-na-centos-7/ Статья устарела в техническом плане, ее в ближайшее время ждет актуализация. Но вся теория и подход показаны нормально.

Какую реализацию vpn используете?

#заметка #openvpn
Обновил свою очень старую и популярную статью по настройке openvpn. Обновление давно напрашивалось, потому что сама статья была написана еще в 2015 году. Были мелкие правки, и по существу она еще была актуальна, но по безопасности все сильно устарело в плане шифров.

Актуализировал шифры, добавил tls-crypt, немного скриптов для автоматизации. Ну и в целом все проверил и актуализировал в соответствии с новыми версиями софта. Добавил инфу про android. По сути статью написал с нуля заново.

Для тех, кто не очень знаком с openvpn, все может показаться переусложненным. В целом, любая настройка vpn не самая простая задача, так как затрагивает в первую очередь теорию по сетям. Новички постоянно путаются в маршрутах и не понимают, как все должно быть организовано, чтобы была связность. Плюс много нюансов с шифрованием, аутентификацией и т.д. Я сам немного плаваю в этой теме и приходится постоянно погружаться, чтобы вникнуть и разобраться, когда появляется необходимость.

Например, сейчас можно сертификаты генерировать не с помощью старого и известного алгоритма RSA, который все поддерживают, а используя алгоритм на эллиптических кривых (ECDSA). Openvpn сервер поддерживает шифры на базе этого алгоритма. Считается, что он требует меньше вычислительных ресурсов и в целом работает быстрее. Не уверен, что это сильно актуально в случае с openvpn. Я пока оставил все на rsa, чтобы не было проблем с поддержкой старых клиентов. Наверняка найдется что-нибудь, что еще не поддерживает этот алгоритм. У меня была идея провести тестирование производительности, используя разные шифры, но в итоге статья и так получилась очень большая, на нее было потрачено много времени. Решил отложить этот вопрос на потом.

Если хочется быстро запустить vpn на базе openvpn и просто потыкать, можете попробовать готовую сборку pritunl. Бесплатная, удобная, функциональная штука на базе openvpn с web панелью для управления. Но, как это обычно бывает, если хочется изучить и разобраться в софте, надо ставить с нуля и конфигурировать самостоятельно. Потом уже можно использовать готовые панели, когда будет понимание того, как все работает под капотом. Без этого трудно разбираться в проблемах, которые неизменно возникают с любым софтом.

https://serveradmin.ru/nastroyka-openvpn-na-centos/

#openvpn
​​На днях в ленте рекомендаций google (очень люблю эту ленту, работает качественно после обучения) увидел анонс любопытного проекта для организации vpn подключений - Amnezia - https://amnezia.org/
Суть его работы следующая:

1️⃣ Ставите себе на Windows или Mac приложение.
2️⃣ Запускаете его и указываете параметры доступа по ssh к любому VPS.
3️⃣ Приложение подключается, настраивает на VPS софт в Docker для запуска OpenVPN, а потом подключается к серверу.
4️⃣ Вы получаете доступ со своего компьютера в интернет через этот VPN.
5️⃣ У вас есть возможность выбрать в клиенте, заворачивать ли весь трафик в VPN или только выбранные сайты.

Тут сразу встают вопросы безопасности. Проект с открытым исходным кодом - https://github.com/amnezia-vpn/desktop-client Там же рядом репозиторий с openvpn сервером и всеми остальными компонентами. Можно посмотреть, как все это работает.

Я попробовал, завелось все с первого раза. Для корректной работы приложения необходимо открыть tcp порты 1194 и 6789 на внешнем фаерволе, если такой присутствует. На самом сервере приложение все сделает само. У меня отлично встало на бесплатную виртуалку в облаке oracle.

Amnezia все запускает в докере, к хосту ничего не монтирует, логи не пишет. При каждом подключении клиент сам генерирует новый ключ и сертификат для openvpn и с помощью них подключается. Если вы один раз настроили на сервере все необходимое, можете расшарить доступ к этому серверу другим клиентам Amnezia. Себе же или знакомым.

Проект интересный. Не видел и не слышал о подобных реализациях. Основная фишка, как я понял, в максимальной простоте. Но при этом вы имеет свой self-hosted vpn, а не чей-то сервис, который все ваши данные запишет, а потом сольет. Все что вам надо - арендовать vps и в личном кабинете посмотреть ip адрес сервера и root пароль. Больше вам ни с чем разбираться не придется. Приложение все делает само.

#vpn #openvpn
Всех с пятницей и окончанием рабочей недели. Хочу порекомендовать вам посмотреть на досуге любопытный канал, который я недавно нашел и посмотрел несколько видео оттуда. Например, вот это.

https://www.youtube.com/watch?v=avl5rVi-HNo (ссылка тут для тематического превью к заметке 😁)

Автор, судя по всему, как-то связан с IT, так как много роликов из этой сферы, но не только. Я пока ехал с выставки малоэтажного домостроения, посмотрел его ролик, как собирать электрощит для частного дома и вынес для себя несколько полезных советов. Например, повесить на отдельный автомат холодильники. У меня их будет два. Это удобно, когда надо будет обесточить дом во время длительного отъезда, а холодильники оставить включенными.

Видео там на разные тематики, но где-то половина айтишные. Мне понравилась подача материала и сам автор. Есть ролики на тему мотивации, распорядка дня и т.д. Мне близка озвученная позиция.

По нашей теме тоже есть, что посмотреть. Например, наглядно показано как настроить доступ к локальному nextcloud, расположенному дома без внешнего IP, соединив его по vpn с арендуемой виртуальной машиной. Далее через nginx проксируем запросы на этот nextcloud по vpn, настроив доменное имя и https. Для меня всё это не новость, так как я так же к домашним серверам прокидываю доступы, но если вы не умеете это делать, то в видео наглядно все показано и доступно объяснено.

К сожалению, роликов не очень много и я понимаю, почему. Они очень качественно сделаны и отлично проработаны. Времени записать подобный материал надо много. Но с помощью youtube его не получится монетизировать и как-то окупить. А на одном энтузиазме регулярно записывать такие видео не будешь.

Если вы знаете какие-то классные каналы IT тематики, прошу поделиться. Мне кажется, я в ютубе уже все, что можно, разыскал и посмотрел по нашей теме. Люблю что-то познавательное и развивающее в русле своей профессии смотреть, но в ютубе, к сожалению, эта тематика слабо представлена.

#видео
Технический пост, который уже давно нужно было сделать, но всё руки не доходили. На канале много содержательных заметок по различным темам. Иногда сам через поиск ищу то, о чём писал. Ниже набор наиболее популярных тэгов по которым можно найти что-то полезное (и не очень).

#remote - все, что касается удалённого управления компьютерами
#helpdesk - обзор helpdesk систем
#backup - софт для бэкапа и некоторые мои заметки по теме
#zabbix - всё, что касается системы мониторинга Zabbix
#мониторинг - в этот тэг иногда попадает Zabbix, но помимо него перечислено много различных систем мониторинга
#управление #ITSM - инструменты для управления инфраструктурой
#devops - в основном софт, который так или иначе связан с методологией devops
#kuber - небольшой цикл постов про работу с kubernetes
#chat - мои обзоры на популярные чат платформы, которые можно развернуть у себя
#бесплатно - в основном подборка всяких бесплатностей, немного бесплатных курсов
#сервис - сервисы, которые мне показались интересными и полезными
#security - заметки, так или иначе связанные с безопасностью
#webserver - всё, что касается веб серверов
#gateway - заметки на тему шлюзов
#mailserver - всё, что касается почтовых серверов
#elk - заметки по ELK Stack
#mikrotik - очень много заметок про Mikrotik
#proxmox - заметки о популярном гипервизоре Proxmox
#terminal - всё, что связано с работой в терминале
#bash - заметки с примерами полезных и не очень bash скриптов или каких-то команд. По просмотрам, комментариям, сохранениям самая популярная тематика канала.
#windows - всё, что касается системы Windows
#хостинг - немного информации и хостерах, в том числе о тех, кого использую сам
#vpn - заметки на тему VPN
#perfomance - анализ производительности сервера и профилирование нагрузки
#курсы - под этим тэгом заметки на тему курсов, которые я сам проходил, которые могу порекомендовать, а также некоторые бесплатные курсы
#игра - игры исключительно IT тематики, за редким исключением
#совет - мои советы на различные темы, в основном IT
#подборка - посты с компиляцией нескольких продуктов, объединённых одной тематикой
#отечественное - обзор софта из реестра отечественного ПО
#юмор - большое количество каких-то смешных вещей на тему IT, которые я скрупулезно выбирал, чтобы показать вам самое интересное. В самом начале есть шутки, которые придумывал сам, проводил конкурсы.
#мысли - мои рассуждения на различные темы, не только IT
#разное - этим тэгом маркирую то, что не подошло ни под какие другие, но при этом не хочется, чтобы материал терялся, так как я посчитал его полезным
#дети - информация на тему обучения и вовлечения в IT детей
#развитие_канала - серия постов на тему развития данного telegram канала

Остальные тэги публикую общим списком без комментариев, так как они про конкретный софт, понятный из названия тэга:
#docker #nginx #mysql #postgresql #gitlab #asterisk #openvpn #lxc #postfix #bitrix #икс #debian #hyperv #rsync #wordpress #zfs #grafana #iptables #prometheus #1с #waf #logs #netflow
​​На днях настраивал openvpn сервер по своей статье и решил поделиться информацией. Статья полностью актуальная, можно настраивать копипастом на любом клоне Centos. Помимо многих очевидных плюсов openvpn, о которых я так или иначе уже писал, хочу рассказать ещё об одном, за который люблю эту программу.

Openvpn без проблем запускает на одной и той же машине любое количество тоннелей с разными настройками. Просто кладёте рядом конфиг очередного сервера и запускаете через systemd новый экземпляр с этим конфигом.

У меня на одном сервере запросто живут следующие конфигурации openvpn:
 протокол udp с шифрованием для общих случаев, порт любой;
 протокол tcp для подключения микротиков, порт любой;
 протокол tcp и 443 порт для подключения из мест, где остальные порты закрыты.
и т.д.

Создаются одновременно любые конфигурации с разными протоколами, наличием или отсутствием сжатия, различными протоколами шифрования и т.д. SIP юзеров в один тоннель сажаем, админов в другой, обычных юзеров в третий, филиалы в четвёртый и т.д. У каждого тоннеля своя подсеть, под которую создаются правила firewall. Я стараюсь максимально сегментировать подключения. Так безопаснее и удобнее управлять.

Отмечу до кучи остальные особенности openvpn, за которые я её люблю:
Простой и удобный механизм передачи маршрутов клиенту. Все настраивается и управляется централизованно с сервера. Считаю это основным преимуществом openvpn.
 Есть клиенты под все популярные платформы и системы. Конфигурация передается в одном файле.
Популярный и проверенный временем продукт. Легко настраивается, легко решаются проблемы. Хорошее логирование на стороне клиента. Легко дебажить проблемы.

Для организации vpn всегда выберу openvpn, если он подходит под технические условия задачи. А вы на чём предпочитаете строить vpn сети?

#openvpn #vpn
​​Для веб интерфейса OpenVPN сервера есть отличное родное решение - Access Server. У него есть только один минус - это платный продукт. Есть бесплатная версия с суровым ограничением - не больше двух vpn подключений к серверу. Это позволяет его использовать только для одной цели - личный сервер для единоличного использования. Да и то, лично мне двух подключений не хватит.

Если для вас такое ограничение не критично - то смело пользуйтесь. Ничего лучше нет. Можно установить на свой сервер или арендованную VPS. У многих хостеров есть готовые шаблоны, чтобы сразу развернуть установленный продукт и начать использовать.

Основные возможности:
- управление через веб интерфейс, cli, api
- создание нового клиента и конфигурации для него в один клик
- ограничение доступа клиентов по ip
- возможность настройки протокола и порта, на котором будет работать openvpn сервер
- логи с информацией о подключениях клиентов
- различные способы аутентификации: ldap, radius, AD, pam

Побудило меня написать эту заметку информация о том, что для данного решения есть лекарство, которое позволяет снять ограничение бесплатной версии. Я настоятельно не рекомендую использовать подобное где-то в продакшене. В этом нет большой необходимости, так как есть аналоги, а рисков возникает много. А для личного использования можно и попробовать.

Сайт - https://openvpn.net/access-server/

#openvpn #vpn
​​Вчера в комментариях к заметке об OpenVPN был упомянут любопытный российский продукт Рутокен VPN. Меня он очень заинтересовал, так что решил его сразу же проверить. Это Open Source продукт на базе OpenVPN с веб панелью для управления.

В репозитории есть инструкция по установке. В ней указано, что сервис предназначен для работы в Ubuntu 20. Не знаю, с чем связана привязка к конкретной системе. Наверное поленились оформить поддержку остальных. Хотя бы в Docker контейнер всё это поместили бы, чтобы работало на любом Linux.

Взял Ubuntu 20.04 и установил на неё по инструкции. Там всё очень просто и быстро, не буду приводить шаги по установке. После перезагрузки зашёл по внешнему IP на веб интерфейс. Указал типовые настройки, необходимые для работы сервера OpenVPN и сгенерировал корневой сертификат.

Далее создал пользователей. Там идея такая, что пользователи могут сами заходить на веб интерфейс, генерировать себе конфигурацию, скачивать её вместе с клиентом. Сам клиент тоже Open Source, называется Рутокен VPN клиент. Он нестандартный, так как поддерживает работу с фирменным USB токеном Рутокен ЭЦП. Веб интерфейс довольно простой, как и сам функционал. Можно менять настройки сервера и управлять клиентами. Хотя у всех примерно так же, потому что это типовой функционал OpenVPN Server.

Дальше меня ждал сюрприз. Когда зашёл новым пользователем в веб интерфейс, заметил, что мне предлагают подготовить Рутокен ЭЦП для установки на него сертификата, либо сделать конфиг для смартфона. То есть идея в том, что этот продукт заточен под работу со своими родными токенами.

Тут я немного приуныл, потому что привязка к токенам резко сужает круг вероятных пользователей. Хотя если вам нужно именно это, то решение отличное. Токен сейчас стоит порядка 2500р. Неплохое решение для удалённых корпоративных пользователей, которых, кстати, можно импортировать из AD.

Потом прикинул, что формат конфигов openvpn одинаковый, что для смартфона, что для компьютера. Сделал конфигурацию для смарта, поставил на комп обычный OpenVPN Client и скормил ему этот конфиг. Без проблем подключился к серверу и вышел в интернет с его ip адресом. Отправлять весь трафик клиента через VPN - опция, которую можно указать через веб интерфейс.

В целом, нормальное решение. Для использование токенов вообще отличное, потому что работает всё из коробки и ничего придумывать не надо. Для всего остального не лучше и не хуже, чем все другие. Базовый функционал есть - управление пользователями, отслеживание активных соединений, просмотр логов. Показывается трафик и ip адрес, с которого подключился клиент.

Всё это бесплатно и от разработчика в РФ.

Сайт - https://www.rutoken.ru/products/all/rutoken-vpn/
Исходники - https://github.com/AktivCo/Rutoken-VPN-Community-Edition-Server

#отечественное #openvpn #vpn
Регулярно вижу сообщения на тему того, что OpenVPN работает медленно. Чаще всего это результат каких-то локальных проблем, а не распространённого мнения о том, что openvpn это медленный туннель. Всё познаётся в сравнении, а максимальная производительность туннеля зачастую больше всего зависит от сложности шифрования, которое используется.

В общем случае, при канале интернет в 100-200 мегабит в секунду вы не заметите проблем со скоростью в туннеле OpenVPN, если он будет поднят на базе PC, а не какого-то роутера с маломощным железом. По крайней мере я не сталкиваюсь с проблемами, когда на виртуальных машинах использую OpenVPN для объединения сетей через интернет.

Если вы видите, что ваше OpenVPN соединение работает значительно ниже исходного канала в интернет, то проверять стоит следующие вещи:
Сжатие. Попробуйте его отключить, если включено, и посмотрите, как это повлияет на скорость.
Если у вас используется TCP транспорт, поменяйте на UDP и проверьте скорость.
Попробуйте более простой шифр, например AES-128-CBC вместо AES-256-CBC. Для верности можно вообще что-то совсем простое поставить и проверить, действительно ли из-за шифра проседает скорость.
Посмотрите загрузку ядер процессора во время тестирования канала. Есть вероятность упереться в производительность одного ядра.

Далее идут более сложные вещи, в которые можно погрузиться, чтобы решить проблему с быстродействием:
Иногда могут возникать проблемы с буферами. Гуглите параметры sndbuf и rcvbuf. Пробуйте их менять или отключать управление со стороны OpenVPN. Тема большая, гуглится хорошо, всё найдёте. Не забудьте, что эти параметры можно не только поменять на сервере, но и передать их клиенту. Это суперспособность OpenVPN - передавать практически любые настройки клиенту.
Попробуйте поменять MTU с помощью параметра tun-mtu. Часто в этом может быть причина неадекватно низкой скорости туннеля.
Попробуйте поменять параметр длины очереди отправки txqueuelen. В общем случае дефолтное значение трогать не обязательно, но если ничего из вышеприведённого не помогло, можно попробовать изменить. Я видел ситуации, когда это помогало.

Само собой получился чек лист по исправлению проблем производительности OpenVPN туннеля. Можно забрать в закладки. Изначально хотел написать, как можно ускорить VPN туннели, в том числе и на базе OpenVPN, с помощью готового решения, но отложу это на завтра.

Почему я чаще всего использую OpenVPN - Подробный ответ.

#openvpn
Расскажу вам про решение проблемы с Openvpn Client на Windows, которая меня донимала последний год примерно, может чуть меньше. Вчера терпение лопнуло и я разобрался с ней раз и навсегда.

Проблема плавающая и выражалась она в том, что время от времени одно из настроенных подключений openvpn не подключалось. Ошибка была примерно такая:
MANAGEMENT: Socket bind failed on local address [AF_INET]127.0.0.1:25349
Ошибка возникала случайным образом на различных соединениях.

По тексту не очень понятно, в чём дело. Первое, что приходит в голову - указанный порт уже кем-то занят. Но netstat показывает, что ничего не занято. При этом любое другое подключение openvpn сработает нормально. А какое-то одно ни в какую. У меня около 5-ти подключений используется в разное время. Помогает только перезагрузка. Несколько раз пытался разобраться, но так как ошибка не очень информативна, быстро решить вопрос не получалось. Спасала банальная перезагрузка. Я думал, что она возможно как-то связана с тем, что у меня добавлено несколько сетевых интерфейсов для openvpn, а в дефолте обычно только одно устанавливается.

Дело вот в чём. После какого-то обновления Windows, она стала резервировать некоторые диапазоны портов для работы Hyper-V. Посмотреть эти диапазоны можно командой:
# netsh int ipv4 show excludedportrange tcp

И как оказалось, там есть диапазон локальных портов, который пересекается с диапазоном, который использует OpenVPN. Решение вопроса - изменить его в OpenVPN GUI:
Settings ⇨ Advanced ⇨ Management interface ⇨ Port offset.
После этого проблема исчезла.

Такая вот ерунда сожрала кучу моего времени. В логах самой винды никакой информации нет. По логу openvpn невозможно понять, в чём дело. А оказывается винда каким-то своим механизмом бронирует целые диапазоны портов и не даёт их использовать. При этом никак в системе не помечает их занятыми, иначе бы ошибка была другая. Что-то в духе local address [AF_INET]127.0.0.1:25349 is busy. А тут просто ошибка, которая говорит о том, что сокет не поднимается. Причин этому может быть много. Банальная нехватка прав или что-то ещё.

#openvpn #windows #ошибка
​​Существует необычный и полезный продукт - UDPspeeder, который способен улучшить качество связи VPN туннелей на каналах с большими задержками и потерями пакетов с помощью коррекции ошибок (Forward Error Correction).

Разработчики заявляют встроенную поддержку следующих VPN туннелей - OpenVPN, L2TP, ShadowVPN. Работает UDPspeeder следующим образом. Сначала организуете туннель с его помощью, а потом поверх пускаете тот же OpenVPN или что-то подобное.

В репозитории подробно описан принцип работы UDPspeeder. В основе лежит технология FEC (Forward Error Correction). С её помощью возможно обнаружить ошибки передачи данных и скорректировать их методом упреждения. Эффект реальный и очень заметный. В репозитории есть наглядный пример снижения количества потерянных пакетов без увеличения latency, что существенно увеличивает скорость передачи данных.

Сам я никогда UDPspeeder не использовал и даже не знал о нём, пока со мной не поделился информацией подписчик, за что ему большое спасибо. Продукт полезный и наверняка пригодится. Обязательно попробую, когда в очередной раз придётся настраивать VPN на мобильном интернете. Думаю именно в этой ситуации UDPspeeder проявит себя лучше всего.

Настраивается UDPspeeder максимально просто и быстро. Работает только под Linux, есть пакет для openwrt.

# Запускаем на сервере:
./speederv2 -s -l0.0.0.0:4096 -r 127.0.0.1:7777 -f20:10
# Запускаем на клиенте
./speederv2 -c -l0.0.0.0:3333 -r 44.55.66.77:4096 -f20:10

Все запросы к порту 3333 клиента будут переадресовываться на порт 7777 сервера. Есть отдельная инструкция по настройке связки UDPspeeder + OpenVPN.

Если вам нужна готовая реализация VPN туннеля на базе UDPspeeder для быстрого запуска, можете взять tinyfecVPN от этого же автора. Там в пару команд настраивается VPN Site-to-Site.

Исходники - https://github.com/wangyu-/UDPspeeder

#vpn #openvpn
Существуют программы, которые на основе типа трафика могут направлять его в разные направления. Расскажу вам про одну такую программу - SSLH. Её можно запустить на каком-то TCP порту, например 8080. Если на этот порт направить HTTP трафик, SSLH его перенаправит на веб сервер, если это SSH трафик - на SSH сервер, если OpenVPN, то на его сервер. Таким образом можно маскировать какие-то сервисы, оставляя их при этом полностью доступными.

С одним из вариантов использования подобного подхода я сталкивался сам. Допустим, есть у вас где-то в Америке VPS, там живёт веб сервер. А ещё вам хочется держать там же OpenVPN на 443 порту, чтобы использовать для обхода блокировок и проходить через сети, где всё закрыто, кроме HTTP и HTTPS портов. SSLH отлично решает эту задачу.

Она есть в базовых репозиториях Debian:
# apt install sslh

Далее запускаем:
# sslh-select -f --listen 0.0.0.0:443 \
--tls 127.0.0.1:443 \
--ssh 127.0.0.1:22 \
--openvpn 127.0.0.1:1194

Теперь, если зайти браузером на сервер, то запрос будет перенаправлен на 443 порт веб сервера, если SSH клиентом, то на 22-й порт, если OpenVPN клиентом, то на дефолтный 1194 порт openvpn сервера.

То же самое через Docker:
docker run --rm -it sslh:latest \
 --listen=0.0.0.0:443 \
 --ssh=hostname:22 \
 --tls=hostname:443
--openvpn=hostname:1194

Более функциональный вариант через docker-compose. Пример конфига, где трафик уходит в разные контейнеры:

version: "3"

services:
 sslh:
  image: sslh:latest
  hostname: sslh
  ports:
   - 443:443
  command: --listen=0.0.0.0:443 --tls=nginx:443 --openvpn=openvpn:1194
  depends_on:
   - nginx
   - openvpn

 nginx:
  image: nginx

 openvpn:
  image: openvpn

Исходники

#openvpn #webserver
Когда настраиваете OpenVPN сервер, обязательно обращайте внимание на срок жизни сертификатов. Я знаю, что раньше в наборе скриптов EasyRSA по умолчанию срок жизни сертификатов был 10 лет. Но даже с таким сроком мне один раз пришлось столкнуться с тем, что CA и сертификат сервера, который много раз переезжал на разные машины с сохранением настроек, протух и мне пришлось оперативно решать эту проблему без перевыпуска клиентских сертификатов. Даже статью об этом написал в то время.

Недавно со мной приключилась похожая история. Клиенты перестали подключаться к серверу. Причём я сам это заметил, когда переносил все настройки с одного ноута на другой. И примерно в это же время истёк срок действия сертификата сервера OpenVPN (не CA). Я долго не мог сообразить, в чём проблема. На клиентском сертификате ещё и пароль был. Я сначала думал, что перепутал его. Но потом уже, когда стал детальнее разбираться с ошибкой, понял, что дело не в пароле.

Пошёл на сервер и стал смотреть, в чём дело. Залез в скрипты EasyRSA и обнаружил, что там срок жизни CA так и остался 10 лет, а сгенерированных и подписанных сертификатов только 3 года. В итоге первым протух сертификат самого сервера, потом потихоньку начали клиенты отваливаться. Пришлось всё перевыпускать.

Так что когда настраиваете OpenVPN и выпускаете для него сертификаты, обязательно сморите, какой срок жизни для них установлен. Это поначалу кажется, что 3-5-10 лет это так много. А на деле неизвестно, как всё обернётся. Может оказаться, что время закончилось, а система всё ещё жива и используется. Тем более нет никаких проблем переносить сертификаты вместе с конфигурацией, а один и тот же CA может использоваться для разных задач много лет.

#openvpn
​​Занимался вчера перенастройкой OpenVPN сервера. Потратил немало времени из-за маленького нюанса, про который забыл. Поделюсь информацией для тех, кто тоже использует OpenVPN. Всем остальным читать большого смысла нет.

Люблю OpenVPN Server за гибкость в настройках. У меня обычное дело, когда на небольшой виртуалке под VPN поднято несколько туннелей. Пример разделения.

1️⃣ В этот туннель заводим все устройства Mikrotik. Так как у них своеобразная реализация OpenVPN, для них приходится поднимать отдельный туннель со своими настройками.

2️⃣ Стандартный туннель на UDP для удалённых пользователей. Типовые настройки.

3️⃣ Тот же туннель, что и выше, только на 443 TCP порту для обхода некоторых ограничений.

4️⃣ Ещё один туннель для удалённых филиалов, только уже не на базе Mikrotik. Тут тоже свои настройки, маршруты и т.д.

Я обычно не боюсь сильно дробить абонентов по разным туннелям, так ими удобнее управлять. Главное сильно не переусложнить, иначе можно запутаться.

Я одних абонентов, за которыми есть свои подсети, к которым нужен доступ через VPN, пересадил с одного туннеля на другой. Добавил новый и подключил их к нему. Перенастроил клиентов, они подключились. На вид всё нормально. Но вижу, что к некоторым сеткам за этими клиентами не могу подключиться.

Начинаю всё проверять. Для начала проверил на всех сторонах firewall. Вроде всё правильно. Для надёжности включил логирование всех заблокированных пакетов, там моих пакетов нет. Из чего делаю вывод, что проблема в маршрутизации.

Смотрю внимательно на маршруты. Иногда это непростая задача, когда путь пакета длинный, особенно если проходит через несколько VPN, как было у меня. Хоть садись и схему пути рисуй, сопоставляя с маршрутами на каждом устройстве. Какое-то время не могу понять в чём проблема, но в итоге заметил.

Оказалось, что я ошибся в настройках туннелей и не полностью перенёс подсети, за которые отвечают абоненты из настроек одного туннеля в другой. Заметил это в маршрутах на сервере. Банально, подсеть 192.168.13.0/24 уехала на интерфейс tun4, а я её оставил в старом конфиге с tun2. В итоге OpenVPN все запросы отправлял в tun2 и они там пропадали.

Во время диагностики просто не обратил внимание на разные имена туннелей. Проверяю, что маршрут завёрнут в tun и на этом успокаиваюсь, ожидая, что OpenVPN сама разберётся в какой туннель отправить запрос. Но на самом деле нет. Надо аккуратно самому расписать, какой туннель за какую подсеть отвечает в конфигах сервера. В итоге всё перепроверил и аккуратно расписал все подсетки по своим туннелям. И трафик поехал как надо.

Я мало работал с другими реализациями VPN. Немного pptp делал, и на микротиках l2tp. На Linux всегда использую OpenVPN. Мне он нравится за простоту и удобство реализации. У каждого туннеля свой отдельный конфиг, где описаны все настройки и маршрутизация, относящаяся к этому туннелю. Удобно быстро оценить настройки, сделать копию туннеля, поменяв пару параметров. Можно по отдельности перезапускать туннели, не трогая остальные. При этом база пользователей со своими персональными сертификатами и настройками может быть общей для всех туннелей. Их можно спокойно перемещать между ними. Где-то ещё есть подобная реализация?

#openvpn