Шаг 4. Пинг моего другого устройства по адресу 172.16.x.x успешен, а как выполнить пинг другого устройства по его внутреннему адресу 192.168.x.x?
Дальше начинается действие, ради которого все и затевалось — получение одним устройством c ОС Windows доступа к внутренней сети, расположенной за вторым устройством (маршрутизатором). Эти действия связаны с наличием маршрутной информации о сети «за» маршуртизатором и почти аналогичны предыдущему шагу, но с некоторыми отличиями. Теперь нам необходимо не только обучить ваш Windows «знанию» о сети 172.16.0.0/16, что было выполнено на предыдущем шаге, но и дать ему информацию о сети, расположенной «за» маршрутизатором вашего второго туннеля.
Прежде чем приступить к этому шагу вы должны убедиться в том, что сеть «за» вашим маршрутизатором НЕ пересекается с сетью, в которую подключена ваша Windows машина. То есть, если ваш Windows находится в сети 192.168.0.0/24 (например дом) и такая же сеть 192.168.0.0/24 расположена за вторым устройством (например дача) то такая конфигурация будет некорректной и из нее есть два выхода:
— перенастроить одну из сетей на другую схему адресации, например 192.168.1.0/24
— осуществить трансляцию портов на вашем втором устройстве в адрес, полученный от сети vpnki 172.16.x.x (эту конфигурацию мы не будем рассматривать в рамках настоящего документа)
Итак, если вы имеете разные сети, то теперь нам необходимо сообщить вашему Windows устройству о наличии сети, например 192.168.1.0/24, расположенной за ваш вторым туннелем. Для этого вам необходимо на вашей персональной странице настроек vpnki, для второго вашего туннеля (например дача) отметить галочкой то, что вы настраиваете маршуртизатор и за ним расположена сеть 192.168.1.0/24. Примененная на этой странице настройка добавит эту сеть в протокол DHCP и передаст в ваше Windows устройство при следующем подключении. Проверить это вы сможете выполнив команду . В ее длинном выводе вы должны обнаружить следующую строку:
Сетевой адрес Маска Адрес шлюза Интерфейс192.16.1.0 255.255.255.0 172.16.0.1 172.16.x.x — выданный вам адрес
Если по какой-то причине данная строка не появилась это означает, что протокол DHCP не отработал и маршрутная информация не получена. В этом случае имеет смысл разобраться в причине или добавить статический маршрут в ручном режиме. В качестве обходного маневра вы можете прописать маршрут к сети 192.168.1.0/24 выполнив команду (с правами администратора!)
После этого вы должны успешно выполнить пинг своего «другого устройства», подключенного к сети vpnki по его внутреннему адресу (например 192.168.1.1), выполнив команду
Однако обращаем внимание:
— на то, что второе устройство (маршрутизатор) должно содержать в своей таблце маршрутов путь к сети 172.16.0.0/16 для отправки ответов на ваш пинг.
— на втором вашем устройстве (маршрутизаторе) межсетевой экран не должен блокировать ответы на пакеты icmp
Результат этого шага — наличие маршрута к сети 192.168.1.0/24 в таблице маршрутов Windows устройства и/или успешный пинг вашего второго устройства по внутреннему адресу 192.168.1.x.
PS: В целях борьбы с зависшими сессиями мы принудительно отключаем пользовательские туннели с протоколом OpenVPN в 00:00 по Московскому времени. При правильной настройке соединения должны автоматически переустановиться.
ВАЖНО! ЕСЛИ СОЕДИНЕНИЕ В 00:00 НЕ ПЕРЕУСТАНАВЛИВАЕТСЯ, ТО ОЗНАКОМЬТЕСЬ С ЭТИМ И ВНЕСИТЕ ИЗМЕНЕНИЯ В КОНФИГУРАЦИОННЫЙ ФАЙЛ OVPN
ДОПОЛНИТЕЛЬНО ПО ТЕМЕ:
Ознакомьтесь с настройками и работой нашей услуги «Публикация URL», которая поможет вам организовать удаленный доступ по протоколам http и https к своим ресурсам
Озанакомьтесь с работой и настройками нашей услуги «Проброс TCP порта», которая поможет вам опубликовать в сети Интернет TCP порт вашего устройства для организации удаленного доступа
Ознакомьтесь с настройками и приниципами работы услуги «Доступ через HTTP и SOCKS5 прокси», которая даст вам возможность удаленного доступа такими протоколами и приложениями как HTTP, RDP, VNC, ssh и другими
Как это работает ?
При инициализации плагина в OpenVPN, плагин возвращает масочный список всех функций, которые может обслужить. При наступлении очередной фазы подключения или внутреннего события, OpenVPN вызывает соответствующие функции из плагина. Плагин преобразует переменное окружение и параметры переданные функции в структуру, инициализирует python и передаёт структуру в соответствующую процедуру python модуля. Процедура возвращает плагину один из трёх ответов (0 — Success, 1 — Error, 2 — Deferred). Ответ транформируется и возвращается OpenVPN.
Обратите внимание, что все вызовы модуля являются «stateless», это означает, что процедуры не помнят и не знают, что происходило ранее в других вызовах. Ориентироваться можно только на переменное окружение передаваемое плагину из OpenVPN
Внутри python модуля вы можете реализовать любую логику, подключая нужные библиотеки и ресурсы. Если вы не уверены в скорости выполнения проверок, то используйте «отложенные» подтверждения.
Используя группировку пользователей подключаемых к сервису, через pf_file можно довольно тонко настроить сетевое взаимодействие между пользователями и другими ресурсами. В свою очередь подключив плагин на мониторинг, всегда можно будет через management интерфейс OpenVPN управлять сессиями клиентов.
Во время тестирования проекта был разработан механизм генерации паролей, аналогичный jwt токенам, но имеющим меньший размер.
Суть проста. Токен содержит в себе идентификатор клиента и срок окончания доступа. Для подписи токена используется HMAC_SHA1 с закрытым ключом. После подписи токена, текстовое содержимое ксорится подписью и конвертится в base64. Таким образом получается «запечатывание» токена. «Запечатанный» токен используется в качестве пароля пользователя. При несанкционированном изменении блока с данными, поломается xor, если поломается xor, значит поломается проверка подписи. Без закрытого ключа подпись изменить не получится.
Если вы не хотите руками контролировать время действия пароля, то генерируете такой токен, и проверяете его на валидность внутри плагина, не вызывая внешние сервисы. Данная схема очень удобна для сессионной генерации паролей на определенное время. При этом вы можете во внешнюю систему управления передать содержимое токена и она сама настроится на отключение пользователя по окончании действия токена.
Надеюсь информация в данной статье была вам полезна.
Спасибо за потраченное на её прочтение время.
Если есть вопросы, попробую ответить на что смогу.
Шаг 1. Подключение
1.1. Самая рапространненая причина невозможности устрановления соединения — ошибка в имени пользователя, пароле, адресе службы
1.2. Следующая причина — ваше соединение НЕ будет принято, если пользователь с таким именем уже подключен. В этом случае вы получите ошибку отклонения авторизации.Если вы некорректно оборвали первое соединение (например, отвалился канал к провайдеру) и начали устранавливать его еще раз, то в это случае наша система может вас не подключить до того момента, пока не исчетет таймаут неактивности первой сессии.В некоторых случаях этот таймаут может доходить до 5 минут.
1.3. Если вы все сделали верно, но соединение не устанавливается, то обратитесь к нам в форум
Сформулируйте ситуацию, сообщите время/дату неуспешного подключения, тип используемого протокола, а также имя пользователя, чье соединение не установилось.
Результат этого шага — Соединение установлено.