EN EN

Настраиваем EoIP-туннель между MikroTik и Keenetic: Объединяем сети через приватные IP

Опубликовано 17.07.2025

В мире сетевых технологий часто возникает задача объединить две удаленные локальные сети так, чтобы они ощущались как единое целое, даже если находятся за разными маршрутизаторами. Для владельцев оборудования MikroTik знакома концепция EoIP (Ethernet over IP) — фирменного туннельного протокола, позволяющего создавать виртуальный Ethernet-интерфейс (Layer 2) поверх IP-сети.

Хорошие новости для пользователей Keenetic: начиная с прошивки NDMS v2.10, роутеры Keenetic также поддерживают EoIP! Это открывает двери для интересных сетевых конфигураций.

В этом кейсе мы подробно разберем, как настроить полноценный EoIP-туннель между роутерами MikroTik и Keenetic, используя приватные IP-адреса. Такой подход идеально подходит для использования туннеля внутри существующей VPN-сети или в сценариях, где вы можете обеспечить корректный проброс GRE-протокола через NAT.


📌 Что такое EoIP?

EoIP (Ethernet over IP) — это проприетарный туннельный протокол, разработанный MikroTik. Он работает поверх GRE (Generic Routing Encapsulation), который, в свою очередь, инкапсулируется в IP (использует IP-протокол 47). По сути, EoIP создает виртуальный Ethernet-кабель между двумя удаленными устройствами, позволяя им обмениваться Ethernet-кадрами, как если бы они были подключены напрямую по локальной сети. Это означает, что вы можете “пробросить” L2-трафик (VLAN, DHCP, ARP, PPPoE) через туннель.


📋 Условия для успешной работы

Прежде чем приступать к настройке, убедитесь, что соблюдены следующие ключевые условия:

  • Доступность по IP: Маршрутизаторы Keenetic и MikroTik должны иметь возможность “видеть” друг друга по IP-адресам. Это может быть достигнуто, если они находятся в одной VPN-сети (например, оба являются клиентами VPN-сервера или между ними уже настроен Site-to-Site VPN) или если GRE-протокол (IP Protocol 47) корректно проброшен через NAT на обоих концах (для этого требуется проброс портов на роутерах, находящихся перед MikroTik/Keenetic).
  • Использование приватных IP-адресов: В нашем примере мы будем использовать приватные IP для туннелирования. Допустим:
    • MikroTik: 192.168.100.1 (IP, который MikroTik использует для связи с Keenetic).
    • Keenetic: 192.168.200.1 (IP, который Keenetic использует для связи с MikroTik).
  • Совпадающий Tunnel ID: Критически важно, чтобы Tunnel ID был одинаковым на обоих устройствах (например, 100).
  • Отсутствие блокировки GRE (IP Protocol 47): Убедитесь, что ни один файрвол или провайдер не блокирует GRE-протокол.

🖧 Схема нашей сети

Представим следующую топологию:

[Локальная сеть A] <--- Ethernet ---> MikroTik (IP для туннеля: 192.168.100.1)
                                      ↑
                                      | EoIP Tunnel (Tunnel ID: 100)
                                      ↓
[Локальная сеть B] <--- Ethernet ---> Keenetic (IP для туннеля: 192.168.200.1)

Мы создадим общую EoIP-сеть для прямого L2-взаимодействия между роутерами, например: 192.168.88.0/24.


⚙️ Настройка MikroTik (RouterOS)

Подключитесь к вашему MikroTik роутеру (через Winbox или SSH/WebFig) и выполните следующие команды:

  1. Создаем EoIP-интерфейс: Этот интерфейс будет виртуальным каналом для нашего туннеля.

    /interface eoip add name=eoip-keenetic \
      remote-address=192.168.200.1 \
      local-address=192.168.100.1 \
      tunnel-id=100 comment="EoIP tunnel to Keenetic"
    
    • remote-address: IP-адрес Keenetic, который он использует для туннеля.
    • local-address: IP-адрес MikroTik, который он использует для туннеля.
    • tunnel-id: Уникальный идентификатор туннеля (должен совпадать на обеих сторонах).
  2. Создаем мост (Bridge) и добавляем порты: Мы создадим новый мост, чтобы объединить наш EoIP-интерфейс с локальной сетью MikroTik, делая их частью одного L2-домена.

    /interface bridge add name=br-eoip comment="Bridge for EoIP tunnel"
    /interface bridge port add bridge=br-eoip interface=eoip-keenetic comment="Add EoIP interface to bridge"
    /interface bridge port add bridge=br-eoip interface=ether2 comment="Add MikroTik LAN port (or VLAN) to bridge"
    
    • Замените ether2 на имя вашего LAN-порта или VLAN-интерфейса, который вы хотите объединить в L2-домен с Keenetic.
  3. Назначаем IP-адрес на мост (опционально, для L3-доступа): Если вам нужен IP-адрес для управления мостом или для маршрутизации L3-трафика через него, назначьте его. Это будет IP-адрес вашего MikroTik в общей EoIP-сети.

    /ip address add address=192.168.88.1/24 interface=br-eoip comment="IP for EoIP bridge"
    
    • 192.168.88.1/24 — это IP-адрес MikroTik в нашей новой общей L2-сети.

⚙️ Настройка Keenetic (NDMS)

