• Как подключиться по ip из одной подсети в другую?

    @res2001
    Дмитрий, Ок. Значит интернет маршуртизатор находится в сети 192.168.1.0.
    Тогда на маршрутизаторе 192.168.1.26 NAT не нужен в принципе. Он на интернет шлюзе уже есть. Внутренние сети NATить не нужно. Просто прописываем маршруты.

    Что надо сделать:
    1. На маршрутизаторе 192.168.1.26:
    1.1. Выключить NAT в Ideco
    1.2. Установить значение в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter в 1
    Если значение уже равно 1, то ничего не делаем.
    Если параметра IPEnableRouter в этой ветке нет, то надо его создать вручную, тип параметра REG_DWORD.
    Думаю, что у вас тут уже установлена 1.
    Это значение включит маршрутизацию (т.е. разрешит пересылку пакетов с одного интерфейса на другой) на компе.
    Если значение было изменено или параметр добавлен, то надо перезагрузить комп, чтоб изменения вступили в силу.
    2. Проверить таблицу маршрутизации на компах в сети 192.168.1.0 (кроме маршрутизатора 192.168.1.26).
    Если в таблице нет маршрута до сети 192.168.100.0, то добавить маршрут.
    2.1. Добавить маршрут к сети 192.168.100.0 через маршрутизатор 192.168.1.26.
    Вручную это можно сделать командой:
    route -p add 192.168.100.0 mask 255.255.255.0 192.168.1.26

    Если адреса на компах в сети 192.168.1.0 выдаются динамически, то можно этот маршрут добавить в опции DHCP, тогда он будет распространятся автоматически. Для тех же целей можно использовать GPO, если в сети развернута AD.
    3. Для компов внутри сети 192.168.100.0
    3.1. Думаю, что в этой сети у вас на компах шлюзом по умолчанию назначен 192.168.100.1, в этом случае ничего делать не нужно
    3.2. Иначе нужно прописать маршрут до сети 192.168.1.0 через 192.168.100.1, аналогично п.2. Или назначить шлюзом по умолчанию 192.168.100.1.
    4. На интернет роутере 192.168.1.1 нужно добавить статический маршрут до сети 192.168.100.0/24 через шлюз 192.168.1.26. Оюбычно это делается через веб интерфейс. Возможно так же понадобиться добавит в фаервол на роутере разрешающие правила для сети 192.168.100.0.
  • Как подключиться по ip из одной подсети в другую?

    @res2001
    Дмитрий, Перед шлюзом с какой стороны? У интернет маршуртизатора какой адрес на внутреннем интерфейсе?
    Из вашего пояснения сложно что-то понять, лучше оперировать адресами.
    Получается, что на шлюзе 3 сетевых интерфейса?
    1. 192.168.1.26
    2. 192.168.100.1
    3. интерфейс подключенный к интернет маршрутизатору. Какой адрес?
    Правильно?
  • Как подключиться по ip из одной подсети в другую?

    @res2001
    Дмитрий, У вас этот шлюз какую роль выполняет? Он только маршрутизирует 2 сети? Делает еще что-то? Интернет, например через него ходит?
    NAT вешается на какой-либо сетевой интерфейс. Например на выходе в интернет NAT скорее всего нужен. На интерфейсах внутренних сетей NAT скорее всего не нужен.
    Если при выключенном NAT у вас пинги не идут - значит надо разбираться с маршрутизацией, а не дергать NAT.
    Приведите таблицу маршрутизации на компе из 100 сети и на компе из 1ой сети. route print
    На шлюзе маршруты должны быть, т.к. он имеет адреса из обеих сетей на своих локальных интерфейсах.
    Фаерволы на время работ выключите на всех компах с которыми работаете.
  • Как решить проблему потерь пакетов при пробросе порта на tcp server?

    @res2001
    AlexSer,
    насчет сигналов устройства

    Не знаю, что это за сигналы. В UART таких нет :)
    теперь кажется на стороне TCP сервера

    Протокол TCP обеспечивает доставку данных. Это значит, что если данные попали в сокет, то они по любому будут доставлены (или будет разорвано соединение по таймауту). Так что на стороне сервера вы по любому получите все данные, которые отправил nc. Даже если ваш сервер криво написан и тормозит.
    Но вот nc уже может отправлять далеко не все данные.
    Вообще скорость порта 9600 маленькая, нагрузку на сеть подобный поток вызывает не большую, легко справится даже 100 Мбит сеть.
    Попробуйте со стороны сервера так же запустить nc (вместо вашего сервера), получать данные из сети и писать их в файл. Посмотрите, что будет в файле. Будет ли пропадание данных и т.п. Если в таком варианте с данными будет все нормально - то ваш сервер не справляется.
  • Как подключиться по ip из одной подсети в другую?

    @res2001
    Дмитрий, К слову, дополнительный софт на шлюзе не то что бы нужен. Если он не выполняет каких-то дополнительных, необходимых вам, функций.
    Винда умеет сама маршрутизировать сети (пересылать пакеты с одного интерфейса на другой), а так же виндовый фаервол то же нормально справляется со своими задачами. Это все умеет делать даже обычная десктопная винда Home версии. Я уж молчу про какой-нибудь линукс.
    NAT, DHCP и т.п. сетевые сервисы есть в Windows Server.
  • Как подключиться по ip из одной подсети в другую?

    @res2001
    Дмитрий,
    из 1 в 100 Ответ от 192.168.1.26: Заданная сеть недоступна.
    из 100 в 1 Превышен интервал ожидания для запроса

    Ну вот, а вы писали
    с ПК 100й подсети я могу попасть по IP в 1ю подсеть

    А похоже, что не доступна. Возвращаемся к маршрутизации.

    В вашем случае сети, конечно, внешние по отношению друг к другу, т.к. для связи используется шлюз.
    Наличие или отсутствие NATа никак с этим фактом не связано. Если между сетями только 1 шлюз, то NAT скорее всего не нужен. NAT может быть встроен в ПО шлюза.

    Если NAT есть на одном интерфейсе, то, видимо, в эту сторону вы и можете попадать. А обратно нет - NAT блокирует.
    По уму надо убрать NAT и настроить стандартную маршрутизацию.
  • Как подключиться по ip из одной подсети в другую?

    @res2001
    Дмитрий,
    удаленка это программы anydesk и LiteManager

    Чем не устраивает стандартный виндовый удаленный раб.стол? Впрочем, это к проблеме отношения не имеет.
    ping есть, но только до шлюза

    А что с пингом в обратную сторону? Всегда надо проверять обе стороны, т.к. фаерволы по разному обрабатывают входящий и исходящий трафик, а так же ответы на исходящий трафик.

    И надеюсь NATа на шлюзе все таки нет. Он там не нужен. Разве что между этими двумя сетями есть еще что-то кроме шлюза.
  • Как решить проблему потерь пакетов при пробросе порта на tcp server?

    @res2001
    AlexSer,
    Пример неправильной отправки

    Устройство с той стороны очень часто не может определить слушает ли кто-то порт.
    Оно просто шлет данные в порт, не заботясь о том, есть ли кто-то с той стороны или нет.
    Если у вас как раз такой вариант, то при подключении вы запросто можете попасть на середину отправляемых данных.
    Да, в UART есть управляющие сигналы, с помощью, которых это можно делать. Но часто эти сигналы просто не используются. Для работы последовательного порта RS232 достаточно двух трех проводов, на сколько я помню (RX, TX, GND). RS485 вообще обходится двумя. Все остальное - дополнительные опции, которых может не быть физически.
  • Как решить проблему потерь пакетов при пробросе порта на tcp server?

    @res2001
    AlexSer, Что за устройство у вас там висит?
    Поток данных интенсивный? Подобная портянка за сколько времени накапливается?

    В линуксе по умолчанию все данные с tty прогоняются через фильтры, по моему, это называется line discipline, там идет анализ входных данных на команды терминала (линукс по умолчанию считает, что к порту подключен терминал). Команды применяются и удаляются из данных.
    Вам надо получать сырые данные (raw) и надо все эти фильтры отключить.
    Сделать это можно с помощью утилиты stty. Смотрите man stty
    Команда будет выглядеть как-то так:
    stty -F /dev/ttyACM0 raw
    Тут же можно задать и все остальные параметры порта.
    Есть еще утилита setserial, там то же можно выставлять какие-то параметры.
    Обе утилиты, возможно, надо будет дополнительно установить.

    Возможно с помощью этих утилит можно выставить и размер буфера приема. Размер буфера точно можно регулировать программно с помощью системных вызовов. Но не уверен, можно ли это сделать с помощью утилит типа stty. Возможно есть соответствующая настройка в том же minicom.
  • Wireguard и OpenVPN на одном сервере?

    @res2001
    Попробуйте и напишите результат тут. Будет интересно узнать.
    Сам такой конструктор не использовал, но не вижу причин почему бы им не работать вместе на одном сервере.
    В свое время у меня на одном компе были подняты openvpn, pptp, ipsec, все работало.

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

    @res2001
    rPman, Ограничение в 260 символов сейчас это уже во многом кривые руки программистов. Т.к. все Unicode функции WinAPI, работающие с файлами принимают пути до 32Кб длиной. Старые ASCII функции по прежнему имеют это ограничение в 260 символов. Т.е. по факту достаточно использовать в программе Unicode функции и этого ограничения не будет. Кто знает, какие функции для работы с файлами используются внутри cmd.exe :)
    https://docs.microsoft.com/ru-ru/windows/win32/fil...

    Azat2015, Файлов или каталогов с не стандартными символами в имени нет внутри этих подкаталогов?
    Помнится сталкивался с ситуацией, что какая-то программа создала файлы с неподдерживаемыми символами в имени и ничем эти файлы не удалялись. Удалил с помощью Ubuntu live CD, как советовал Alexander , там поддержка NTFS есть из коробки.

    Кстати, Far manager, возможно, сможет удалить вашу портянку каталогов. Я когда-то сталкивался с похожим случаем, тогда удалилась вся ветка каталогов достаточно просто. Как именно удалял уже не помню. Возможно удалил с помощью Far, т.к. я его активно использую.

    Еще вариант - попробуйте в cmd с помощью cd перейти куда-нибудь в середину вложенности этой ветки каталогов и оттуда удалить все вышестоящие каталоги с помощью rmdir. Или то же самое в Far.
  • Как удалить тысячи вложенных каталогов?

    @res2001
    Попробуйте из проводника удалять зажав Shift - это удалит каталог полностью без возможности восстановления (не будет помещать в корзину).
    Вообще из командной строки с помощью rmdir должно быть возможно удалить каталог. Задайте опцию /s для команды.
    Смтори rmdir /?
  • Как подключиться по ip из одной подсети в другую?

    @res2001
    Дмитрий,
    я из сотой попадаю на файловую помойку с адресом 1.2

    Значит с маршрутизацией все нормально - маршруты везде прописаны.
    Не совсем понятно, что за "удаленка". RDP?
    Попробуйте мой совет выше с отключением фаерволов (только для теста, конечно). Если с отключенными на обеих сторонах фаерволами вы будете нормально подключаться, значит нужно правильно настроить правила фаерволов. Так же возможно вмешивается фаервол на шлюзе.
    Что бы попасть на шлюз из 1ой подсети, вы должны использовать адрес шлюза из этой же подсети (у него же адреса в обеих подсетях есть).

    Для проверки доступности компа проще всего использовать утилиту ping:
    ping <IP адрес удаленного компа>
    Утилита несколько раз пытается проверить доступность удаленного IP с помощью пакета ICMP ECHO Request, ждет ответа на запрос и печатает отчет об этом. Если пинги проходят, то и любой другой трафик будет проходить - вопрос только в настройке фаерволов. Ответы на пинги отправляет ядро ОС (т.е. не требуется что бы на удаленном компе было что-то запущено, кроме ОС), этот функционал встроен в стек TCP/IP, но как ответы так и запросы могут быть заблокированы фаерволом.
  • Как подключиться по ip из одной подсети в другую?

    @res2001
    Руслан Федосеев,
    У вас на шлюзе не прописана маршрутизация.

    Думаю, что это не совсем так, т.к. автор пишет:
    с ПК 100й подсети я могу попасть по IP в 1ю подсеть

    Дмитрий, Прокомментируйте подробней этот момент. Что значит попасть в 1 подсеть? Как вы туда попадаете? Пингуете или еще что? Какие конкретно адреса пингуете и откуда?

    Возможно тут просто правила фаервола блокируют трафик. Попробуйте отключить фаерволы на обоих тестируемых компах (из разных подсетей) и проверьте прохождение пингов в обе стороны.
  • Как решить проблему потерь пакетов при пробросе порта на tcp server?

    @res2001
    AlexSer, Какие полные настройки? Настройки обычные для последовательного порта: скорость, количество бит данных, количество стоповых бит, проверка четности, контроль потока.
    пакеты идут не попорядку

    Там нет никаких пакетов - ttyACM - символьный драйвер, т.е. он работает с каждым передаваемым символом отдельно. В случае если ПО не успевает читать поток байт, то данные теряются, т.к. буфер в драйвере ограниченного размера.

    Что-то я сомневаюсь, что в ttyACM есть известные не исправленные баги. Драйвер далеко не новый, существует в ядре давно. https://www.kernel.org/doc/html/latest/usb/acm.html
  • Как решить проблему потерь пакетов при пробросе порта на tcp server?

    @res2001
    AlexSer, В линуксе все драйвера в ядре. Либо встроены, либо в виде подгружаемых модулей.
    На сколько я знаю, драйвер для ttyACM встроен в ядро, так же как и для ttyUSB и ttyS.
    Так что смена драйвера - это только смена ядра.
    Что за проблема в драйвере?
  • Как решить проблему потерь пакетов при пробросе порта на tcp server?

    @res2001
    AlexSer, Используйте любую программу, которая умеет работать с последовательными портами, например minicom, или что-то еще, их много.

    Можно даже так: cat </dev/ttyACM0
    Но, конечно, порт в системе должен быть правильно сконфигурирован. Программы общего назначения сами не умеют правильно конфигурировать порт, поэтому вы должны об этом позаботится.
    Тот же minicom сам может сконфигурировать порт через свои настройки/опции.
  • Как правильно передавать функцию в качестве параметра?

    @res2001
    Matvey_Mt, Верно.
    Даже если вы попробуете передать автоматический массив, то все равно передается только указатель:
    #define N   10
    void foo(int arr[N]) {}
    ...
    int array[N];
    foo(array);

    Но с автоматическими массивами надо быть аккуратным - имя такого массива не всегда ведет себя как указатель, в некоторых случаях оно ведет себя как массив. Например sizeof(array) из примера выше вернет полный размер массива в байтах, а не размер указателя.
  • Как использовать make на windows?

    @res2001
    voproser45654, В качестве окружения рекомендую связку msys2 + mingw.
    msys2 представляет собой линуксовую командную строку и пакетный менеджер с помощью которого можно установить кучу утилит и библиотек из пакетов. С его помощью ставим окружение для сборки, которое включает в себя в т.ч. и make, и mingw (компилятор).
    Если добавить соответствующие пути в виндовую переменную окружения PATH, то все утилиты будут доступны из командной строки винды. Если добавить виндовые переменные окружения MINGW_HOME и MSYS_HOME (смотри документацию msys2), то msys и mingw увидят разнообразные IDE.

    Другой вариант - WSL. Это полноценная виртуальная Линукс машина, предоставляемая микрософт. Все что собрано в WSL может быть запущено только в WSL. Но в винде много чего сделано для того что бы работа с WSL была достаточно прозрачна для пользователя. Не так давно появилась возможность запускать полноценное графическое окружение внутри WSL и иметь нормальный рабочий стол линукса, параллельно с раб.столом винды. Запускать WSL команды можно и из виндовой командной строки, через утилиту wsl))
  • Сервер-клиент openvpn win не видят за собой локальную сеть. как исправить?

    @res2001
    Слава Кривошейков, Как я и писал выше в такой конфигурации адрес подсети: 172.22.24.0, маска 255.255.248.0.
    Этот адрес и маску указывайте в настройках openvpn.
    PS: Чтоб вычислить адрес подсети надо сделать операцию побитового И над IP адресом и маской.
    PPS: Но что-то я сомневаюсь, что вам реально требуется такая маска. Обычно для разбиения на подсети выбирают такой диапазон адресов (адрес и маску подсети), в который бы помещалось необходимое количество узлов + 10-20% на расширение. Самая распространенная подсеть с маской 24 (255.255.255.0), она достаточно маленькая, ее удобно запоминать и просто вычислять адреса узлов и подсети.