Привет! Я купил вот этот RouterBoard: http://routerboard.com/RB911G-5HPnD Хочу создать что-то вроде "фейкового" беспроводного клиента, чтобы роутер думал, что есть беспроводное устройство, например, с IP-адресом "192.168.88.5", но на самом деле устройства нет. Хочу, чтобы я мог отправлять пакеты с одного устройства на "192.168.88.5", а роутер, в свою очередь, должен отправлять эти пакеты, как будто там есть реальное устройство. Думаю, с протоколом типа UDP это не должно быть проблемой, потому что роутер не заботится о том, что было получено, а что нет. Роутер просто отправляет. Вы можете спросить, зачем мне это: я слушаю другим устройством в режиме монитора, так что это устройство не подключено к беспроводной сети моего RouterBoard'а, но оно должно получать пакеты от устройства, которое находится в сети RouterBoard'а. Плохое "аппаратное" решение моей проблемы было бы, например, Raspberry Pi с WLAN-адаптером, который подключается к сети Wi-Fi моего RouterBoard’а. Но это очень плохое решение, потому что я не хочу использовать дополнительное оборудование, и я думаю, теоретически это очень легко – заставить роутер думать, что есть беспроводное устройство. Но возможно ли это с RouterOS?
Не совсем понятно, что именно вам нужно, но вы можете добавить этот адрес на доску. Однако данные не будут передаваться по беспроводной сети, если это то, чего вы пытаетесь добиться. Для передачи данных необходим физический уровень.
Может, спрошу по-другому: есть ли возможность просто отправлять беспроводные пакеты без указания конкретного IP? Чтобы роутер просто отправлял пакеты, а поле destIP в заголовке IP оставлял пустым?
Ты должен написать свой собственный драйвер Wi-Fi и ядро, если хочешь передавать как рация. Беспроводное радио, за исключением пакета SSID маячка, можно заставить передавать что угодно, но другая сторона должна быть подключена к Wi-Fi.
Я сейчас не имею доступа к моим сетям, но насколько я понимаю, тебе нужен просто IP-адрес, а не информация о беспроводном клиенте или что-то подобное. В этом случае я попробую создать новый мост, назначить ему IP-адрес и попробовать пропинговать его. Другой вариант – правило файрвола, которое меняет исходящий IP-адрес пакетов, направленных к устройству, ожидающему специального отправителя. Может, тебе стоит попробовать описать это более точно, кажется, у нас возникают проблемы с пониманием того, что ты хочешь добиться, и особенно почему.
Если нет подключенных беспроводных клиентов, роутер не отправляет пакеты по беспроводной сети, верно? Проблема в том, чтобы заставить Routerboard передавать данные по беспроводной сети. Когда исходящий IP-адрес отсутствует в списке беспроводных клиентов роутера, он просто не передает пакеты… Я попробую. Хочу добиться "однонаправленного Wi-Fi". Отправитель — Routerboard. Он имеет один клиент, подключенный по LAN. Этот клиент берет изображения с камеры и кодирует их в маленькие JPEG. Приёмник — обычный USB-Wi-Fi адаптер, подключенный к компьютеру. Этот адаптер не подключен к сети Routerboard, но он работает в режиме монитора, так что любой пакет, который Routerboard отправляет или получает (по беспроводной сети), Wi-Fi адаптер тоже получает. Разумеется, Wi-Fi Routerboard не имеет шифрования. Итак, подключенный клиент к Routerboard хочет отправлять пакеты Wi-Fi адаптеру, который не подключен к Routerboard, но адаптер принимает любые пакеты, которые передаются между клиентом и Routerboard. Зачем мне это нужно? Отправитель (Routerboard и клиент) установлены на моем квадрокоптере. Клиент берет одиночные изображения с камеры, кодирует их и отправляет на землю, где Wi-Fi адаптер слушает в режиме монитора, а затем компьютер отображает изображение на мониторе. Это называется FPV (First Person View) полет. Почему я не хочу подключать наземный приемник к сети Routerboard? Потому что это сделает передачу ненадежной и не позволит, например, использовать спиральную антенну на земле, потому что она имеет очень высокий коэффициент усиления и увеличит выходную мощность приемника сильно выше регуляторных ограничений. Но с моим методом, поскольку приемник не отправляет ничего, только принимает, я могу установить там антенну с очень высоким коэффициентом усиления. Нормальное подключение было бы ненадежным, потому что если бы какое-то препятствие находилось между мной (Wi-Fi адаптер, земля) и коптером (Routerboard, воздух), Wi-Fi соединение могло бы прерваться, и наземный Wi-Fi адаптер мог бы “покинуть” Wi-Fi и не подключиться снова, и, следовательно, не слушать пакеты, приходящие. С моим однонаправленным методом это не было бы проблемой, поскольку он всегда слушает пакеты, приходящие от отправителя. Я надеюсь, вы теперь понимаете, чего я пытаюсь достичь. Должна быть какая-то простая возможность просто сказать роутеру "эй, не заботься о том, что ты делаешь, просто отправляй эти пакеты по беспроводной сети".
Прости, но так не работают сети Wi-Fi. Тебе нужны специальные устройства для этого, потому что таким образом нельзя передавать данные с устройствами Mikrotik.
Я знаю, что так обычно не работают Wi-Fi сети. Как я уже говорил в первом сообщении, это возможно с дополнительным оборудованием, которое подключается к Routerboard. Мне кажется, это все равно проще и дешевле, чем с какими-то "специальными устройствами", правда? О каких именно "специальных устройствах" вы говорите? Мне просто не нравится решение с "дополнительным оборудованием", потому что оно добавляет вес квадрокоптеру, а вес – это то, что тебя больше всего волнует. Во всех остальных случаях оборудование не стало бы проблемой. Мне кажется, там просто один if-loop, который нужно удалить из RouterOS, чтобы получить то, что я хочу, работающим... Например, что-то вроде: If amountOfWirelessDevices > 0 then transmit packets over wireless. Именно это ">0" и вся проблема. Так что не говорите что-то вроде "переписывать все драйверы и ядра". Разработчики, не могли бы вы просто реализовать это для меня?
Я уверен, что Mikrotik не станет делать такое специализированное одноцелевое изменение, не связанное с сетями. Под "подходящим устройством" я имел в виду видеопередатчик, как те, что используются в системах видеонаблюдения или для шпионажа. Если хочешь написать собственное ПО, установи OpenWRT, а не ROS, потому что ROS не предназначен для кастомной разработки.