mikrotik-wiki.ru
Главная
Загрузка...

EoIP и GRE туннели — сравнение и практика

RouterOS 7.xVPN10 мин30 мар. 2026 г.
TelegramVK

EoIP и GRE туннели на MikroTik — сравнение и практика

GRE (Generic Routing Encapsulation) и EoIP (Ethernet over IP) — два наиболее распространённых туннельных протокола на MikroTik. Оба инкапсулируют трафик в IP-пакеты для передачи через интернет или корпоративную сеть, но работают на разных уровнях и предназначены для разных задач. GRE — стандартный протокол (RFC 2784), совместимый с Cisco, Linux, Juniper и другим оборудованием. EoIP — проприетарный протокол MikroTik, работающий на уровне L2 и позволяющий прозрачно объединять удалённые Ethernet-сегменты. В этом руководстве разберём оба протокола, сравним их и покажем практическую настройку каждого.

Описание

GRE — стандартный IP-туннель

GRE инкапсулирует IP-пакеты (или пакеты других протоколов) в IP. Это L3-туннель: он передаёт маршрутизируемый трафик, но не Ethernet-фреймы. GRE описан в RFC 2784 и поддерживается практически всем сетевым оборудованием.

Характеристики GRE:

  • Уровень: L3 (IP-over-IP)
  • Протокол: IP protocol 47
  • Overhead: 24 байта (4 GRE header + 20 IP outer header)
  • Шифрование: нет (нужен IPsec для защиты)
  • Keepalive: поддерживается в RouterOS
  • Bridge support: нет (L3-туннель, нельзя добавить в bridge)
  • Совместимость: Cisco, Juniper, Linux, MikroTik, любой RFC 2784

Типичное применение GRE:

  • Site-to-site L3-связность между MikroTik и Cisco/Linux
  • Передача трафика динамической маршрутизации (OSPF, BGP) через туннель
  • Инкапсуляция multicast-трафика
  • Базовый транспорт для IPsec (GRE + IPsec = шифрованный L3 туннель)

EoIP — проприетарный L2-туннель MikroTik

EoIP инкапсулирует полные Ethernet-фреймы в IP-пакеты. Это L2-туннель: удалённый EoIP-интерфейс можно добавить в bridge, и устройства на обоих концах окажутся в одном broadcast-домене.

Характеристики EoIP:

  • Уровень: L2 (Ethernet-over-IP)
  • Протокол: IP protocol 47 (GRE) с MikroTik-специфичным tunnel-id
  • Overhead: ~42 байта
  • Шифрование: нет (нужен IPsec)
  • Keepalive: поддерживается
  • Bridge support: да (основное назначение)
  • Совместимость: только MikroTik

Типичное применение EoIP:

  • Объединение двух MikroTik-сетей в один L2-сегмент
  • Расширение VLAN между площадками
  • Работа с legacy-приложениями, требующими L2
  • Прозрачный bridge между офисами (один DHCP, один broadcast-домен)

Сравнительная таблица

КритерийGREEoIP
Уровень OSIL3 (IP)L2 (Ethernet)
RFC/стандартRFC 2784Проприетарный MikroTik
СовместимостьCisco, Linux, Juniper, MikroTikТолько MikroTik
Добавление в BridgeНетДа
ШифрованиеНет (IPsec отдельно)Нет (IPsec отдельно)
MTU overhead~24 байта~42 байта
KeepaliveДаДа
IP protocol47 (GRE)47 (GRE с tunnel-id)
Идентификатор туннеляНет (по IP endpoints)tunnel-id (0–65535)
MulticastПоддерживаетПоддерживает (через bridge)
МасштабируемостьВысокаяСредняя (broadcast storm)
ПроизводительностьВыше (меньше overhead)Ниже (L2 overhead)

Когда выбирать GRE

  • Связь MikroTik с оборудованием других вендоров (Cisco, Juniper, Linux)
  • Нужна только L3-связность (маршрутизация между подсетями)
  • Динамическая маршрутизация (OSPF, BGP) через туннель
  • Максимальная совместимость и стандартизация
  • Большое количество туннелей (меньше overhead на каждый)