Подключитесь к веб-интерфейсу вашего Keenetic роутера и перейдите в Система → Командная строка (CLI).

  1. Создаем EoIP-интерфейс:

    interface EoIP0
      tunnel source 192.168.200.1
      tunnel destination 192.168.100.1
      tunnel id 100
      no shutdown
    exit
    
    • tunnel source: IP-адрес Keenetic, который он использует для туннеля.
    • tunnel destination: IP-адрес MikroTik, который он использует для туннеля.
    • tunnel id: Идентификатор туннеля (должен совпадать с MikroTik).
  2. Добавляем EoIP в мост: На Keenetic по умолчанию существует Bridge0. Мы добавим наш новый EoIP-интерфейс и локальный LAN-порт Keenetic в этот мост.

    interface Bridge0
      bridge-group Bridge0
      bridge-ports EoIP0 Ethernet0  # Добавьте ваш локальный LAN-порт Keenetic
    exit
    
    • Замените Ethernet0 на имя вашего локального LAN-порта, который вы хотите объединить в L2-домен.
    • Внимание: Убедитесь, что вы добавляете именно тот интерфейс, который относится к вашей локальной сети, а не к WAN.
  3. (Опционально) Назначаем IP-адрес для L3-доступа: Если вам нужен IP-адрес для управления или маршрутизации L3-трафика через мост на Keenetic.

    interface Bridge0
      ip address 192.168.88.2/24
    exit
    system configuration save
    
    • 192.168.88.2/24 — это IP-адрес Keenetic в нашей новой общей L2-сети.
    • Обязательно сохраните конфигурацию командой system configuration save.

✅ Проверка работы туннеля

После настройки обеих сторон пора убедиться, что туннель работает корректно.

На MikroTik:

  • Проверьте статус EoIP-интерфейса:
    /interface eoip print
    
    Убедитесь, что статус running и R (running) рядом с интерфейсом eoip-keenetic.
  • Пинг до IP-адреса Keenetic в EoIP-сети:
    /ping 192.168.88.2 interface=br-eoip
    
    Пинги должны проходить.
  • Трафик через туннель (torch):
    /tool torch interface=eoip-keenetic
    
    Это покажет проходящий через туннель трафик, если он есть.

На Keenetic:

  • Проверьте состояние интерфейсов:
    show interfaces
    
    Убедитесь, что EoIP0 активен (UP).
  • Пинг до IP-адреса MikroTik в EoIP-сети:
    ping 192.168.88.1
    
    Пинги должны проходить.

🛠️ Возможные проблемы и их решения

  • Туннель не работает (статус “down”):
    • Проверьте Tunnel ID: Он должен быть абсолютно одинаковым на обоих концах.
    • Проверьте remote-address и local-address: Убедитесь, что они правильно указаны и роутеры могут пинговать друг друга по этим адресам. remote-address на MikroTik должен быть local-address Keenetic, и наоборот.
  • Нет связи через туннель, хотя интерфейсы UP:
    • Проверьте разрешение GRE (IP-протокол 47): Убедитесь, что ваши файрволы на обоих роутерах (и любые промежуточные файрволы) разрешают прохождение IP-протокола 47.
    • NAT мешает работе EoIP: Если один из роутеров находится за NAT, и вы не используете VPN, необходимо пробросить IP-протокол 47 (GRE) на роутере, выполняющем NAT, к вашему MikroTik/Keenetic. Гораздо надежнее использовать туннель поверх уже установленного VPN-соединения.
  • MTU (Maximum Transmission Unit) проблемы:
    • Иногда могут возникать проблемы с фрагментацией пакетов, особенно если EoIP туннелируется через VPN или Интернет.
    • Решение: Установите MTU вручную на ~1400 на обоих EoIP-интерфейсах.
      • MikroTik: /interface eoip set eoip-keenetic mtu=1400
      • Keenetic: В CLI interface EoIP0 mtu 1400
      • Также, если проблема сохраняется, можно попробовать уменьшить MSS (Maximum Segment Size) на файрволе MikroTik для туннельного трафика:
        /ip firewall mangle add chain=forward \
          action=change-mss new-mss=1360 \
          passthrough=yes \
          protocol=tcp \
          tcp-flags=syn \
          out-interface=eoip-keenetic \
          comment="Adjust MSS for EoIP"
        

🧩 Когда это полезно?

  • Объединение сетей в одном L2-домене: Позволяет компьютерам в разных физических локациях находиться в одной и той же подсети, получать DHCP-адреса от одного сервера, работать с широковещательным трафиком.
  • Проброс VLAN, DHCP, PPPoE между локациями: EoIP идеально подходит для расширения VLAN’ов или прозрачной работы DHCP-серверов, или даже проброса PPPoE-сессий через туннель.
  • Построение резервной инфраструктуры через VPN: Можно использовать EoIP поверх VPN для создания отказоустойчивых решений.
  • Простой доступ к устройствам в удаленной сети: Если вам нужно получить L2-доступ к устройствам, которые не имеют IP-адресов или которые должны быть в одной L2-сети.

💬 Заключение

Настройка EoIP-туннеля между MikroTik и Keenetic — отличный пример того, как проприетарные, но хорошо реализованные протоколы могут быть использованы для создания мощных и гибких сетевых решений. Возможность объединять локальные сети в один L2-домен через EoIP, особенно используя приватные IP-адреса поверх VPN, дает огромные возможности для расширения инфраструктуры и создания сложных топологий.

Похожие посты

Свяжитесь со мной

Обсудим ваш проект и найдём подходящее решение