Задать вопрос
Ответы пользователя по тегу Компьютерные сети
  • Возможно ли реализовать одноранговый мультиплеер с защитой от жульничества?

    @rPman
    Проблема византийских генералов, решалась в криптовалютах, успешно только с помощью proof of work.

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

    Если обнаружено расхождение состояний при минимум двух частниках, то игра заканчивается, при трех и более участников можно считать истинными тех участников, количество одинаковых состояний у которых наибольшее, если это определить нельзя - игра заканчивается, иначе возможно исключение виновников
    Это позволит решить:
    * необходимость бороться с подтасовками (изменение своего баланса)
    * необходимость бороться с клеветой (изменение чужого баланса)

    Проблема слежки за секретными параметрами игроков красиво не решается, решив одну проблему получишь другу. т.е. если информация о координатах и жизни противника секретна, и не передавать ее всем участникам по каким то условиям, то игроки могут жульничать в тот момент, когда их 'не видят'. Это частично решается разработкой алгоритма, который смог бы в автоматическом режиме проверить по истории действий, не было ли жульничества, проведя симуляцию игры при раскрытии этой информации. Например все участники передают всю полноту информации но с задержкой в десятки секунд, таким образом участники все еще смогут сжульничать но в пределах ограничений системы проверки (т.е. игрок не сможет летать пока его никто не видит). Система проверки должна учитывать предельную скорость игрока или даже собранную заранее информацию по карте, в каких местах игрок принципиально может находиться.

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

    @rPman
    Поставить на телефон прокси сервер (или к примеру любой ssh сервер, подключаясь к нему с опцией -D1080 получишь на машине, с котрой подключился socks прокси с портом 1080), и указать его в настройках браузера на десктопе.

    socks сервер это чуть более функциональный чем http сервер (с должными приложениями можно пропускать не веб трафик через него, но к сожалению все еще только tcp, для udp уже нужен vpn и он так же будет детектироваться)

    Правда провайдер может определять десктоп по контенту, например посещение сервисов, доступных только с десктопа... но я про такое не слышал.

    p.s. меняй провайдера, этот геморой не стоит свеч
    Ответ написан
    Комментировать
  • Как отправить сообщение с Linux на windows в локальной сети?

    @rPman
    Раньше использовался штатный майкрософтовский Messagener Service, в майкрософтовской сети можно отправлять сообщение командой msg, но после windows 7 майкрософт что то сломало в этом протоколе и ранее рабочий smbclient -M имя_компьютера теперь не работает, попробуй поищи в этом направлении

    но можно запустить скрипт, который будет мониторить какую-либо шару и отправлять для каждого нового файла в ней сообщения с помощью msg

    @echo off
    setlocal enabledelayedexpansion
    set "dir_path=c:\messages"
    
    :loop
    
    for %%f in ("%dir_path%\*") do (
        set /p msg_text=<"%%~f"
        msg "%%~nxf" "!msg_text!"
    	del "!dir_path!\%%~nxf"
    )
    
    ping -n 2 localhost
    
    goto loop


    в данном случае чтобы отправить сообщение нужно будет создать на этой машине (можно расшарить папку c:\messages и работать с ней через samba) файл с именем пользователя и содержимым с текстом сообщения (кажется в кодировке cp1251 если нужен русский, советую поэкспериментировать). Осторожно с пробелами в имени пользователя

    p.s. Еще проще, установить на windows машине ssh сервер, и запускать удаленно команды msg. OpoenSSH есть в windows 10 как штатный дополнительный компонент в настройках приложений
    Ответ написан
    Комментировать
  • Какой выбрать протокол для подключения сетевого диска вне локальной сети?

    @rPman
    * http (лучше https но тогда нужен на машину источник файлов а это значит + домен либо самоподписанные сертификаты) с авторизацией
    По этому протоколу можно работать откуда угодно, но с каталогами будет неудобно
    Промежуточный вариант webdav, это надстройка над http, но поддерживается майкрософт вплоть до монтирования в файловую систему и работа из проводника

    * scp (штатный механизм ssh) - самая простая настройка для сервера, наиболее надежный (встроенное шифрование и сжатие трафика), но нужны клиенты с поддержкой scp (все популярные файловые менеджеры умеют, типа far commander или total commander)
    Есть еще sftp, он немного отличается как более продвинутый (под linux есть fuse модуль для монтирования его в каталог), реализация идет штатно с ssh (ну или я привык что такие вещи в linux легко) так же поддерживается популярными клиентами работы с файлами

    * любые инструменты синхронизации, когда вместо доступа к файлам по какому либо протоколу, они копируются и синхронизируются автоматически таким образом что размещены на всех машинах где нужен доступ.
    Собственно все популярные централизованные системы типа dropbox/Google Drive/OneDrive и т.п. работают по этому принципу, но в довесок данные копируются еще и на сервера компании этого инструмента.
    Я рекомендую использовать открытый проект Syncthing - он не копирует файлы ни на какой сервер, и поддерживает любые ОС от windows до android (очень прикольно настраивать синхронизацию через промежуточное устройство типа смартфон, позволяющее синхронизировать файлы между закрытыми сетями)
    Ответ написан
    2 комментария
  • Почему Windows 10 не может получить доступ к шаре?

    @rPman
    ты подключаешься windows -> nas, убери то что ты там наковырял в настройках windows (зачем ты включил к нему доступ для гостя?)

    подключившись в домен, текущий пользователь на машине будет уже доменным (на самом деле можно авторизоваться локальным принудительно) и даже если имена совпадают, с точки зрения авторизации это разные пользователи

    мало того, при использовании домена перестает работать механизм общих имен и паролей в windows for workgroup (когда сеть без домена) позволяющий подключаться к шаре без ввода пароля.

    Правильное решение - добавить nas в домен (если nas это умеет, если нет то укажи рабочую группу с тем же именем что и домен и делай как ниже).
    Неправильное но простое решение - завести на windows и nas локальных пользователей с одинаковыми именем и паролями и делать подключение по ip адресу (ну в 10-ой версии wins сервер сломали, по уму можно включить и поковырять политики чтобы его вернуть, по уму рабочего dns сервера или правок в hosts должно хватить тоже), при подключении к nas указать этот логин и пароль и отметить сохранение их для последующих подключений (делать это придется вручную для каждого компьютера в сети и может даже для каждого пользователя, на сколько я помню это не переносится через сетевые профили)
    Ответ написан
  • Может ли владелец сервера shadowsocks расшифровать мой трафик?

    @rPman
    Пока ты ничего ненадежного не устанавливаешь на свой компьютер (никаких приложений и сертификатов) то сайты, использующие https, использовать надежно (для этого этот протокол шифрования и используется).

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

    p.s. При использовании android появляется возможность устанавливать приложения (если не используется root) и это не понижает надежность использования, но с некоторыми оговорками, которых вагон и маленькая тележка.

    Многие vpn провайдеры предоставляют доступ через свое ПО которое нужно установить на компьютер, такие надежными не являются и зачастую не являются даже просто vpn а по сути просто прокси (особенно когда работают только для браузера), скорее всего целью такого действия является компьютер пользователя и данные на нем.

    Поэтому, пользоваться нужно теми vpn, которые можно установить на роутер или выделенный компьютер, с которого уже раздается интернет
    Ответ написан
    Комментировать
  • Как пробросить 200+ портов в QEMU на Windows, сразу?

    @rPman
    Документация у qemu написана не очень удобно, напрямую беглым просмотром найти ответ на твой вопрос не получается но есть направления, которые можно протестировать:
    * управление настройками уже запущенной машины через штатный монитор (окно виртуальной машины состояит из лога, управляющего и собственно изображения виртуальной видеокарты), переключаться туда сюда можно ctrl+alt+g, так же можно заранее назначить пайп откуда брать команды с помощью ключа -monitor stdio (консоль, в которой запущена виртуальная машина станет управляющей консолью)
    В этой консоли напиши help и изучай, возможно у тебя есть шанс
    * еще есть libvirt, он хранит настройки qemu машин в xml файлах, правда не уверен, возможно при запуске виртуальной машины этот конфиг передается через командную строку со всеми вытекающими от сюда проблемами в windows

    p.s. как вариант, взять исходники qemu и добавить возможность загрузки команд из файла типа qemu @parameters.txt

    p.p.s. а так ли тебе нужно изолировать сеть машины от хостовой? может объединишь сеть в бридж, тогда за ip адрес будет отвечать твой роутер в сети и вообще машина будет доступно в локальной сети как обычная
    Ответ написан
  • ПК с двумя сетевыми картами не работает RDP на второй сети, как решить?

    @rPman
    Не серверные ревизии не позволяют одновременное удаленное подключение по rdp.

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

    Единственный известный мне и рабочий метод одновременной работы несколькими пользователями за не серверной ревизией - это ibik aster, речь не о удаленном доступе, а буквально несколько консолей (к компьютеру подключается несколько мониторов, клавиатур и мышек), без эмуляции и с поддержкой видеоускорителей. А там каждая сессия может удаленно управляться по vnc (запускать не в режиме службы)

    upd. если я неверно понял проблему и нужно по очереди подключаться с разных сетей то почитай это, как заставить терминальный сервер windows 10 слушать несколько адаптеров
    Ответ написан
    2 комментария
  • Зачем задавать ip интерфейсу?

    @rPman
    * ip адрес можно задать только интерфейсу
    * таких адресов на интерфейсе может быть от 0 до нескольких
    * на хосте инерфейсов может быть несколько
    формально можно одинаковые ip адреса на разных интерфейсах, это по умолчанию работать не будет но есть свои нюансы где это можно использовать

    У хоста может быть имя (dns, т.е. имя = ip адрес) и там еще netbios маячит майкрософтовский (по уму оно может работать без tcp/ip в пределах локальной сети но что то мне говорит это уже не так со времен winxp или даже win9x).

    Теперь к вопросу зачем задавать ip адрес - чтобы до машины можно было бы в принципе достучаться. Весь tcp/ip говорит что сервис на машине слушает соответствующий ip адрес и порт, нет адреса нечего слушать.

    p.s. Если ip адрес не задавать, такую сеть все равно можно использовать, например если два или больше интерфейса объединить в сетевой мост, формально достучаться до хоста можно будет по mac адресу (не tcp/ip) а так же специальным по можно мониторить пакеты, проходящие через мост.

    p.p.s. еще есть броадкасты, их в tcp/ip рассылают всей локальной сети скопом, для получения таких пакетов ip адрес тоже по уму не нужен, но софт на машине должен мониторить интерфейс особым образом (плюс если в сети есть свитчи, они могут собирать информацию о том какие машины с какими mac адресами в каких локальных сетях сидят и оптимизировать трафик, чтобы зря не слать тем кому не следует).
    Ответ написан
    7 комментариев
  • Почему не удается подключиться к виртуалке по SSH?

    @rPman
    с сетью NAT
    зачем создал себе проблем?
    настрой сеть как сетевой мост между своей сетевой картой, тогда для всей твоей локальной сети (если она есть) виртуальная машина будет еще одна, с полным доступом.

    если локальной сети нет, то ее придется создать, например добавив loopback драйвер фиктивной сети на хост системе и настроить уже к нему сетевой мост.
    Ответ написан
    Комментировать
  • Имеется ли в C++ данный синтаксис?

    @rPman
    Смотрим исходники (как же там неудобно искать, проще было склонировать и найти в файлах)

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

    Описание аргументов ,... это variadic т.е. можно несколько аргументов писать в вызове макроса, они все передадутся как есть (есть разные способы их развертывания)

    Вот к примеру твой пример развернется в
    static vnet_feature_arc_registration_t vnet_feat_arc_ip4_unicast;
    static void __vnet_add_feature_arc_registration_ip4_unicast (void)
      __attribute__((__constructor__)) ;
    static void __vnet_add_feature_arc_registration_ip4_unicast (void)
    {
      vnet_feature_main_t * fm = &feature_main;
      vnet_feat_arc_ip4_unicast.next = fm->next_arc;
      fm->next_arc = & vnet_feat_arc_ip4_unicast;
    }
    static void __vnet_rm_feature_arc_registration_ip4_unicast (void)
      __attribute__((__destructor__)) ;
    static void __vnet_rm_feature_arc_registration_ip4_unicast (void)
    {
      vnet_feature_main_t * fm = &feature_main;
      vnet_feature_arc_registration_t *r = &vnet_feat_arc_ip4_unicast;
      VLIB_REMOVE_FROM_LINKED_LIST (fm->next_arc, r, next);
    }
    static vnet_feature_arc_registration_t vnet_feat_arc_ip4_unicast

    Заметь что последняя строчка не завершена, нет ";", значит если после вызова этого макроса поставить = ... то пойдет определение значения переменной vnet_feat_arc_ip4_unicast
    а запись через { .имя_поля=значение,...} это удобный способ инициализировать структуры
    Ответ написан
    1 комментарий
  • Как правильно организовать защиту одной сети от другой?

    @rPman
    Два фаервола - устройства (роутеры например) с каждой стороны провайдеров, определяющие правила доступа к ресурсам и объединенные в одну сеть меду собой
    Ответ написан
    Комментировать
  • Как сделать из комптютера прокси для планшета?

    @rPman
    проблема в том что настройки прокси в android подключении - это рекомендация, т.е. если приложение не желает/не умеет работать с прокси сервером, оно не будет его использовать

    для гарантий что подключение идет через твою машину, используй vpn (настрой vpn сервер на своем ПК)

    p.s. если речь только о браузере, то советую установить firefox, и вручную в about:config настроить прокси
    Ответ написан
    Комментировать
  • Почему файфокс отваливается по поиску днс, если к сайту обращаешься по ip?

    @rPman
    Проверь что у тебя браузер не использует какую-нибудь прокси (автоконфигурация по умолчанию или .pac файл), а так же не установлен какой-нибудь антизапрет впн или аналоги, в общем запусти браузер в новом чистом профиле (с ключом --ProfileManager )

    если у тебя не установлена поддержка https на твоем сайте, указывай конкретный протокол http:// перед ip адресом, так как скорее всего он пытается подключиться сразу по https и не может
    Ответ написан
  • Где можно скачать точные IP диапазоны?

    @rPman
    не уверен что будут и свежие и точные и бесплатные (выбери только два из трех, ка бы не одно)
    (порядок и сам список случайный, я просто гуглить умею)
    https://www.maxmind.com/en/geoip2-databases
    https://db-ip.com/db/ip-to-location-isp
    https://datarade.ai/data-categories/ip-to-geolocat...
    ...
    почему ты забраковал?
    https://www.ip2location.com/database/db4-ip-countr...

    это даст понимание стоимости требования 'свежие'
    p.s. точно помню у maxmind был какой то фриварный вариант базы, с ограничениями на использование
    Ответ написан
    1 комментарий
  • Как сделать трансляцию экрана через сокеты в C#?

    @rPman
    ты хандлер сокета клиента закрыл сразу после отправки
    убери handler.Close();

    upd. еще подумай, что будет если к твоему сервису подключится второй клиент, т.е. listener.accept должен создавать новый хандлер который как то нужно обрабатывать либо вообще выноси из цикла accept (второй сделай вложенный) и пока клиент хандлер не закроет, тупо шли в него картинки.

    Еще момент, ты должен как то сообщить клиенту, сколько данных будешь передавать, например сначала шлешь размер буфера с изображением, а затем сам буфер. Само собой клиент точно так же должен это ожидать
    Ответ написан
    Комментировать
  • Может ли хозяин Wi-Fi точки видеть приложения, которые я использую?

    @rPman
    Роутер полностью отслеживает ip адреса машин, исходные и целевые порты, по которым зачастую можно понять, что за приложение подключилось, т.е. почти все сетевые приложения будут обнаружены роутером.

    wifi роутер это машина, подключенная в локальную сеть пользователя. Типовые фаерволы на машинах пользователей, защищающие от входящих подключений, обычно менее строго настраиваются для соединений в локальной сети, а пользователи надеются на защиту роутера и ослабляют защиту, например выключают пароль локальной сети smb.

    Бывает что разработчики зачем то оставляют открытым входящие порты у различных служб, не обязательно http протокол, бывает используются named pipes/unix socket (изначально работающие только в локальной сети а значит разработчики слабо задумываются о защите), в этом случае злонамеренный владелец роутера может навредить через них.

    p.s. лучший способ защититься - поставить между чужим роутером и своей локальной сетью - свой роутер/фаервол
    Ответ написан
    2 комментария
  • Может ли совпадать количество ip адресов в подсети с количеством узлов сети?

    @rPman
    нет
    * Можно не настраивать ip адрес устройству, так как в сети могут быть не tcp/ip протоколы, даже если забыть устаревшие протоколы, отличный пример - сервер виртуалок может не иметь своего ip адреса, но через сетевой мост соединять с сетью сами виртуалки (т.е. работать как сетевой свитч)
    * Можно настроить несколько ip адресов на устройство
    Ответ написан
  • Как адресуются пакеты адресату с серым ip?

    @rPman
    Да что же за отвечающие такие, все кто говорит никак - не правы, может хоть немного думать будете прежде чем в заблуждение народ вводить.

    Серый ip, это значит машина выделенный ip адрес в сети Интернет не имеет, а для выхода в интернет использует одну из доступных технологий, обычно либо NAT либо proxy (http/socks/web)

    При использовании прокси вариантов тупо нет, но вот при использовании NAT, если на роутере, его предоставляющем включена нужная технология либо настроено вручную перенаправление, можно! Называется эта технология UPnP.

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

    При правильной настройке роутера, нормальная работа сервисов внутри локальной сети с доступом из Интернета, возможна, даже если ip адрес в догонку к проблеме nat, еще и динамический (технология называется dyndns)

    p.s. есть еще ipv6 (в частности 6to4), в отличии от nat или прокси (или vpn, которая превращает ситуацию в ту же локальную сеть), при наличии поддержки провайдером (точнее не блокировании этой технологии) и роутера, позволяет выделить машинам внутри локальной сети прямые ipv6 адреса, доступные из сети Интернет, но только по этому протоколу.
    Ответ написан
    2 комментария
  • Проблема со скоростью интернета, в чем может быть проблема?

    @rPman
    Чтобы с гарантией удостовериться что причина не в кабеле, поднеси компьютер к роутеру максимально близко и воткни его коротким патчкордом (идущий обычно в комплекте с роутером, можешь купить или поэкспериментировать с другими кабелями что есть дома)

    Удостоверься что проблема не в программных ошибках и настройках, исключи свою текущую ОС из уравнения и загрузись с какой-нибудь liveusb/livecd версии (рекомендую linux xubuntu/kubuntu), настройки устройства смотри и меняй с помощью ethtool
    # ethtool enp4s0
    Settings for enp4s0:
    Supported ports: [ TP MII ]
    Supported link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    2500baseT/Full
    Supported pause frame use: Symmetric Receive-only
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    2500baseT/Full
    Advertised pause frame use: Symmetric Receive-only
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Link partner advertised link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Link partner advertised pause frame use: Symmetric
    Link partner advertised auto-negotiation: Yes
    Link partner advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Auto-negotiation: on
    master-slave cfg: preferred slave
    master-slave status: slave
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: external
    MDI-X: Unknown
    Supports Wake-on: pumbg
    Wake-on: d
    Link detected: yes
    Ответ написан
    Комментировать