Когда выбирать EoIP

  • Оба конца — MikroTik
  • Нужен L2 bridge между площадками
  • Расширение VLAN через WAN
  • Один DHCP-сервер на несколько площадок
  • Legacy-приложения, работающие только в L2

Настройка GRE

Схема

code
Офис A                                    Офис B
LAN: 192.168.10.0/24                      LAN: 192.168.20.0/24
WAN: 203.0.113.1                          WAN: 198.51.100.1
GRE: 10.255.255.1/30                      GRE: 10.255.255.2/30

Офис A (MikroTik)

[admin@MikroTik] >
# Создаём GRE-интерфейс
/interface/gre add name=gre-tunnel-b \
  remote-address=198.51.100.1 \
  local-address=203.0.113.1 \
  keepalive=10s,10

# Назначаем IP-адрес на GRE-интерфейс
/ip/address add address=10.255.255.1/30 interface=gre-tunnel-b

# Маршрут в удалённую LAN через GRE
/ip/route add dst-address=192.168.20.0/24 gateway=gre-tunnel-b

# Firewall: разрешить GRE-протокол (IP protocol 47)
/ip/firewall/filter add chain=input protocol=gre \
  src-address=198.51.100.1 action=accept \
  comment="Allow GRE from Office B" place-before=0

# Firewall: forward через GRE
/ip/firewall/filter add chain=forward in-interface=gre-tunnel-b \
  action=accept comment="Allow GRE forward" place-before=0
/ip/firewall/filter add chain=forward out-interface=gre-tunnel-b \
  action=accept comment="Allow GRE forward out" place-before=0

Офис B (MikroTik)

[admin@MikroTik] >
/interface/gre add name=gre-tunnel-a \
  remote-address=203.0.113.1 \
  local-address=198.51.100.1 \
  keepalive=10s,10

/ip/address add address=10.255.255.2/30 interface=gre-tunnel-a

/ip/route add dst-address=192.168.10.0/24 gateway=gre-tunnel-a

/ip/firewall/filter add chain=input protocol=gre \
  src-address=203.0.113.1 action=accept \
  comment="Allow GRE from Office A" place-before=0

/ip/firewall/filter add chain=forward in-interface=gre-tunnel-a \
  action=accept comment="Allow GRE forward" place-before=0
/ip/firewall/filter add chain=forward out-interface=gre-tunnel-a \
  action=accept comment="Allow GRE forward out" place-before=0

GRE между MikroTik и Cisco

На стороне Cisco (IOS):

code
interface Tunnel0
 ip address 10.255.255.2 255.255.255.252
 tunnel source 198.51.100.1
 tunnel destination 203.0.113.1
 tunnel mode gre ip
 keepalive 10 10

ip route 192.168.10.0 255.255.255.0 Tunnel0

MikroTik-конфигурация остаётся без изменений — GRE стандартизирован.

GRE между MikroTik и Linux

На стороне Linux:

bash
ip tunnel add gre-mkt mode gre remote 203.0.113.1 local 198.51.100.1 ttl 255
ip addr add 10.255.255.2/30 dev gre-mkt
ip link set gre-mkt up
ip route add 192.168.10.0/24 dev gre-mkt

GRE + IPsec

GRE сам по себе не шифрует трафик. Для защиты данных добавьте IPsec:

[admin@MikroTik] >
# IPsec Profile
/ip/ipsec/profile add name=gre-ipsec-profile \
  hash-algorithm=sha256 enc-algorithm=aes-256 \
  dh-group=modp2048 lifetime=1d

# IPsec Proposal
/ip/ipsec/proposal add name=gre-ipsec-proposal \
  auth-algorithms=sha256 enc-algorithms=aes-256-cbc \
  lifetime=8h pfs-group=modp2048

# IPsec Peer
/ip/ipsec/peer add name=peer-office-b \
  address=198.51.100.1/32 profile=gre-ipsec-profile \
  exchange-mode=ike2

# IPsec Identity (Pre-Shared Key)
/ip/ipsec/identity add peer=peer-office-b \
  auth-method=pre-shared-key \
  secret="VeryStr0ngPSK!2024"

# IPsec Policy — шифровать GRE-трафик
/ip/ipsec/policy add peer=peer-office-b \
  src-address=203.0.113.1/32 dst-address=198.51.100.1/32 \
  protocol=gre action=encrypt level=require \
  ipsec-protocols=esp proposal=gre-ipsec-proposal

