Задать вопрос
  • Как настроить VPN сервер на одном сервере с несколькими IP адресами?

    @res2001
    Dubrovin, На убунту это вполне можно организовать с помощью openvpn и правил iptables.
  • Как найти значения отдельных составных частей?

    @res2001
    BMinhoj, У вас выводятся странные знаки, потому что ваши переменные s,d,f,b имеют тип char и стандартная библиотека пытается честно вывести какой-то символ. А вам нужен не символ, а число. Просто преобразуйте перед выводм char в uint32_t. Или сразу эти переменные делайте uint32_t.
  • RAW-сокеты и API сетевых устройств в Linux. Какая есть литература?

    @res2001
    RST001, Книг не посоветую. У меня не было опыта в написании сетевых драйверов под линукс. Был опыт под QNX. Но уверен, что принципы в линукс примерно аналогичные.
    Сокеты Беркли - это пользовательский уровень. Драйвер не работает в этих терминах. В драйвер будет приходить просто буфер на отправку. Точно так же вы должны используя API передать полученный буфер на вышестоящий уровень. Вот и все. Никаких сокетов.
    Берете существующий драйвер и переделываете его под свое железо. Какие у вас "конкретные нужды"? Для сетевых Ethernet адаптеров все нужды одинаковые, отличаются только железные реализации. Проще всего найти драйвер для железки того же производителя, что и ваша, и переделывать его. В этом случае, вероятно, изменений будет не много.
    Кстати, если есть драйвер с открытыми исходниками под другую ОС, то возможно будет проще адаптировать его под Линукс, чем менять драйвер от другой железки.

    Я сам писал драйвер именно таким образом. Из всей литературы у меня была только небольшая обзорная статья в документации ОС по этой тематике с примером "виртуального" драйвера, несколько вариантов драйверов под другие железки для QNX и драйвер под мою железку для Линукс. В общем из всего этого конструктора собираешь свой велосипед.
  • Как сетевой адаптер различает категорию витой пары?

    @res2001
    Операторы никогда не гарантируют скорость до конечной точки трафика (это просто не возможно).
    Они гарантируют только скорость от клиента до собственного оборудования ("последняя миля"). А дальше - как повезет. И это касается всех операторов, не только в РФ, но и во всем мире.
  • Как сделать вывод переменных в текстовый документ?

    @res2001
    В любом учебнике по Си это разбирается.
  • RAW-сокеты и API сетевых устройств в Linux. Какая есть литература?

    @res2001
    RST001, Сам по себе MDIO - это стандартизированный интерфейс/протокол обмена запросами/ответами ЦПУ и PHY.
    Запросы это просто прочитать/записать регистр PHY для некоторого порта.
    Но возможности у разных реализаций PHY разные. Регистры PHY стандартизированы лишь частично. Поэтому в зависимости от PHY возможности программного управления могут быть разными.
    При этом API MDIO меняться не будет, будут меняться только номера регистров и поля в этих регистрах.
  • Почему можно назначить значение полю структурного временного объекта?

    @res2001
    Тут еще замешалось что-то связанное с тем, что struct test.i - это массив. Если убрать массив из структуры и сделать просто int, например, то поведение изменится.
  • Какие есть способы установки приложения в тихую\автоматически?

    @res2001
    ettaluni,
    Там столько труда нужно приложить чтобы все сделать какой то упаковщик

    Так и есть. Если производитель не позаботился, то сделать свой собственный repack с возможностью тихой установки для сколько-нибудь сложного ПО - это может быть достаточно не тривиальная задача.
    Другое дело, что обычно для сложного ПО есть подобные возможности.
  • Заинклудить из Windows.h только Sleep()?

    @res2001
    kaktak255,
    но у меня и без него работает эта функция из synchapi.h

    Я и писал, что можно инклудить synchapi.h или выдернуть оттуда объявление функции.
    Собственно, зачем ты инклудишь какие-то заголовки - затем, что там содержаться предварительные объявления функций (не только они естественно). Ты запросто можешь не использовать заголовочный файл, а сам в собственном коде сделать это предварительное объявление.
    Ты может спросишь: "Зачем компилятору нужны эти предварительные объявления"? Они нужны потому что компилятор должен сформировать правильный код вызова функции: положить в стек в правильном порядке нужного типа аргументы функции, возможно, с предварительным приведением типов, а так же получить возвращаемое значение функции правильного типа.
    Тут стоит понимать, что компилятор С++ при компиляции файла исходного кода никогда не заглядывает вперед по файлу (или проекту), поэтому все сигнатуры функций (и типы данных) должны быть известны до первого использования в коде. Так же при компиляции проекта, состоящего из нескольких файлов, каждый файл компилируется отдельно и в этом процессе компилятору не известно, что у тебя там в соседних файлах.

    Кстати, в языке Си существует такой странный анахронизм - если для функции нет предварительного объявления, то компилятор считает, что эта функция принимает один параметр типа int и возвращает то же int. Т.е. там можно вызывать любую функцию без предварительного объявления. Но это не значит, что это будет правильно работать, если реальная сигнатура функции отличается от "умолчальной". Но вызвать можно. Интересно, эту баго-фичу случаем не пофиксили в последних стандартах?
  • Как на VPN сделать чтобы при переключении провайдера - сохранялся коннект и ip?

    @res2001
    samokiller, В дополнении ко второму варианту - QUIK можно запустить под Linux под wine. В этом случае не придется платить еще и за аренду винды. Работает вполне нормально. Правда местами шрифты криво отображаются кракозябрами - в окне со всплывиющими сообщениями. Но в остальном все нормально.
  • Как на VPN сделать чтобы при переключении провайдера - сохранялся коннект и ip?

    @res2001
    ComodoHacker,
    TCP сессия будет разорвана в любом случае.

    Не разорвется, если ВПН клиентом будет роутер, а не компьютер с QUIKом.
    Может разорваться только по таймауту.

    Кстати, второе предложение (QUIK на VPS) годится. Только надо продумать схему, чтоб ключи не хранить на VPS. И стоить аренда такого VPS будет больше, скорее всего.
  • Linux IDE eclipse c++. Как открыть и скомпилировать данный пример?

    @res2001
    dR2nrWs5TC, Зря ты кипятишься. Ссылка нормальная, все для создания нового проекта там написано. Если у тебя что-то не выходит - задавай более конкретные вопросы.
    Сначала я написал ответ, а потом посмотрел ссылку. Если бы раньше посмотрел, то ответ, пожалуй, и не писал бы.
  • Для чего эта команда?

    @res2001
    JTester,
    а он не запускается

    Опишите как вы запускаете скрипт.
    Вообще start.cmd - плохое название для батника, т.к. в cmd.exe есть команда start. Имеет смысл переименовать скрипт.
  • Настройка доступа к локальной сети Openvpn?

    @res2001
    Evgeniy Garkov, В конфиге сервера у вас используется опция client-config-dir, следовательно в /etc/openvpn/ccd должны быть файлы конфигурации клиентов. В этом случае для конфигурации сети за клиентом А нужно добавить в его файл конфигурации (в каталоге /etc/openvpn/ccd) опцию:
    iroute 192.168.1.0 255.255.255.0
    Эта опция добавит маршрут на ВПН сервер до сети за клиентом А при подключении клиента.
    push "route 192.168.31.0 255.255.255.0"
    Эта опция добавит маршрут клиенту А до сети за клиентом В.
    По идее тут же должна быть опция для назначения статического адреса клиенту А:
    ifconfig-push 10.8.0.2 255.255.255.0
    Без постоянных адресов, настраивать маршрутизацию в других сетях проблематично.
    Аналогичные настройки надо сделать и для клиента В.

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

    Следующий этап - настройка клиентских сетей.
    Если клиент А или В каждый в своей сети является шлюзом по умолчанию, то никакой дополнительной настройки сети не нужно.
    Если же клиент А или В в своей сети не является шлюзом по умолчанию, то нужно любым доступным способом на все компы сети добавить маршрут к сети соседа через своего клиента. Конечно этот маршрут на самого клиента добавлять не надо. Например для компов в сети за клиентом А нужно добавить маршрут до сети 192.168.31.0/24 шлюзом будет выступать клиент А. Аналогично для сети за клиентом В.
    Массово раздать маршрут можно несколькими способами, например: как опция при раздаче IP адресов в DHCP сервере, другой вариант - с помощью GPO, если в сети развернута AD, и т.п.
    Кроме того, стоит аналогичным образом добавить маршрут для ВПН (10.8.0.0/24) сети в обоих сетях.

    После подобных настроек доступ из одной сети в другую должен работать. Так же должен быть доступ с ВПН сервера в обе сети.

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

    @res2001
    Руслан, Да, у вас в локальной репе будет клон оригинального мастера.
    Да, в локальной репе будет хранится и ваша ветка.
    Локальный репозиторий можно связать с кучей разных удаленных репозиториев. По сути это просто означает, что в конфиг локального репозитория вы добавляете записи о других удаленных репозиториях. И их можно использовать в командах git.
    В локальном репозитории настраивается несколько удаленных репозиториев с которыми он может синхронизироваться:
    git remote --help
    При клонировании оригинального репозитория у вас автоматически добавится запись origin с соответствующим URLом. Свой удаленный репозиторий вы должны будете добавить сами через git remote add. Когда на github создаете новый репозиторий, то он там предлагает несколько вариантов инициализации локального репозитория с этим, один из вариантов - команда git remote add, используйте эту подсказку github (если вы его используете).
    При обновлении мастера будете указывать origin, при пуше своей ветки - свой удаленный репозиторий.
  • Как модифицировать обновляемый клон чужого проекта?

    @res2001
    pfemidi, Можно и merge, главное не менять master.
    Но я бы делал интерактивный rebase. Как мне кажется, rebase, в данном случае, выглядит более простым и логичным вариантом.
  • Настройка доступа к локальной сети Openvpn?

    @res2001
    Evgeniy Garkov, Вариант добавления маршрутов в конфиги зависит от типа конфигурирования клиентов.
    Вы используете опцию client-config-dir в конфиге сервера и есть ли у вас файлы конфигурации клиентов в каталоге, указанном в этой опции?
  • Настройка доступа к локальной сети Openvpn?

    @res2001
    mureevms, Это лишь настройка по умолчанию, которую можно и нужно изменить.
    Я обычно использую topology subnet - это создает "обычную" ВПН подсеть, при этом ВПН серверу присваивается первый адрес из этой подсети, а клиентам распределяются остальные. У автора, возможно, настроено так же.
    К слову топология по умолчанию объявлена deprecated с версии OpenVPN 2.3.
  • Как подтянуть С++ до современного уровня?

    @res2001
    Михаил Макаров,
    Так то мне куда интереснее C++17 и выше.

    Вы видите это обилие книг по С++11/14, которые вам накидали тут? Это много говорит о том как быстро выходят книги на русском языке.
    К слову книга по моей ссылке в последнем издании 2020 года содержит изменения и С++17. Но их там не много - у меня оба издания есть, могу сравнивать.

    Лично мое мнение - самое главное изменение произошло в С++11 - это введение rvalue ссылок и семантика перемещения (это одно изменение) - это описано у Скотта Мейерса хорошо. С++14 только немного дополняет и доводит до ума некоторые вещи из С++11. У Мейерса описаны и другие изменения в С++11/14.

    17 и 20 стандарты придется изучать из статей в интернете или из англоязычных книг. В любом случае последние стандарты строятся на предыдущих и они никуда не делись. Тот же С++03 никуда не делся - большая часть языка вполне соответствует С++03.