Задать вопрос
  • Как маршрутизировать обернутый в https трафик WireGuard?

    @res2001
    Роман,
    С белым ip это легко, а вот можно ли без него - вопрос

    Белый IP у вас есть - вы же попадаете в интернет как-то.
    Можно использовать DDNS и ходить по имени. Но для этого роутер должен уметь в DDNS и отправлять туда свой новый адрес. Но, конечно, лучше статический IP.

    Конечно остается вариант, когда вам провайдер выдает серые адреса и отправляет через свой NAT. В этом случае ничего не поможет - провайдер под вас не станет пробрасывать порты у себя. Теоретически эту проблему можно решить с провайдером (пообщайтесь с тех поддержкой, купить в конце концов статический белый адрес). Например знаю, что в ДОМ.РУ по умолчанию используется такая схема с провайдерским NATом, но можно отключить NAT просто в настройках тарифа в их мобильном приложении, бесплатно. У других операторов это может быть организовано по другому.

    Идея в том что если порты и будут блокировать то явно не 443-й.

    Порт не важен. DPI системы анализируют не порт, а сам трафик. Порт, конечно, то же учитывают, но лишь как один из факторов, далеко не самый главный. Никто не запрещает вам вешать HTTPS сайт на произвольный порт, правда в браузере придется порт руками писать. Точно так же и с другими сервисами.
    stunnel маскирует произвольный трафик под HTTPS, так что должно работать.
    Если же все таки хочется все повесить на 443 порт включая и другие сервисы, то видимо надо разворачивать обратный HTTPS прокс - nginx и т.п. Т.е. со стороны сервера будет сначала NAT на роутере, на котором настроен проброс на nginx, а там уже на stunnel. Цепочка получается довольно длинная, я бы не заморачивался, если заработает на произвольном порту. Не уверен, но может быть тот же stunnel может работать как обратный прокси, я им давно уже не пользовался. Тогда на stunnel можно завернуть и другие HTTPS службы.
    Не совсем понятно, зачем вам WireGuard, можно трафик завернуть в простой GRE туннель без шифрования и его уже заворачивать в stunnel. Впрочем дело ваше.
    Написано
  • Как маршрутизировать обернутый в https трафик WireGuard?

    @res2001
    Роман, У вас же там stunnel - настройте любой порт какой вам нравиться.
    Кстати порт на NATе может не совпадать с портом stunnelа на сервере, т.е. внешний порт роутера на который будет приходить клиентский трафик может отличаться от порта сконфигурированного в stunnel на сервере - NAT при пробросе подменит порты.
    В stunnel клиента надо, конечно, указывать порт сервер, который на роутере будет.
    Написано
  • Как маршрутизировать обернутый в https трафик WireGuard?

    @res2001
    Роман, Где в схеме интернет? Полагаю интернет между клиентом и микротиком.
    Значит на микротике настроен NAT. Просто в NAT настраиваете проброс портов и указываете внутренний адрес и порт вашего сервера. Все. Тут даже маршрутизировать ничего не надо, т.к. сервер и микротик, видимо, находятся в одной локальной сети - у них прямой доступ друг к другу без маршрутизации.
    Написано
  • Как можно перенести установленную программу с одного компьютера на другой?

    @res2001
    Помимо перенести файлы и зарегистрировать dll нужно еще и перенести ветки реестра, которые использует программа. Как правило виндовый софт свои настройки хранит в реестре.
    Но это все для относительно простых программ. Более сложные варианты могут, например, устанавливать в систему свои драйвера ...
    Написано
  • Возможен ли SelfInterface NAT?

    @res2001
    Для начала разрешить пересылку пакетов: net.ipv4.ip_forward
    Можно NAT на ВПН интерфейс повесить.
    Или настроить маршрутизацию на ВПН клиенте. Клиент, видимо, ничего не знает о вашей сети за ВПН, поэтому ответные пакеты идут не туда. Некоторые ВПН сервера умеют добавлять маршруты клиентам (OpenVPN например) при подключении.
    Написано
  • Непонятная ошибка G++?

    @res2001
    Haaaaz, Не думаю, что ошибка тут в разных слешах. Винда давно уже нормально переваривает оба варианта, но учитывая, что у вас g++, а это все таки инструмент из мира юникс, то могут быть нюансы. Хотя я никогда не сталкивался с проблемами из-за разных слешей. Обычно всегда использую unix вариант слеша.

    На скрине реальной ошибки нет, есть только команда и итог "Build error", но причины нет.
    Если в IDE другой информации нет, попробуйте запустить ту же команду (скопируйте из IDE) в cmd.exe.
    Тут же можете поправить слеши, приведя их к стандартному для ОС виду.
    Запускайте только вторую команду там где собственно вызов g++, chcp не нужно. chcp добавляет IDE для собственных нужд - чтоб корректно отображать вывод команды.
    Написано
  • Как обеспечить себе стабильный интернет на ноутбуке?

    @res2001
    Сейчас то какой интернет используете?
    Университетский WiFi? Или раздаете с телефона?
    При большом скоплении народа оба варианта плохие, т.к. полоса пропускания ограничена и она делится между всеми пользователями, а пользователей много.

    Мобильный роутер будет работать примерно так же как и раздача WiFi с телефона. Разве что попробовать другого оператора, но без гарантий.

    Тут хороший выход - это проводной интернет, но, видимо, это не ваш вариант.
    Написано
  • Как запустить скрипт cmd на КД?

    @res2001
    Помимо прав, отличие от ручного запуска заключается в том, что текущий каталог для батника будет другим.
    По моему это c:\windows\system32 если правильно помню.
    Если в батнике используются относительные пути, то он может не работать из-за этого.

    Батник достаточно легко отлаживать - добавьте отладочного вывода в ключевых точках с перенаправлением в файл. Файл куда перенаправляете отладочный вывод указывайте полным путем (не относительным), иначе либо не сработает из-за отсутствия прав либо будете искать где этот файл создался.

    Вообще для батников, запускаемых через планировщик полезно перенаправлять вывод всех операций в файл, т.к. консоли вы не увидите никогда, а знать что там происходит иногда бывает полезно. Особенно когда случаются какие-то сбои/ошибки.
    Написано
  • Как синхронизировать процессы используя только std?

    @res2001
    maaGames, Думаю в std вряд ли появятся стредства IPC, т.к. любой язык программирования обычно оперирует в терминах одного приложения, а тут IPC нет в принципе.
    Вон даже сокеты не завезли в std, хотя казалось бы - API давно устоялся и примерно похож на разных платформах и есть куча кроссплатформенных реализаций.
    Удивительно, что файлы есть :) но тут уж, видимо, отказаться было нельзя - программисты не поймут.
    Написано
  • Как синхронизировать процессы используя только std?

    @res2001
    maaGames,
    например, когда два приложения пишут в один файл или в одну консоль

    Тут напрашивается промежуточное приложение, которое будет единолично писать в файл/консоль, а ваши приложения будут скидывать информацию для записи ему.
    Например по такому принципу работает логирование в линуксе - через демон rsyslog или что-то еще зависит от дистрибутива. Скидывать информацию демону можно через те же сокеты или пайпы или еще как-то.
    В варианте с записью в файл можно поиграть с блокировкой областей файла перед записью, не уверен, что получится, но попробовать можно. В линуксе такой функционал есть, есть ли в винде - не знаю. Но это тоже работа с API ОС.

    Можно самому озаботится написанием кроссплатформенных оберток над нужным вам функционалом. Например разделяемая память, именованные каналы или какие-нибудь семафоры - можно довольно легко завернуть в кроссплатформенный API.
    Написано
  • Как синхронизировать процессы используя только std?

    @res2001
    maaGames, атомикам вообще пофигу на процессы и потоки, они работают на уровне физических ядер процессора и им наплевать код какого процесса/потока выполняется в данный момент на разных ядрах. Главное, чтоб в обоих процессах было обращение к одному и тому же атомику, поэтому он должен быть в разделяемой памяти.
    А барьерам памяти так и вовсе ничего нигде хранить не надо - это просто ассемблерная инструкция, заставляющая текущее ядро процессора синхронизировать свой кэш с другими ядрами.

    Да, разделяемой памяти в std нет.
    Написано
  • Как синхронизировать процессы используя только std?

    @res2001
    maaGames,
    Не большой знаток Линуксов, там поток и процесс равнозначны в плане работы std::mutex?

    Нет, мьютексы в рамках потока работают и реализованы они в pthread, что как бы намекает на потоки.
    Хотя в линуксе поток от процесса по сути отличается только тем, что в процессе изолированное адресное пространство.
    Теоретически можно было бы положить мьютекс куда-нибудь в разделяемую память, но он все равно не будет работать в разных процессах, т.к. там внутри указатели.
    В общем требуются специализированные средства синхронизации между процессами, заточенные под это.

    Кстати, атомики и барьеры есть в std. Можно положить в разделяемую память атомик. Можно так реализовать простенькую блокировку. Правда на атомике нельзя будет пассивно подождать освобождения ресурса, только активное ожидание - спинлок.
    Написано
  • Почему портированная софтина перестала запускаться требуя NTFS раздел?

    @res2001
    Попробуйте отследить что проверяет софтина, перед тем как выдает это сообщение.
    Проверять она может реестр, файловую систему, переменные окружения, запрос в интернет.
    Средства для мониторинга обращений к реестру или файловой системе есть в составе SysinternalsSuite
    Можно сравнить логи обращений к реестру и файловой системе с компом, на котором софтина работает.
    Переменные окружения - сравните с компом где софтина работает нормально.

    Если софтина лезет в интернет - это можно увидеть сниффером. Так же сравнить запросы с работающим вариантом.

    Возможны и другие варианты проверок, например софтина пытается прочитать лицензионный ключ с какого-нибудь носителя. Но тут уже ничего сказать нельзя без большей конкретики.
    Написано
  • Не удаётся продолжить выполнение кода, поскольку система не обнаружила sfml-graphics-d-3.dll. Как исправить ошибку?

    @res2001
    В винде dll библиотеки, используемые программой, должны лежать в том же каталоге, где исполняемый файл, либо по одному из путей, указанных в переменной окружения PATH.
    Написано
  • Почему в c++ еще нету Null-Conditional Operator?

    @res2001
    Dyikot,
    Но это же можно использывать по ситуации.

    Писалось же выше, что в большинстве случаев обработкой в одну строку не обойтись и должна быть реакция как на ==NULL так и на !=NULL.
    Так что чаще всего ситуации, где предложенный вами оператор пригодился бы в С/С++, не случится вовсе. Поэтому его до сих пор в языке и нет.
    Написано
  • Почему в c++ еще нету Null-Conditional Operator?

    @res2001
    Для указателей, которые не могут быть NULL есть ссылки.
    Обычно, когда указатель NULL, то должно быть то же какое-то альтернативное действие - выдать ошибку или еще что-то, так что таким простым вариантом обычно не обходится.
    Кроме того, то что вы предлагаете не трудно сделать на шаблонах или макросах. Выглядеть это будет не так, само собой, но эффект тот же.
    Написано
  • Непонятная ситуация с терминалами, нормально ли это?

    @res2001
    Regven, Вместо каспера, как правило хватает стандартного Windows Defenderа, который есть из коробки.
    Не совсем понятно, почему винда захотела "создать новый рабочий стол" да еще и лагать начала.
    Ну сам по себе новый рабочий стол - это ничего криминального.

    А вот лаги, да самопоявляющиеся окна CMD - это подозрительно.
    Я бы проверил через менеджер задач процессы с подозрительной активностью, так же не повредило бы и проверить на вирусы, но не из винды, а используя загрузочную флешку с антивирусом.
    У каспера того же по моему есть или был такой готовый комплект, так же и у Dr.Webа имелся. Но я уже давно не пользовался, так что даже названия с ходу не скажу.
    Написано
  • Надежный VPN клиент в виде либы?

    @res2001
    Xavisonell, Не тыкну. Тут будет многое зависеть от того как вы будете это настраивать. В итоге вам надо получить автоматическую настройку у клиента в каком-либо виде. Начните с ручной настройки, когда процесс освоите, решите для себя как конкретно будете реализовывать разворачивание ВПН у клиентов.

    Сам я достаточно много использовал раньше OpenVPN. Он все это умеет - работать как сервис без GUI на винде и в линуксе. Имя сервиса может быть изменено стандартными системными средствами при установке сервиса или потом. Тип запуска сервиса - это то же относится к общесистемному администрированию и зависит от ОС, а не от вида ВПН.
    Wireguard я плотно не использовал, но там +- то же самое.

    Если вам не нужен ВПН за бугор, то внутри РФ не должно быть проблем с блокировкой. Хотя сейчас вообще интернет часто штормит во многих регионах, даже и без ВПН.

    Есть еще OpenConnect (ocserv), его вроде бы пока не научились блокировать и можно с ним за границу ходить. Но тут у меня вообще пока мало опыта, хотя я сейчас пытаюсь его использовать вместо OpenVPN. Но еще мало кейсов с ним у меня было. Кстати, у ocserv несколько вариантов клиентов от разных производителей, возможно у него есть клиентская библиотека на которой они все базируются. Но это лишь предположение, т.к. мне это без надобности, то в эту сторону я не копал.
    Написано
  • Надежный VPN клиент в виде либы?

    @res2001
    Xavisonell,
    клиент изначально рассчитанный на использование человеком

    Вообще для ВПН GUI - не обязательная часть. Тот же openvpn или wireguard прекрасно могут обходиться без него. А если вы еще и сконфигурируете его "автоматически" и сервис настроите на запуск/остановку вручную со своим собственным не стандартным именем сервиса, то клиент может никогда его и не увидеть.
    Конечно пытливый пользователь сможет о нем узнать по дополнительному процессу и сетевому адаптеру в системе и т.п. , но у вас вроде бы нет цели это скрывать.
    Написано
  • Надежный VPN клиент в виде либы?

    @res2001
    По моему концепция ВПН не вписывается в "использование в моем коде". ВПН - это максимальное абстрагирование от конечного пользователя, чтоб любое приложение могло использовать ВПН канал прозрачно. Поэтому ВПН создает виртуальный сетевой адаптер в ОС, который могут использовать любые приложения, используя стандартные средства сетевого обмена, предоставляемые ОС. И тут не важно - ВПН клиент это или сервер - у обоих концепция использования одинаковая.
    Для автоматизации настройки любого ВПН можете для пользователя сделать скрипт, который будет запускать и настраивать ВПН на стороне пользователя. Без встраивания в приложение. Можно встроить установку ВПН в ваш инсталлятор. В само приложение можно встроить функционал запуска и останова службы ВПН.
    Написано