После настройки IPsec весь GRE-трафик будет зашифрован. Проверка:

[admin@MikroTik] >
/ip/ipsec/installed-sa print
/ip/ipsec/policy print detail

Настройка EoIP

Схема

code
Офис A                                    Офис B
LAN: 192.168.100.0/24 (общий L2)          LAN: 192.168.100.0/24 (общий L2)
WAN: 203.0.113.1                          WAN: 198.51.100.1
Bridge: bridge1                           Bridge: bridge1
  ├── ether2-ether5                        ├── ether2-ether5
  └── eoip-tunnel (tunnel-id=100)          └── eoip-tunnel (tunnel-id=100)

Офис A

[admin@MikroTik] >
# Создаём EoIP-туннель
/interface/eoip add name=eoip-tunnel-b \
  remote-address=198.51.100.1 \
  local-address=203.0.113.1 \
  tunnel-id=100 \
  keepalive=10s,10

# Добавляем EoIP в bridge (вместе с локальными портами)
/interface/bridge add name=bridge1 protocol-mode=none
/interface/bridge/port add bridge=bridge1 interface=ether2
/interface/bridge/port add bridge=bridge1 interface=ether3
/interface/bridge/port add bridge=bridge1 interface=ether4
/interface/bridge/port add bridge=bridge1 interface=eoip-tunnel-b

# IP-адрес на bridge
/ip/address add address=192.168.100.1/24 interface=bridge1

# Firewall: разрешить GRE (EoIP использует IP protocol 47)
/ip/firewall/filter add chain=input protocol=gre \
  src-address=198.51.100.1 action=accept \
  comment="Allow EoIP from Office B" place-before=0

Офис B

[admin@MikroTik] >
/interface/eoip add name=eoip-tunnel-a \
  remote-address=203.0.113.1 \
  local-address=198.51.100.1 \
  tunnel-id=100 \
  keepalive=10s,10

/interface/bridge add name=bridge1 protocol-mode=none
/interface/bridge/port add bridge=bridge1 interface=ether2
/interface/bridge/port add bridge=bridge1 interface=ether3
/interface/bridge/port add bridge=bridge1 interface=ether4
/interface/bridge/port add bridge=bridge1 interface=eoip-tunnel-a

/ip/address add address=192.168.100.2/24 interface=bridge1

/ip/firewall/filter add chain=input protocol=gre \
  src-address=203.0.113.1 action=accept \
  comment="Allow EoIP from Office A" place-before=0

Важно: tunnel-id должен совпадать на обоих концах. Это уникальный идентификатор туннеля (0–65535), позволяющий создать несколько EoIP-туннелей между одной и той же парой роутеров.

EoIP + IPsec

Аналогично GRE, EoIP не шифрует трафик. Добавьте IPsec:

[admin@MikroTik] >
# IPsec Profile
/ip/ipsec/profile add name=eoip-ipsec-profile \
  hash-algorithm=sha256 enc-algorithm=aes-256 \
  dh-group=modp2048

# IPsec Proposal
/ip/ipsec/proposal add name=eoip-ipsec-proposal \
  auth-algorithms=sha256 enc-algorithms=aes-256-cbc \
  pfs-group=modp2048

# IPsec Peer
/ip/ipsec/peer add name=peer-eoip \
  address=198.51.100.1/32 profile=eoip-ipsec-profile \
  exchange-mode=ike2

# IPsec Identity
/ip/ipsec/identity add peer=peer-eoip \
  auth-method=pre-shared-key secret="EoIPSecretKey!2024"

# IPsec Policy
/ip/ipsec/policy add peer=peer-eoip \
  src-address=203.0.113.1/32 dst-address=198.51.100.1/32 \
  protocol=gre action=encrypt level=require \
  ipsec-protocols=esp proposal=eoip-ipsec-proposal

EoIP с расширением VLAN

EoIP можно использовать для расширения конкретного VLAN между площадками:

[admin@MikroTik] >
# На обеих сторонах: EoIP для VLAN 50
/interface/eoip add name=eoip-vlan50 \
  remote-address=198.51.100.1 \
  tunnel-id=50

