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 | Адрес в туннеле |
|---|---|---|
| MikroTik | 1.2.3.4 | 10.0.0.1/30 |
| Linux | 5.6.7.8 | 10.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 MikroTikkeepalive— проверка доступности каждые 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 MikroTikaddress/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.