@sevnet
Системный аналитик, бизнес-консультант

Как настроить проброс ARP пакетов (ARP-proxy) через OpenVPN туннель Mikrotik-Mikrotik?

Есть 2 роутера Mikrotik, у каждого своя локальная подсеть, один к подключен другому через OpenVPN (Client-Server), у VPN подсетей тоже свои диапозоны адресов. Маршруты в локальные сети взаимно настроены, icmp-PING проходит без проблем.

Задача из локальной сети одного Микротика подключить приложение "Пульт ДУ", установленное на телефоне (подключенном по Wi-Fi к сети Микротик), к телевизору в сети другого Микротика.
Само приложение на телефоне ищет телевизор по средствам broadcast-arp запроса и не иначе (другие приложения работают так же, либо по блютус). То есть когда телефон и телевизор в одной сети подключение происходит моментально, но у меня между сетями VPN туннель.

Как настроить ARP прокси сквозь OpenVPN туннель между Микротиками?

Схема подключения у меня идентична изображенной ниже
800px-Vpn-common-%D1%81hart.png
  • Вопрос задан
  • 456 просмотров
Решения вопроса 1
@sevnet Автор вопроса
Системный аналитик, бизнес-консультант
В общем задачу решил сам, спасибо кто помогал, вы частично навели на верные мысли.
Сразу отвечу на вопрос, зачем оно мне надо.
Телевизор с вэбкамерой стоит в другом городе у моей бабушки. Цель - звонить ей на телевизор по видео связи.
Она, как человек престарелый, конечно не в состоянии зайти в меню андройд ТВ и куда-то там переходить.
Поэтому мне нужен полный контроль за ТВ удалённо.

Для решения задачи мне потребовалось:
1. Телевизор с Андройд ТВ (12я версия).
2. Вебкамера Logitech C270 включенная в USB телика.
3. Роутер Миркротик hEX (можно любой другой промышленного класса, Cisco например).
4. Точка доступа, т.к. тянуть кабель по квартире к телику не было возможности, сильно заставлена мебелью, а роутер Микротик у меня без Wi-Fi был. Я использовал самую дешевую TP-LINK TL-WA801N.

Настройка.
1. Настроить VPN туннель между Микротиками в режиме Клиент-Сервер, в моём случае OpenVPN, но можно и другой. Статей в интернет как это сделать полно. Обязательно добавьте интерфейсы соединений PPP в ручную, чтобы они были постоянными, т.к. вам придётся на них ссылаться в других местах.
4lsBzHn.png
2. Настроить маршруты между сетями Микротиков (но это не обязательно, мне нужно было для пингования и тестирования прочих настроек, а так же для доступа по Web на точку доступа).
На роутере VPN сервере:
4lsAaKy.png
На клиенте:
4lsAeoZ.png
3. Настроить ethernet туннель EoIP поверх соединения L3 VPN. Добавляется на обоих микротиках, в поле Remote Address указывается адрес сервера и клиента VPN. Не внешние, а внутренние, которые раздаются VPN сервером.
4lsyTU6.png
4. Добавить в Bridge порт интерфейсы нашего L2 туннеля (так же на обоих Микротиках):
4lsAlfi.png
5. Чтобы Микротики не начали перекрёстно раздавать друг другу IP адреса через DHCP (т.к. оба DHCP серверы), надо зайти в меню Bridge любого Микротика и во вкладке Filters добавить 2 правила DROP для UDP 67-68 портов, одно где указать интерфейс EoIP как входящий, во втором как исходящий (в одном правиле не проканает) иначе обе сетки Микротиков заглючат, точнее зафлудятся.
4lsAV94.png
4lsAWp4.png

