GRE туннель — MikroTik и Linux

GRE (Generic Routing Encapsulation) — протокол туннелирования, который упаковывает один сетевой пакет внутрь другого. Позволяет объединить два узла в одну сеть через интернет. Сам по себе не шифрует трафик — используется для маршрутизации.


Схема

MikroTik                          Linux сервер
公 1.2.3.4  ===[ GRE туннель ]===  公 5.6.7.8
🔒 10.0.0.1                        🔒 10.0.0.2
УзелПубличный IPАдрес в туннеле
MikroTik1.2.3.410.0.0.1/30
Linux5.6.7.810.0.0.2/30

Настройка MikroTik

Шаг 1 — Создать GRE интерфейс

В терминале Winbox или SSH:

/interface gre add   name=gre-linux   remote-address=5.6.7.8   local-address=1.2.3.4   keepalive=10s,3
  • remote-address — публичный IP Linux сервера
  • local-address — публичный IP MikroTik
  • keepalive — проверка доступности каждые 10 секунд, 3 попытки

Шаг 2 — Назначить IP внутри туннеля

/ip address add   address=10.0.0.1/30   interface=gre-linux

Шаг 3 — Добавить маршрут (если нужно)

Если нужно направить трафик к подсети за Linux сервером через туннель:

/ip route add   dst-address=192.168.10.0/24   gateway=10.0.0.2

Настройка Linux

Всё настраивается в одном файле /etc/network/interfaces. Тип интерфейса tunnel — встроенная поддержка Debian/Ubuntu, отдельные команды не нужны.

auto gre-mikrotik
iface gre-mikrotik inet tunnel
  address 10.0.0.2
  netmask 255.255.255.252
  mode gre
  local 5.6.7.8
  endpoint 1.2.3.4
  ttl 255
  post-up ip route add 192.168.8.0/24 via 10.0.0.1
  • local — публичный IP Linux сервера
  • endpoint — публичный IP MikroTik
  • address / netmask — IP адрес Linux внутри туннеля
  • post-up — маршруты которые добавятся после поднятия туннеля

Если нужно несколько туннелей — добавляй блоки по аналогии:

auto gre-mikrotik2
iface gre-mikrotik2 inet tunnel
  address 10.0.1.2
  netmask 255.255.255.252
  mode gre
  local 5.6.7.8
  endpoint 9.10.11.12
  ttl 255
  post-up ip route add 192.168.9.0/24 via 10.0.1.1

Применить без перезагрузки:

ifup gre-mikrotik

Проверка

С Linux:

# Пинг до MikroTik через туннель
ping 10.0.0.1

# Посмотреть интерфейс
ip addr show gre-mikrotik
ip route show dev gre-mikrotik

С MikroTik:

/ping 10.0.0.2
/interface gre print
/interface gre monitor gre-linux

Частые проблемы

Туннель поднят но пинг не идёт

Проверь firewall на Linux — протокол GRE (47) должен быть разрешён:

iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT

MikroTik за NAT

GRE не проходит через NAT. Оба конца должны иметь публичный IP. Если один за NAT — используй EoIP (MikroTik ↔ MikroTik) или WireGuard.

Туннель падает и не поднимается

Включи keepalive на MikroTik и проверь что Linux не блокирует ICMP.

Комментарии

Комментариев пока нет.