# Создаём VLAN на EoIP (или добавляем EoIP в VLAN-bridge)
/interface/bridge/port add bridge=bridge-vlan50 interface=eoip-vlan50

# Или тегированный трафик:
/interface/vlan add name=vlan50-eoip vlan-id=50 interface=eoip-vlan50

Проверка

Проверка GRE

[admin@MikroTik] >
# Статус GRE-интерфейса
/interface/gre print detail

# Должен быть running (флаг R)
/interface print where name~"gre"

# Пинг через GRE
/ping 10.255.255.2 count=5

# Трафик через GRE
/interface/monitor-traffic gre-tunnel-b once

# Маршруты через GRE
/ip/route print where gateway~"gre"

Проверка EoIP

[admin@MikroTik] >
# Статус EoIP
/interface/eoip print detail

# Должен быть running
/interface print where name~"eoip"

# MAC-таблица bridge (удалённые MAC через EoIP)
/interface/bridge/host print where bridge=bridge1

# Трафик через EoIP
/interface/monitor-traffic eoip-tunnel-b once

Проверка IPsec (для обоих)

[admin@MikroTik] >
# Установленные SA (Security Associations)
/ip/ipsec/installed-sa print

# Статус политик
/ip/ipsec/policy print stats

# Счётчики шифрования
/ip/ipsec/statistics print

WireGuard как замена GRE и EoIP

В современных сетях WireGuard часто является лучшей альтернативой:

КритерийGRE/EoIPWireGuard
ШифрованиеНет (нужен IPsec)Встроенное (ChaCha20)
Настройка шифрованияСложная (IPsec: profile, proposal, peer, identity, policy)Простая (ключи + peer)
ПроизводительностьGRE: высокая, EoIP: средняяВысокая (hardware offload на некоторых моделях)
NAT traversalНет (GRE = IP protocol 47, не проходит NAT)Да (UDP)
L2 supportEoIP: да, GRE: нетНет (нужен VXLAN для L2)
СтандартизацияGRE: RFC, EoIP: проприетарныйСтандарт (Linux kernel)

Рекомендация: для новых проектов используйте WireGuard. GRE оставьте для совместимости с Cisco/Juniper. EoIP — только если нужен L2 bridge исключительно между MikroTik и WireGuard + VXLAN не подходит.

[admin@MikroTik] >
# Замена GRE + IPsec на WireGuard (гораздо проще):
/interface/wireguard add name=wg0 listen-port=13231
/ip/address add address=10.255.255.1/30 interface=wg0
/interface/wireguard/peers add interface=wg0 \
  public-key="<PEER_KEY>" \
  allowed-address=10.255.255.2/32,192.168.20.0/24 \
  endpoint-address=198.51.100.1 endpoint-port=13231
/ip/route add dst-address=192.168.20.0/24 gateway=wg0

Одна команда peers вместо пяти команд IPsec.

Типичные ошибки

1. GRE не проходит через NAT

Причина: GRE использует IP protocol 47 (не TCP и не UDP). Обычный NAT не может транслировать GRE-пакеты, так как у них нет номеров портов.

Симптомы: интерфейс создан, но не переходит в состояние running.

Решение:

  • Используйте публичные IP на обоих концах (без NAT)
  • Или переключитесь на WireGuard (UDP, проходит NAT)
  • Или настройте GRE с IPsec в transport mode (IPsec NAT-T использует UDP 4500)

2. Разные tunnel-id на EoIP

Причина: на одной стороне tunnel-id=100, на другой tunnel-id=200. Туннель не устанавливается.

Решение:

[admin@MikroTik] >
# Проверьте tunnel-id на обеих сторонах
/interface/eoip print
# Исправьте:
/interface/eoip set eoip-tunnel-b tunnel-id=100

3. Broadcast storm через EoIP bridge

Причина: EoIP в bridge создаёт единый L2-домен. Весь broadcast-трафик проходит через WAN. При большом количестве устройств (> 50) broadcast может перегрузить канал.

Решение:

[admin@MikroTik] >
# Ограничьте broadcast
/interface/bridge set bridge1 \
  multicast-flood=no

# Или используйте RSTP для предотвращения петель
/interface/bridge set bridge1 protocol-mode=rstp