Софт.
1. Для видеозвонков на телике удалось найти только приложение Google Meets, оно собственно полностью устраивает.
2. Для удалённого управления теликом RealVNC-NG Server (по настойке надо выдать все права и включить приложение как службу на ТВ, немного потыкаетесь в приложении на телике, поймёте как) на телик и любой VNC клиент на ПК или телефон. Точнее данное приложение пригодилось только просмотра его экрана, т.к. управление курсором не работает, на 4pda проблема известна, однако решения нет((
3. Для управления телевизором через Andriod телефон приложение Remote ATV (но можно и другие, работают они одинаково). Данное приложение широковещательным запросом по ARP находит телики в одной с телефоном L2 сети, т.е. в них даже написано, что телефон должен быть в той же сети, что и ТВ. Собственно ради реализации этого пункта я и оказался с вопросом на хабре.
Вот так оно коннектится и ищет телики, тупо по MAC'у. МАС находится сам, ручками его не ввести не изменить невозможно. Ещё что интересно, телик пингуется по MAC
Reply that 90:98:77:65:9F:33 is 192.168.37.227 in 133.770ms

А приложение его находит по MAC'у со значением на 1 больше:
90:98:77:65:9F:34
4lsyKd9.jpg

Осуществление звонков.
1. Подключаюсь с телефона или с ПК к телевизору через RealVNC-Viewer (с ПК удобнее, т.к. не надо переключаться между окнами на телефоне). В режиме просмотра кабельного/антенного ТВ приложение будет показывать чёрный экран.
2. Начинаю звонить с телефона через приложение Google Meets по email учётки аутентифицированной в Google Mets на ТВ.
3. Сворачиваю звонок, открываю на телефоне Remote ATV, смотря на экран телика в приложении VNC-Viewer кликаю кнопку Home на пульте, захожу в приложение Google Meets, вижу входящий звонок, снимаю трубку и готово!

П.С.:
1. Есть неизвестная для меня проблема, при включенном в бридж L2 туннеле с открытием некоторых сайтов, как например ozon.ru, dns-shop.ru, vk.ru, wildberries.ru - они тупо не открываются, как и многие другие, при этом другая половина сайтов, google, yandex и прочие работают без проблем. Я, догадываясь что идёт какая-то закольцовка трафика из-за тоннеля, пытался через Torch промониторить, в момент обновления страницы неработающих сайтов в браузере, какой трафик идёт через туннель, проверял все протоколы, интерфейсы OpenVPN и EoIP, ничего не отлавливается(( В общем для меня это пока загадка. Так что включаю туннель на время звонка, потом выключаю.
2. Пробовал использовать как мне советовали режим проброса L2 ARP трафика через сами OpenVPN интерфейсы, переводил их в режим Ethernet, добавлял их интерфейсы как порты в bridge на обоих Микротиках, при этом arp-ping с ПК шел, а приложение Remote ATV не видело телик по его маку(( Судя по всему у телика 2 МАС'а один из которых принимает IP адрес, а другой чисто для подключения всяких подобных приложений. Скорее всего это как-то связано с тем, что у телика разные MAC'и на котором IP и к которому коннектится Remote ATV.
В общем тут без глубоких специалистов по каждому из поднятых аспектов не разобраться((
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@agpecam
Мы не знаем достоверно как "обнюхиваются" приложение и телевизор. Broadcast-arp - это может быть просто следствием пробы определенных портов. Ок, если предположить, что приложение ищет в сети устройства определенного производителя по первым 3 октетам MAC, то значит оно сканирует все IP подсети, к которой подключено. Иных способов, кроме ARP запрос who has IP... для получения MAC протокол ARP не предполагает. В этом случае, во-первых, у вас телевизор в другой подсети, а во-вторых ARP-proxy на такой запрос ответит своим MAC, а не MAC телевизора с закономерными последствиями. Если ищет перебором IP : some port и в приложении нет возможности задать не свою подсеть - результат тот же.
Вам по сути нужно поместить сети офисов в один L2 сегмент, т. е. на микротиках сделать OpenVPN mode: ethernet, внести tap интерфейсы в bridge локальной сети и дать понять приложению, что удаленная сеть находится с ним в одном L2 сегменте, например, с помощью DHCP option 121, т. е. переделать всю сеть ради телевизора. Оно вам надо?
Ответ написан
ValdikSS
@ValdikSS
Вы уверены, что приложение работает именно так?
Обнаружение в приложении может выполняться либо каким-то собственным протоколом по Broadcast/multicast, либо стандартными, вроде mDNS/DNS-SD, через Multicast.
ARP вряд ли получится использовать именно для обнаружения, если это, конечно, не единичное особое устройство, где производитель заранее знает MAC-адрес.

OpenVPN tun тунеллирует только L3-трафик, поэтому не сможет маршрутизировать Ethernet ARP-пакеты (и любой другой Ethernet/L2 и IP broadcast-трафик). Для этого вам нужен туннель с поддержкой L2 — OpenVPN tap, как один из возможных.

Если речь об обычном смарт-ТВ и стандартных протоколах, то, скорее всего, речь всё-таки о multicast. Его поддерживает OpenVPN tun, нужно настраивать маршрутизацию мультикаст-трафика уже средствами самого роутера.
Некоторые программы могут намеренно устанавливать TTL=1 в пакетах, чтобы трафик не маршрутизировался в другие сети — вам необходимо увеличивать TTL у таких пакетов.

Более подробно понять принцип работы программы можно из дампов трафика. Они также помогут диагностировать проблемы с его прохождением через VPN.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы