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

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

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

Как можно настроить ARP-прокси, чтобы обеспечить связь сквозь OpenVPN-туннель между роутерами Mikrotik? 

Схема подключения у меня аналогична изображенной ниже.
  • 5 сентября 2024 г. 14:53
Ответы на вопрос 2
Настройка ARP-прокси через OpenVPN между двумя роутерами MikroTik может быть сложной задача, но давайте рассмотрим процесс по шагам.

### Общая информация

Так как ARP работает на канальном уровне (Layer 2) и ваши VPN-соединения работают на сетевом уровне (Layer 3), ARP-запросы не пересылаются через OpenVPN по умолчанию. Вам потребуется настроить проксирование для ожидания и ответа на ARP-запросы, обеспечивая тем самым связь между двумя сетями.

### Настройка ARP-прокси на MikroTik:

1. **Убедитесь, что OpenVPN настроен корректно:**
   Проверьте, что OpenVPN туннель работает правильно, и маршруты между локальными сетями настроены. Вы должны иметь возможность пинговать устройства из одной сети в другую.

2. **Настройка IP-сети:**
   Предположим, что у вас есть две сети:
   - **Сеть A:** 192.168.1.0/24 (Router 1)
   - **Сеть B:** 192.168.2.0/24 (Router 2)

3. **Настройка ARP-прокси на Router 1 (Сеть A):**
   1. Откройте терминал MikroTik и выполните следующее:
   ```bash
   /ip arp
   add address=192.168.2.1 interface=vpn-out dst-address=192.168.2.0/24
   ```
   2. Замените `vpn-out` на имя интерфейса OpenVPN на Router 1.

4. **Настройка ARP-прокси на Router 2 (Сеть B):**
   1. Выполните команду:
   ```bash
   /ip arp
   add address=192.168.1.1 interface=vpn-in dst-address=192.168.1.0/24
   ```
   2. Замените `vpn-in` на имя интерфейса OpenVPN на Router 2.

5. **Настройка маршрутов:**
   Убедитесь, что у вас есть маршруты на обоих роутерах, чтобы направлять трафик между сетями через OpenVPN.

   - На Router 1:
   ```bash
   /ip route
   add dst-address=192.168.2.0/24 gateway=<ваш_gateway_внешнего_интерфейса>
   ```

   - На Router 2:
   ```bash
   /ip route
   add dst-address=192.168.1.0/24 gateway=<ваш_gateway_внешнего_интерфейса>
   ```

6. **Проверка ARP:**
   Посмотрите на таблицы ARP на обоих маршрутизаторах, чтобы убедиться, что вы видите адреса устройств из других сетей.
   ```bash
   /ip arp print
   ```

### Примечания и советы:

- **VPN настройки:** Убедитесь, что маршрутизация и NAT настроены корректно. Настройки NAT могут блокировать определенные типы трафика, включая ARP.
- **Разрешения и безопасность:** Убедитесь, что на firewall не стоят ограничения, мешающие ARP-трафику и другим необходимым протоколам.
- **Тестирование:** Проводите тесты с использованием ARP запросов и проверьте, обмениваются ли устройства адресами корректно.

Если после всех этих шагов ARP-прокси не работает должным образом, возможно вам понадобится изучить другие решения, такие как использование специализированного программного обеспечения для проксирования или изменения конфигурации сетевого оборудования для поддержки многосетевых ARP.

Эта настройка может потребовать дополнительного тестирования в зависимости от конкретной инфраструктуры и версий RouterOS.
Мы не знаем достоверно как "обнюхиваются" приложение и телевизор. 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, т. е. переделать всю сеть ради телевизора. Оно вам надо?
Похожие вопросы