Для больших сетей рассмотрите L3-маршрутизацию вместо L2 bridge.

4. MTU fragmentation

Причина: GRE добавляет 24 байта overhead, EoIP — 42 байта. При стандартном MTU 1500 на WAN полезная нагрузка уменьшается.

Решение:

[admin@MikroTik] >
# Для GRE: MTU = 1500 - 24 = 1476
/interface/gre set gre-tunnel-b mtu=1476

# Для EoIP: MTU = 1500 - 42 = 1458
/interface/eoip set eoip-tunnel-b mtu=1458

# MSS clamping для TCP
/ip/firewall/mangle add chain=forward \
  out-interface=gre-tunnel-b protocol=tcp tcp-flags=syn \
  action=change-mss new-mss=clamp-to-pmtu passthrough=yes

5. Firewall блокирует GRE/EoIP

Причина: правило drop в цепочке input блокирует IP protocol 47 (GRE).

Решение:

[admin@MikroTik] >
# Разрешите GRE до правил drop
/ip/firewall/filter add chain=input protocol=gre \
  src-address=<remote_IP> action=accept \
  comment="Allow GRE/EoIP" place-before=0

Обратите внимание: нужно разрешить именно protocol=gre (IP protocol 47), а не TCP/UDP порт.

6. Keepalive не работает — туннель "зависает"

Причина: keepalive не настроен, и при обрыве связи интерфейс остаётся в состоянии running, хотя связности нет.

Решение:

[admin@MikroTik] >
# Настройте keepalive (интервал 10 секунд, 10 попыток)
/interface/gre set gre-tunnel-b keepalive=10s,10
/interface/eoip set eoip-tunnel-b keepalive=10s,10

С keepalive интерфейс перейдёт в not running через 100 секунд (10 * 10) после потери связности. Это важно для корректной работы маршрутизации (маршрут через неработающий интерфейс будет деактивирован).

Итоги

GRE и EoIP — проверенные временем туннельные протоколы на MikroTik, каждый для своей задачи. GRE — стандартный L3-туннель для мультивендорных сетей. EoIP — проприетарный L2-туннель для bridge между MikroTik.

Оба протокола не шифруют трафик — для защиты нужен IPsec, что значительно усложняет конфигурацию. В современных проектах WireGuard (для L3) или WireGuard + VXLAN (для L2) часто являются лучшим выбором: встроенное шифрование, проход через NAT, простая настройка. GRE стоит использовать при интеграции с Cisco/Juniper, EoIP — только в чисто MikroTik-средах, где нужен быстрый L2 bridge без сложных overlay-решений.

[admin@MikroTik] >
Офис A                                    Офис B
LAN: 192.168.10.0/24                      LAN: 192.168.20.0/24
WAN: 203.0.113.1                          WAN: 198.51.100.1
GRE: 10.255.255.1/30                      GRE: 10.255.255.2/30
# Создаём GRE-интерфейс
/interface/gre add name=gre-tunnel-b \
  remote-address=198.51.100.1 \
  local-address=203.0.113.1 \
  keepalive=10s,10

# Назначаем IP-адрес на GRE-интерфейс
/ip/address add address=10.255.255.1/30 interface=gre-tunnel-b

# Маршрут в удалённую LAN через GRE
/ip/route add dst-address=192.168.20.0/24 gateway=gre-tunnel-b

# Firewall: разрешить GRE-протокол (IP protocol 47)
/ip/firewall/filter add chain=input protocol=gre \
  src-address=198.51.100.1 action=accept \
  comment="Allow GRE from Office B" place-before=0

# Firewall: forward через GRE
/ip/firewall/filter add chain=forward in-interface=gre-tunnel-b \
  action=accept comment="Allow GRE forward" place-before=0
/ip/firewall/filter add chain=forward out-interface=gre-tunnel-b \
  action=accept comment="Allow GRE forward out" place-before=0
/interface/gre add name=gre-tunnel-a \
  remote-address=203.0.113.1 \
  local-address=198.51.100.1 \
  keepalive=10s,10

/ip/address add address=10.255.255.2/30 interface=gre-tunnel-a

/ip/route add dst-address=192.168.10.0/24 gateway=gre-tunnel-a

