• Установка stunnel какой порт использовать?

    @res2001
    dminster94, 1. 127.0.0.1 - это и есть IP - IP локального хоста. Любой комп может обратится к самому себе по этому адресу. Он есть везде.
    3. Что такая старая то? Сейчас 20.04 актуальна.
  • Установка stunnel какой порт использовать?

    @res2001
    dminster94,
    1)установка опена с айпи серва или 127 на сервер?
    2)создание файла клиент.опен с айпи серва или 127?
    3)установка стуннел,так он не ставится....логи кидал только вот получилось на 16.04(не создается папка стуннел так и пишет) зеленым горит,но стунел сервис фейлд.
    4)файл .пем переносить с серва на винду ?возможно и файл стунел.конф надо перенести с сервера на винду,потому что на винде как раз таки эти порты и прописаны которые он перебирает
    5)в сертификате спрашивают какой у вас Name Unit мне писать айпи серва или 127?
    6)мне тут посовтеловали опен +айпитаблес имели дело с настройкой?

    1,2. Вы же собираетесь завернуть трафик openvpn в stunnel, поэтому openvpn работает со 127 интерфейсом, а stunnel с обоими. Одинаково и на openvpn сервере и на клиенте.
    3. Не понял, куда не ставится, что такое 16.04? Если "сервис фейлд" то надо смотреть логи, там должна быть указан ошибка более детально, либо вы тут не все пишете.
    4. По ключам в stunnel ниже. У вас сейчас явно не хватает параметров. В таком виде не заведется.
    5. Пофигу, можете там написать vasia, это не обязательно IP. Для stunnel имя вообще пофигу, а в openvpn по имени сертификата (CN) можно делать специфические настройки для конкретного клиента.
    6. iptables - это линуксовый фаервол, я ниже пишу про это. Если у вас на линуксе включен фаервол, то он может блокировать трафик, даже если все настроено верно (но у вас пока не верно), поэтому его то же надо подкрутить. По линуксовому фаерволу у меня особо нет опыта. Но вам нужно открывать порты в фаерволе не для openvpn, а для stunnel, т.к. в вашей конфигурации stunnel смотрит на ружу. Openvpn работает с 127 интерфейсом - это локальный интерфейс компьютера там разрешен весь трафик по умолчанию.

    Последние 2 конфига openvpn для сервера и клиента похожи на рабочие.
    На всякий случай: в конфиге клиента опции cert и key должны описывать ключи клиента, они не должны быть теми же самыми, что ключи сервера; опция ca - один и тот же сертификат на клиенте и сервере.
    Пропишите полный путь к файлам ключей, я думаю в таком виде openvpn не сможет их найти (это конечно зависит от того где они лежат на диске), так же права доступа к файлам ключей должны быть 600, иначе будет ошибка.
    Для проверки работоспособности конфига сервера - стартуете openvpn сервер с указанным конфигом. После старта можно проверить, что в процессах есть процесс openvpn: ps -ax | grep openvpn
    Дополнитель можно проверить, что openvpn слушает адрес 127.0.0.1 TCP порт 1194: netstat -lntp

    По stunnel:
    в конфиге сервера поместите "client = no" в секцию openvpn.
    На сколько я знаю в stunnel так же как и в openvpn для ключей надо указывать 3 опции: ca, cert, key (они оба используют openssl для криптографии, поэтому работа с ключами у них идентична). У вас только одна. Для простоты в stunnel вы можете использовать те же файлы ключей, что и в openvpn - безопасности это не прибавит, но вы же не для этого все это затеяли. Или другие, тут особой разницы нет.

    Дальше стартуете в такой последовательности: openvpn сервер, stunnel сервер, stunnel client, openvpn client. Пока схема не отлажена лучше в ручную.
    Если ошибок при старте нет - проверяем пинг с клиента на сервер по внутреннему ВПН адресу сервера: ping 10.8.0.1
    Если не работает - идем в /var/log и смотрим логи, ищем там ошибки. По ошибкам, как правило, более-менее ясно, где они возникли и что делать для исправления ситуации.

    Возможно понадобиться открыть порт 443 в фаерволе на внешнем интерфейсе.
  • Почему выводитт int y, а не double?

    @res2001
    Спрячьте код в тег code, а не в спойлер и верните отступы.
    Приведите полный вывод программы.
    В целом ничего криминального вроде нет.
  • Как определить какая служба потребляет много процессорного времени?

    @res2001
    Nordman99, В менеджере задач на закладке "Детально" (или как там в русской винде), можно добавить поле "Command Line" и например по нему определить, что это за служба. Можно там же щелкнуть правой мышкой по любому svchost и выбрать "Goto Service". Кроме того на закладке Services (Службы) есть PID процесса, работающей службы - по нему вы всегда можете сориентироваться на закладке Details или Processes.

    svchost - это и есть одна из служб. svchost многоликий, он включает в себя сразу пачку служб. Все они работают в разных экземплярах svchost (это видно по обилию запущенных svchost). Друг от друга все они отличаются параметрами командной строки, с которыми запускается svchost (см.первый абзац). Эти параметры конфигурируются в "Службах" (ПКМ на Пуск->Computer Managment->Services and Application->Services).

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

    Если что у меня Win10 х64 Eng, могут быть некоторые отличия в названиях пунктов и т.п. с вашей версией.
    Так же микрософт последнее время регулярно добавляет функционал в менеджер задач, так что возможно у вас чего-то нет. Но, на сколько помню, службы там появились уже достаточно давно.
  • Как определить какая служба потребляет много процессорного времени?

    @res2001
    Кстати, заметил на своем ноуте. После какого-то очередного обновления после первоначальной загрузки винда стала конкретно грузить диск (у меня обычный HDD). После нескольких минут (10-20) это проходит и дальше работа идет в обычном режиме. Грузят службы WinUpdate, SysMain и т.п. Ошибок нет. Можно, конечно, остановить службы, но не хочется. Можно попробовать переустановить винду, но не факт что поможет и просто лень.

    Предполагаю, что таким образом микрософт пинает меня, чтоб я менял свой старый винт на SDD :-)
    Они сговорились с производителями SSD :-)
    Придется купить SSD, т.к. винда нужна для работы. Да и давно уже хотел это сделать :-)
  • Как определить какая служба потребляет много процессорного времени?

    @res2001
    RtlFreeUnicodeString - это системная API функция, которая находится в ntdll.dll. Эту функцию может вызывать любое приложение или поток (что видно на одном из скринов). Думаю, что тормозит не конкретно эта функция, а тот кто ее вызывает. Видимо вызовов идет слишком много - это может грузить систему. Но вам эта информация вряд ли как-то поможет.
    У вас слишком много не нужной информации из Process Hacker 2. Она вообще мало кому может помочь, кроме разработчиков микрософт и т.п.
    Для диагностических целей в рамках возможностей обычного пользователя винды достаточно стандартного мнеджера задач.
    Обычно находят процесс, грузящий систему. Если это служба, то выходят на службу (менеджер задач это позволяет делать). Далее смотрят журнал винды на предмет сообщений с ошибками от этой службы. Если сообщения есть - гуглите по коду/тексту сообщения. Если сообщений нет - гуглите по "служба <имя службы> тормозит винду". Бывает что подобный гуглеж к чему-то приводит, бывает, что все бесполезно.
    Удачи!
  • Установка stunnel какой порт использовать?

    @res2001
    dminster94, Не нужно видео, это слишком долго.
    Настройте уже все руками, там не так все страшно. Вы уже неделю топчетесь на месте, там дел на пару часов.

    Чтоб были нормальные ответы вы должны дать конфиги и логи где есть ошибки (клиента и сервера, в текстовом виде) с вашими комментариями к ситуации.
  • Установка stunnel какой порт использовать?

    @res2001
    dminster94,
    у меня client и сервер это же один и тот же файл я его беру с серва подключаю к опену на винде

    Это не может быть один и тот же файл. В таком варианте вы создаете 2 сервера.
    Сертификаты и ключи для клиента и сервера разные? Одинаковым должен быть только сертификат CA.
    Конфиг сервера, конечно, какой-то куцый, но в принципе может и заработать. Можете попробовать на одном компе запустить и клиент и сервер openvpn, они должны подцепиться друг к другу. Значит конфиги рабочие и можно перехдить к stunnel.
    Включите логирование openvpn на сервере и клиенте, запустите его, проверьте состояние службы с помощью systemctl status openvpn

    По этой ссылке (https://www.easycoding.org/2019/03/21/primenyaem-s...), которую вы приводили в одном из сообщений, описан вариант, который предлагал я тут.

    stunnel.service - TLS tunnel for network daemons
    Loaded: loaded (/usr/lib/systemd/system/stunnel.service; enabled; vendor preset: dis>
    Active: inactive (dead) это systemctl status stunnel

    Это говорит о том, что служба stunnel зарегистрирована в systemd, но не запущена. Скорее всего из-за ошибки. Ошибки смотрите в логах. Возможно подробное логирование надо сначала включить в конфиге.

    Выложите конфиги stunnel. Выкладывайте в текстовом виде, так проще читать и логи то же. Странно, что в последнем логе stunnel он перебирает порты. Он не должен так поступать.
    Что это у вас за клиент OpenVPN. Стандартный клиент для винды выглядит по другому.
  • Почему не работает TCP чат?

    @res2001
    Андрей, Отлично! Верной дорогой идете.
    Вам нужно заново осмыслить проблему. Понять как сейчас все работает, и как должно работать у вас.
    В целом, в предыдущем ответе я накидал картинку. Вам нужно во всем этом разобраться.
  • Почему не работает TCP чат?

    @res2001
    Андрей, И не должно работать.
    У вас неинициализированный буфер (buffer), что вы отправляете в нем клиенту? - Мусор. И на что надеетесь?

    Весь обмен с клиентами происходит в отдельном потоке. На каждого клиента свой поток. Вам нужно вносить новый функционал в функцию serve_client() - она отвечает в сервере за обмен со своим килентом.
    Учитывая, что сервер многопоточный и каждый поток работает с одним своим клиентом, то для обмена информацией между разными клиентами вам нужно наладить какой-либо вариант многопоточного взаимодействия.
    Так что добавлением 3 строк в код вам не переделать эхо сервер в чат.
    Сейчас в сервере каждый поток - независим, он работает только со своим клиентом, на других ему наплевать. Никакого многопоточного взаимодействия тут не реализовано (т.к. не нужно). А вам это нужно.

    Я бы на самом деле реализовал это по другому - с помощью неблокирующих сокетов в одном потоке.

    Кстати. Реализация функций в вашем шаблоне очень похожа по стилю с примерами из книги Стивенса "Unix. Разработка сетевых приложений". Можете поискать книгу в электронном виде, примеры из нее то же есть на официальном сайте автора. Книга хоть и старая, но вполне актуальна. Рекомендую для освоения сетевого программирования.
  • Как определить переменную среды Environment?

    @res2001
    Круто! Не знал, что в винде появилась такая команда. Интересно, с какой версии винды она появилась. Вы не в курсе?
  • Почему не работает TCP чат?

    @res2001
    Изменений 0

    Было бы 0, наверное работало бы. Может код изначально не рабочий?
    Что конкретно не работает? Ошибки при сборке? Падает? Что на экран выдает? Давайте больше деталей.
    Портянка большая, не многие захотят ее читать, и еще меньше тестировать у себя.
  • Как реализовать атамарность в MongoDb?

    @res2001
    HellishCode, Ну добавляйте в отдельную коллекцию флаг типа я отправляю с временной меткой и уникальным номером экземпляра. Сделайте индекс по timestamp.
    1.Перед добавлением читайте флаги с timestamp позже на 5 мин текущего времени. Если возврат не пустой - отправлять нельзя.
    2.Если возврат пустой - добавляйте свой флаг
    3.Повторно читайте флаги с timestamp позже на 5 мин текущего времени, если вернулся только ваш 1 флаг, значит можно отправлять. Если флагов больше 1, значит кто-то уже вклинился и отправляет. Этому экземпляру отправлять нельзя.

    В коллекцию только добавляете, ничего не удаляете.
    Можно глобально удалять по расписанию. Удалять записи позже на 5 мин текущего времени.

    Как-то так.
  • Как реализовать атамарность в MongoDb?

    @res2001
    HellishCode, У вас действительно несколько инстансов?
    Ну так может надо какому-нибудь инстансу сказать, что ты будешь отправлять, а остальные пусть не лезут с отправкой.
    Речь идет об электронной почте? Сервер на линуксе? Какой MTA используется? Возможно в МТА есть настройки, которыми можно это отрегулировать (отправлять по 1 письму за раз и период отправлений каждые 5 мин).
  • Как реализовать атамарность в MongoDb?

    @res2001
    HellishCode, Вам нужно что бы только 1 экземпляр приложения попал в базу? Что с остальными? Давайте больше подробностей.
  • Как реализовать атамарность в MongoDb?

    @res2001
    HellishCode, В документе пишут, что любая операция записи 1 документа атомарна. Если вы одним вызовом пишете сразу несколько документов, то атомарными будут операции записи каждого отдельного документа, но не все вместе. И это не зависит от того какую операцию записи вы используете.
    В монге нет транзакций.

    Но тут требуются пояснения чего же вы хотите.
    Вы хотите при чтении заблокировать документ до момента записи?
    Кто будет освобождать блокировки, если запись никогда не состоится (клиент упал, связь кончилась, подставь свое)? Такой подход добавляет лишний геморрой. Оно вам точно надо?
  • Как оценить собственное знание С++?

    @res2001
    deuxexdeex, семантика перемещения, лямбды, ООП.
    Из std - структуры данных, алгоритмы, atomic, threads
  • Установка stunnel какой порт использовать?

    @res2001
    dminster94, На счет связки openvpn + stunnel.
    Вы должны настроить openvpn на сервере слушать только адрес 127.0.0.1 на каком-либо TCP порту.
    На openvpn клиенте сервером указываете так же адрес 127.0.0.1 с таким же портом на сервере.
    В этой связке stunnel будет осуществлять внешнее соединение и передавать полученные данные openvpn. Поэтому все внешние адреса прописываются в конфиге stunnel на обеих сторонах.
    Схема примерно такая:
    OpenVPN client (proto tcp4; remote 127.0.0.1 12345)
    |
    stunnel client (client = yes; accept = 127.0.0.1:12345; connect = 204.48.XX.YY:443)
    |
    stunnel server (client = no; accept = 204.48.XX.YY:443; connect = 127.0.0.1:12345)
    |
    openvpn server (proto tcp4; port 12345; local 127.0.0.1)