/ip/firewall/filter add chain=input protocol=gre \
  src-address=203.0.113.1 action=accept \
  comment="Allow GRE from Office A" place-before=0

/ip/firewall/filter add chain=forward in-interface=gre-tunnel-a \
  action=accept comment="Allow GRE forward" place-before=0
/ip/firewall/filter add chain=forward out-interface=gre-tunnel-a \
  action=accept comment="Allow GRE forward out" place-before=0
interface Tunnel0
 ip address 10.255.255.2 255.255.255.252
 tunnel source 198.51.100.1
 tunnel destination 203.0.113.1
 tunnel mode gre ip
 keepalive 10 10

ip route 192.168.10.0 255.255.255.0 Tunnel0
ip tunnel add gre-mkt mode gre remote 203.0.113.1 local 198.51.100.1 ttl 255
ip addr add 10.255.255.2/30 dev gre-mkt
ip link set gre-mkt up
ip route add 192.168.10.0/24 dev gre-mkt
# IPsec Profile
/ip/ipsec/profile add name=gre-ipsec-profile \
  hash-algorithm=sha256 enc-algorithm=aes-256 \
  dh-group=modp2048 lifetime=1d

# IPsec Proposal
/ip/ipsec/proposal add name=gre-ipsec-proposal \
  auth-algorithms=sha256 enc-algorithms=aes-256-cbc \
  lifetime=8h pfs-group=modp2048

# IPsec Peer
/ip/ipsec/peer add name=peer-office-b \
  address=198.51.100.1/32 profile=gre-ipsec-profile \
  exchange-mode=ike2

# IPsec Identity (Pre-Shared Key)
/ip/ipsec/identity add peer=peer-office-b \
  auth-method=pre-shared-key \
  secret="VeryStr0ngPSK!2024"

# IPsec Policy — шифровать GRE-трафик
/ip/ipsec/policy add peer=peer-office-b \
  src-address=203.0.113.1/32 dst-address=198.51.100.1/32 \
  protocol=gre action=encrypt level=require \
  ipsec-protocols=esp proposal=gre-ipsec-proposal
/ip/ipsec/installed-sa print
/ip/ipsec/policy print detail
Офис A                                    Офис B
LAN: 192.168.100.0/24 (общий L2)          LAN: 192.168.100.0/24 (общий L2)
WAN: 203.0.113.1                          WAN: 198.51.100.1
Bridge: bridge1                           Bridge: bridge1
  ├── ether2-ether5                        ├── ether2-ether5
  └── eoip-tunnel (tunnel-id=100)          └── eoip-tunnel (tunnel-id=100)
# Создаём EoIP-туннель
/interface/eoip add name=eoip-tunnel-b \
  remote-address=198.51.100.1 \
  local-address=203.0.113.1 \
  tunnel-id=100 \
  keepalive=10s,10

# Добавляем EoIP в bridge (вместе с локальными портами)
/interface/bridge add name=bridge1 protocol-mode=none
/interface/bridge/port add bridge=bridge1 interface=ether2
/interface/bridge/port add bridge=bridge1 interface=ether3
/interface/bridge/port add bridge=bridge1 interface=ether4
/interface/bridge/port add bridge=bridge1 interface=eoip-tunnel-b

# IP-адрес на bridge
/ip/address add address=192.168.100.1/24 interface=bridge1

# Firewall: разрешить GRE (EoIP использует IP protocol 47)
/ip/firewall/filter add chain=input protocol=gre \
  src-address=198.51.100.1 action=accept \
  comment="Allow EoIP from Office B" place-before=0
/interface/eoip add name=eoip-tunnel-a \
  remote-address=203.0.113.1 \
  local-address=198.51.100.1 \
  tunnel-id=100 \
  keepalive=10s,10

/interface/bridge add name=bridge1 protocol-mode=none
/interface/bridge/port add bridge=bridge1 interface=ether2
/interface/bridge/port add bridge=bridge1 interface=ether3
/interface/bridge/port add bridge=bridge1 interface=ether4
/interface/bridge/port add bridge=bridge1 interface=eoip-tunnel-a

/ip/address add address=192.168.100.2/24 interface=bridge1

/ip/firewall/filter add chain=input protocol=gre \
  src-address=203.0.113.1 action=accept \
  comment="Allow EoIP from Office A" place-before=0
# IPsec Profile
/ip/ipsec/profile add name=eoip-ipsec-profile \
  hash-algorithm=sha256 enc-algorithm=aes-256 \
  dh-group=modp2048

# IPsec Proposal
/ip/ipsec/proposal add name=eoip-ipsec-proposal \
  auth-algorithms=sha256 enc-algorithms=aes-256-cbc \
  pfs-group=modp2048

# IPsec Peer
/ip/ipsec/peer add name=peer-eoip \
  address=198.51.100.1/32 profile=eoip-ipsec-profile \
  exchange-mode=ike2

# IPsec Identity
/ip/ipsec/identity add peer=peer-eoip \
  auth-method=pre-shared-key secret="EoIPSecretKey!2024"

# IPsec Policy
/ip/ipsec/policy add peer=peer-eoip \
  src-address=203.0.113.1/32 dst-address=198.51.100.1/32 \
  protocol=gre action=encrypt level=require \
  ipsec-protocols=esp proposal=eoip-ipsec-proposal
# На обеих сторонах: EoIP для VLAN 50
/interface/eoip add name=eoip-vlan50 \
  remote-address=198.51.100.1 \
  tunnel-id=50

# Создаём VLAN на EoIP (или добавляем EoIP в VLAN-bridge)
/interface/bridge/port add bridge=bridge-vlan50 interface=eoip-vlan50

# Или тегированный трафик:
/interface/vlan add name=vlan50-eoip vlan-id=50 interface=eoip-vlan50
# Статус GRE-интерфейса
/interface/gre print detail

# Должен быть running (флаг R)
/interface print where name~"gre"

# Пинг через GRE
/ping 10.255.255.2 count=5

# Трафик через GRE
/interface/monitor-traffic gre-tunnel-b once

# Маршруты через GRE
/ip/route print where gateway~"gre"
# Статус EoIP
/interface/eoip print detail

# Должен быть running
/interface print where name~"eoip"

# MAC-таблица bridge (удалённые MAC через EoIP)
/interface/bridge/host print where bridge=bridge1

# Трафик через EoIP
/interface/monitor-traffic eoip-tunnel-b once
# Установленные SA (Security Associations)
/ip/ipsec/installed-sa print

# Статус политик
/ip/ipsec/policy print stats

# Счётчики шифрования
/ip/ipsec/statistics print
# Замена GRE + IPsec на WireGuard (гораздо проще):
/interface/wireguard add name=wg0 listen-port=13231
/ip/address add address=10.255.255.1/30 interface=wg0
/interface/wireguard/peers add interface=wg0 \
  public-key="<PEER_KEY>" \
  allowed-address=10.255.255.2/32,192.168.20.0/24 \
  endpoint-address=198.51.100.1 endpoint-port=13231
/ip/route add dst-address=192.168.20.0/24 gateway=wg0
# Проверьте tunnel-id на обеих сторонах
/interface/eoip print
# Исправьте:
/interface/eoip set eoip-tunnel-b tunnel-id=100
# Ограничьте broadcast
/interface/bridge set bridge1 \
  multicast-flood=no

# Или используйте RSTP для предотвращения петель
/interface/bridge set bridge1 protocol-mode=rstp
# Для GRE: MTU = 1500 - 24 = 1476
/interface/gre set gre-tunnel-b mtu=1476

# Для EoIP: MTU = 1500 - 42 = 1458
/interface/eoip set eoip-tunnel-b mtu=1458

# MSS clamping для TCP
/ip/firewall/mangle add chain=forward \
  out-interface=gre-tunnel-b protocol=tcp tcp-flags=syn \
  action=change-mss new-mss=clamp-to-pmtu passthrough=yes
# Разрешите GRE до правил drop
/ip/firewall/filter add chain=input protocol=gre \
  src-address=<remote_IP> action=accept \
  comment="Allow GRE/EoIP" place-before=0
# Настройте keepalive (интервал 10 секунд, 10 попыток)
/interface/gre set gre-tunnel-b keepalive=10s,10
/interface/eoip set eoip-tunnel-b keepalive=10s,10
VPN / EoIP и GRE туннели — сравнение и практика